[ot-test-sa]
    ot-tracer ot-test-tracer
        log localhost:514 local7 debug
        config sa/cfg-jaeger.yml
        plugin libjaeger_opentracing_plugin-0.5.0.so
        option dontlog-normal
        option hard-errors
        no option disabled
        rate-limit 100.0

        groups http_response_group
        groups http_after_response_group

        scopes client_session_start
        scopes frontend_tcp_request
        scopes http_wait_request
        scopes http_body_request
        scopes frontend_http_request
        scopes switching_rules_request
        scopes backend_tcp_request
        scopes backend_http_request
        scopes process_server_rules_request
        scopes http_process_request
        scopes tcp_rdp_cookie_request
        scopes process_sticking_rules_request
        scopes client_session_end
        scopes server_unavailable

        scopes server_session_start
        scopes tcp_response
        scopes http_wait_response
        scopes process_store_rules_response
        scopes http_response http_response-error
        scopes server_session_end

    ot-group http_response_group
        scopes http_response_1
        scopes http_response_2

    ot-scope http_response_1
        span "HTTP response"
            log "hdr.content" res.hdr("content-type") str("; length: ") res.hdr("content-length") str(" bytes")

    ot-scope http_response_2
        span "HTTP response"
            log "hdr.date" res.hdr("date") str(" / ") res.hdr("last-modified")

    ot-group http_after_response_group
        scopes http_after_response

    ot-scope http_after_response
        span "HAProxy response" child-of "HAProxy session"
            tag "error" bool(true)
            tag "http.status_code" status

    ot-scope client_session_start
        span "HAProxy session" root
            baggage "haproxy_id" var(sess.ot.uuid)
        span "Client session" child-of "HAProxy session"
        acl acl-test-src-ip src 127.0.0.1
        event on-client-session-start if acl-test-src-ip

    ot-scope frontend_tcp_request
        span "Frontend TCP request" child-of "Client session"
        event on-frontend-tcp-request

    ot-scope http_wait_request
        span "HTTP wait request" follows-from "Frontend TCP request"
        finish "Frontend TCP request"
        event on-http-wait-request

    ot-scope http_body_request
        span "HTTP body request" follows-from "HTTP wait request"
        finish "HTTP wait request"
        event on-http-body-request

    ot-scope frontend_http_request
        span "Frontend HTTP request" follows-from "HTTP body request"
            tag "http.method" method
            tag "http.url" url
            tag "http.version" str("HTTP/") req.ver
        finish "HTTP body request"
        event on-frontend-http-request

    ot-scope switching_rules_request
        span "Switching rules request" follows-from "Frontend HTTP request"
        finish "Frontend HTTP request"
        event on-switching-rules-request

    ot-scope backend_tcp_request
        span "Backend TCP request" follows-from "Switching rules request"
        finish "Switching rules request"
        event on-backend-tcp-request

    ot-scope backend_http_request
        span "Backend HTTP request" follows-from "Backend TCP request"
        finish "Backend TCP request"
        event on-backend-http-request

    ot-scope process_server_rules_request
        span "Process server rules request" follows-from "Backend HTTP request"
        finish "Backend HTTP request"
        event on-process-server-rules-request

    ot-scope http_process_request
        span "HTTP process request" follows-from "Process server rules request"
        finish "Process server rules request"
        event on-http-process-request

    ot-scope tcp_rdp_cookie_request
        span "TCP RDP cookie request" follows-from "HTTP process request"
        finish "HTTP process request"
        event on-tcp-rdp-cookie-request

    ot-scope process_sticking_rules_request
        span "Process sticking rules request" follows-from "TCP RDP cookie request"
        finish "TCP RDP cookie request"
        event on-process-sticking-rules-request

    ot-scope client_session_end
        finish "Client session"
        event on-client-session-end

    ot-scope server_unavailable
        finish *
        event on-server-unavailable

    ot-scope server_session_start
        span "Server session" child-of "HAProxy session"
        finish "Process sticking rules request"
        event on-server-session-start

    ot-scope tcp_response
        span "TCP response" child-of "Server session"
        event on-tcp-response

    ot-scope http_wait_response
        span "HTTP wait response" follows-from "TCP response"
        finish "TCP response"
        event on-http-wait-response

    ot-scope process_store_rules_response
        span "Process store rules response" follows-from "HTTP wait response"
        finish "HTTP wait response"
        event on-process-store-rules-response

    ot-scope http_response
        span "HTTP response" follows-from "Process store rules response"
            tag "http.status_code" status
        finish "Process store rules response"
        event on-http-response

    ot-scope http_response-error
        span "HTTP response"
            tag "error" bool(true)
        event on-http-response if !acl-http-status-ok

    ot-scope server_session_end
        finish *
        event on-server-session-end
