Comparison test configuration (cmp/)
====================================

The 'cmp' test is a simplified standalone configuration made for comparison with
other tracing implementations.  It uses a reduced set of events and a compact
span hierarchy without context propagation, groups or metrics.  This
configuration is closer to a typical production deployment.

All response-side scopes (http_response, http_response-error, server_session_end
and client_session_end) share the on-http-response event, which means they fire
in a single batch at response time.


Files
-----

  cmp/otel.cfg    OTel filter configuration (scopes)
  cmp/haproxy.cfg HAProxy frontend/backend configuration
  cmp/otel.yml    Exporter, processor, reader and provider definitions
  run-cmp.sh      Convenience script to launch HAProxy with this config


Events
------

  T = Trace (span)

  This configuration produces traces only -- no metrics or log-records.

  Request analyzer events:

    Event                      Scope                    T
    --------------------------------------------------------
    on-client-session-start    client_session_start     x
    on-frontend-tcp-request    frontend_tcp_request     x
    on-frontend-http-request   frontend_http_request    x
    on-backend-tcp-request     backend_tcp_request      x
    on-backend-http-request    backend_http_request     x
    on-server-unavailable      server_unavailable       x

  Response analyzer events:

    Event                      Scope                    T
    --------------------------------------------------------
    on-server-session-start    server_session_start     x
    on-tcp-response            tcp_response             x
    on-http-response           http_response            x
    on-http-response           http_response-error      x  (conditional)
    on-http-response           server_session_end       -  (finish only)
    on-http-response           client_session_end       -  (finish only)

  The http_response-error scope fires conditionally when the ACL
  acl-http-status-ok (status 100:399) does not match, setting an error status
  on the "HTTP response" span.

  The server_session_end and client_session_end scopes are bound to the
  on-http-response event and only perform finish operations.


Span hierarchy
--------------

    "HAProxy session" (root)
     +-- "Client session"
          +-- "Frontend TCP request"
               +-- "Frontend HTTP request"
                    +-- "Backend TCP request"
                         +-- "Backend HTTP request"

    "HAProxy session" (root)
     +-- "Server session"
          +-- "TCP response"
               +-- "HTTP response"


Running the test
----------------

From the test/ directory:

  % ./run-cmp.sh [/path/to/haproxy] [pidfile]

If no arguments are given, the script looks for the haproxy binary three
directories up from the current working directory.  The backend origin server
must be running on 127.0.0.1:8000.
