[ot-test-ctx]
    ot-tracer ot-test-tracer
        log localhost:514 local7 debug
        config ctx/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_1
        scopes client_session_start_2
        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_1
        span "HAProxy session" root
            inject "ot_ctx_1" use-headers use-vars
            baggage "haproxy_id" var(sess.ot.uuid)
        event on-client-session-start

    ot-scope client_session_start_2
        extract "ot_ctx_1" use-vars
        span "Client session" child-of "ot_ctx_1"
            inject "ot_ctx_2" use-headers use-vars
        event on-client-session-start

    ot-scope frontend_tcp_request
        extract "ot_ctx_2" use-vars
        span "Frontend TCP request" child-of "ot_ctx_2"
            inject "ot_ctx_3" use-headers use-vars
        event on-frontend-tcp-request

    ot-scope http_wait_request
        extract "ot_ctx_3" use-vars
        span "HTTP wait request" follows-from "ot_ctx_3"
            inject "ot_ctx_4" use-headers use-vars
        finish "Frontend TCP request" "ot_ctx_3"
        event on-http-wait-request

    ot-scope http_body_request
        extract "ot_ctx_4" use-vars
        span "HTTP body request" follows-from "ot_ctx_4"
            inject "ot_ctx_5" use-headers use-vars
        finish "HTTP wait request" "ot_ctx_4"
        event on-http-body-request

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

    ot-scope switching_rules_request
        extract "ot_ctx_6" use-vars
        span "Switching rules request" follows-from "ot_ctx_6"
            inject "ot_ctx_7" use-headers use-vars
        finish "Frontend HTTP request" "ot_ctx_6"
        event on-switching-rules-request

    ot-scope backend_tcp_request
        extract "ot_ctx_7" use-vars
        span "Backend TCP request" follows-from "ot_ctx_7"
            inject "ot_ctx_8" use-headers use-vars
        finish "Switching rules request" "ot_ctx_7"
        event on-backend-tcp-request

    ot-scope backend_http_request
        extract "ot_ctx_8" use-vars
        span "Backend HTTP request" follows-from "ot_ctx_8"
            inject "ot_ctx_9" use-headers use-vars
        finish "Backend TCP request" "ot_ctx_8"
        event on-backend-http-request

    ot-scope process_server_rules_request
        extract "ot_ctx_9" use-vars
        span "Process server rules request" follows-from "ot_ctx_9"
            inject "ot_ctx_10" use-headers use-vars
        finish "Backend HTTP request" "ot_ctx_9"
        event on-process-server-rules-request

    ot-scope http_process_request
        extract "ot_ctx_10" use-vars
        span "HTTP process request" follows-from "ot_ctx_10"
            inject "ot_ctx_11" use-headers use-vars
        finish "Process server rules request" "ot_ctx_10"
        event on-http-process-request

    ot-scope tcp_rdp_cookie_request
        extract "ot_ctx_11" use-vars
        span "TCP RDP cookie request" follows-from "ot_ctx_11"
            inject "ot_ctx_12" use-headers use-vars
        finish "HTTP process request" "ot_ctx_11"
        event on-tcp-rdp-cookie-request

    ot-scope process_sticking_rules_request
        extract "ot_ctx_12" use-vars
        span "Process sticking rules request" follows-from "ot_ctx_12"
            inject "ot_ctx_13" use-headers use-vars
        finish "TCP RDP cookie request" "ot_ctx_12"
        event on-process-sticking-rules-request

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

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

    ot-scope server_session_start
        span "Server session" child-of "ot_ctx_1"
            inject "ot_ctx_14" use-vars
        extract "ot_ctx_13" use-vars
        finish "Process sticking rules request" "ot_ctx_13"
        event on-server-session-start

    ot-scope tcp_response
        extract "ot_ctx_14" use-vars
        span "TCP response" child-of "ot_ctx_14"
            inject "ot_ctx_15" use-vars
        event on-tcp-response

    ot-scope http_wait_response
        extract "ot_ctx_15" use-vars
        span "HTTP wait response" follows-from "ot_ctx_15"
            inject "ot_ctx_16" use-headers use-vars
        finish "TCP response" "ot_ctx_15"
        event on-http-wait-response

    ot-scope process_store_rules_response
        extract "ot_ctx_16" use-vars
        span "Process store rules response" follows-from "ot_ctx_16"
            inject "ot_ctx_17" use-headers use-vars
        finish "HTTP wait response" "ot_ctx_16"
        event on-process-store-rules-response

    ot-scope http_response
        extract "ot_ctx_17" use-vars
        span "HTTP response" follows-from "ot_ctx_17"
            tag "http.status_code" status
        finish "Process store rules response" "ot_ctx_17"
        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
