opentelemetry-cpp icon indicating copy to clipboard operation
opentelemetry-cpp copied to clipboard

W3C TraceContext compliance

Open reyang opened this issue 5 years ago • 8 comments
trafficstars

Implement W3C TraceContext and get 100% pass rate from the validation service https://github.com/w3c/trace-context/tree/master/test.

CI should be implemented which verifies the TraceContext compliance.

reyang avatar May 08 '20 05:05 reyang

FYI - how OpenTelemetry Python did this https://github.com/open-telemetry/opentelemetry-python/pull/228

reyang avatar May 26 '20 15:05 reyang

After #563 ( tracestate integration ), 9 tests are still failing. keeping it open till it's fixed.

STRICT_LEVEL: 2
harness listening on http://127.0.0.1:7777
test_multiple_requests_with_illegal_traceparent (__main__.AdvancedTest)
harness sends an invalid traceparent and asks vendor service to callback multiple times ... ok
test_multiple_requests_with_valid_traceparent (__main__.AdvancedTest)
harness sends a valid traceparent and asks vendor service to callback multiple times ... ok
test_multiple_requests_without_traceparent (__main__.AdvancedTest)
harness asks vendor service to callback multiple times ... ok
test_both_traceparent_and_tracestate_missing (__main__.TraceContextTest)
harness sends a request without traceparent or tracestate ... ok
test_traceparent_duplicated (__main__.TraceContextTest)
harness sends a request with two traceparent headers ... FAIL
test_traceparent_header_name (__main__.TraceContextTest)
harness sends an invalid traceparent using wrong names ... ok
test_traceparent_header_name_valid_casing (__main__.TraceContextTest)
harness sends a valid traceparent using different combination of casing ... ok
test_traceparent_included_tracestate_missing (__main__.TraceContextTest)
harness sends a request with traceparent but without tracestate ... ok
test_traceparent_ows_handling (__main__.TraceContextTest)
harness sends an valid traceparent with heading and trailing OWS ... FAIL
test_traceparent_parent_id_all_zero (__main__.TraceContextTest)
harness sends an invalid traceparent with parent_id = 0000000000000000 ... ok
test_traceparent_parent_id_illegal_characters (__main__.TraceContextTest)
harness sends an invalid traceparent with illegal characters in parent_id ... ok
test_traceparent_parent_id_too_long (__main__.TraceContextTest)
harness sends an invalid traceparent with parent_id more than 16 HEXDIG ... ok
test_traceparent_parent_id_too_short (__main__.TraceContextTest)
harness sends an invalid traceparent with parent_id less than 16 HEXDIG ... ok
test_traceparent_trace_flags_illegal_characters (__main__.TraceContextTest)
harness sends an invalid traceparent with illegal characters in trace_flags ... ok
test_traceparent_trace_flags_too_long (__main__.TraceContextTest)
harness sends an invalid traceparent with trace_flags more than 2 HEXDIG ... ok
test_traceparent_trace_flags_too_short (__main__.TraceContextTest)
harness sends an invalid traceparent with trace_flags less than 2 HEXDIG ... ok
test_traceparent_trace_id_all_zero (__main__.TraceContextTest)
harness sends an invalid traceparent with trace_id = 00000000000000000000000000000000 ... ok
test_traceparent_trace_id_illegal_characters (__main__.TraceContextTest)
harness sends an invalid traceparent with illegal characters in trace_id ... ok
test_traceparent_trace_id_too_long (__main__.TraceContextTest)
harness sends an invalid traceparent with trace_id more than 32 HEXDIG ... ok
test_traceparent_trace_id_too_short (__main__.TraceContextTest)
harness sends an invalid traceparent with trace_id less than 32 HEXDIG ... ok
test_traceparent_version_0x00 (__main__.TraceContextTest)
harness sends an invalid traceparent with extra trailing characters ... ok
test_traceparent_version_0xcc (__main__.TraceContextTest)
harness sends an valid traceparent with future version 204 (0xcc) ... FAIL
test_traceparent_version_0xff (__main__.TraceContextTest)
harness sends an invalid traceparent with version 255 (0xff) ... ok
test_traceparent_version_illegal_characters (__main__.TraceContextTest)
harness sends an invalid traceparent with illegal characters in version ... ok
test_traceparent_version_too_long (__main__.TraceContextTest)
harness sends an invalid traceparent with version more than 2 HEXDIG ... ok
test_traceparent_version_too_short (__main__.TraceContextTest)
harness sends an invalid traceparent with version less than 2 HEXDIG ... ok
test_tracestate_all_allowed_characters (__main__.TraceContextTest)
harness sends a request with a valid tracestate header with all legal characters ... ok
test_tracestate_duplicated_keys (__main__.TraceContextTest)
harness sends a request with an invalid tracestate header with duplicated keys ... FAIL
test_tracestate_empty_header (__main__.TraceContextTest)
harness sends a request with empty tracestate header ... FAIL
test_tracestate_header_name (__main__.TraceContextTest)
harness sends an invalid tracestate using wrong names ... ok
test_tracestate_header_name_valid_casing (__main__.TraceContextTest)
harness sends a valid tracestate using different combination of casing ... ok
test_tracestate_included_traceparent_included (__main__.TraceContextTest)
harness sends a request with both tracestate and traceparent ... ok
test_tracestate_included_traceparent_missing (__main__.TraceContextTest)
harness sends a request with tracestate but without traceparent ... ok
test_tracestate_key_illegal_characters (__main__.TraceContextTest)
harness sends a request with an invalid tracestate header with illegal key ... ok
test_tracestate_key_illegal_vendor_format (__main__.TraceContextTest)
harness sends a request with an invalid tracestate header with illegal vendor format ... ok
test_tracestate_key_length_limit (__main__.TraceContextTest)
harness sends tracestate header with a key of 256 and 257 characters ... FAIL
test_tracestate_member_count_limit (__main__.TraceContextTest)
harness sends a request with a valid tracestate header with 32 list members ... FAIL
test_tracestate_multiple_headers_different_keys (__main__.TraceContextTest)
harness sends a request with multiple tracestate headers, each contains different set of keys ... FAIL
test_tracestate_ows_handling (__main__.TraceContextTest)
harness sends a request with a valid tracestate header with OWS ... FAIL
test_tracestate_value_illegal_characters (__main__.TraceContextTest)
harness sends a request with an invalid tracestate header with illegal value format ... ok

----------------------------------------------------------------------
Ran 40 tests in 0.807s

FAILED (failures=9)
``

lalitb avatar Apr 30 '21 19:04 lalitb

Moving to GA milestone, as fix doesn't involve api/sdk interface changes. And few of the failures are related to issues with the test suite used for validation.

lalitb avatar Jun 03 '21 15:06 lalitb

This issue was marked as stale due to lack of activity. It will be closed in 7 days if no furthur activity occurs.

github-actions[bot] avatar Dec 07 '21 01:12 github-actions[bot]

This issue was marked as stale due to lack of activity. It will be closed in 7 days if no furthur activity occurs.

github-actions[bot] avatar Feb 06 '22 01:02 github-actions[bot]