|
| 1 | +import { |
| 2 | + DATADOG_SAMPLING_PRIORITY_HEADER, |
| 3 | + DATADOG_TRACE_ID_HEADER, |
| 4 | + DATADOG_PARENT_ID_HEADER, |
| 5 | +} from "./context/extractor"; |
1 | 6 | import { SampleMode } from "./trace-context-service";
|
2 | 7 | import { XrayService } from "./xray-service";
|
3 | 8 |
|
@@ -340,4 +345,46 @@ describe("XrayService", () => {
|
340 | 345 | expect(traceId).toBeUndefined();
|
341 | 346 | });
|
342 | 347 | });
|
| 348 | + |
| 349 | + describe("parseAWSTraceHeader", () => { |
| 350 | + it("parses AWS trace header correctly", () => { |
| 351 | + const awsTraceHeader = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1"; |
| 352 | + const xrayHeaders = XrayService.parseAWSTraceHeader(awsTraceHeader); |
| 353 | + expect(xrayHeaders).toEqual({ |
| 354 | + parentId: "94ae789b969f1cc5", |
| 355 | + sampled: "1", |
| 356 | + traceId: "1-5e272390-8c398be037738dc042009320", |
| 357 | + }); |
| 358 | + }); |
| 359 | + it.each(["Root=1-5e272390-8c398be037738dc042009320", "Root=1-65f2f78c-0000000008addb5405b376c0;Parent;Sampled"])( |
| 360 | + "returns undefined when AWS trace header is malformatted", |
| 361 | + (awsTraceHeader) => { |
| 362 | + const xrayHeaders = XrayService.parseAWSTraceHeader(awsTraceHeader); |
| 363 | + expect(xrayHeaders).toBeUndefined(); |
| 364 | + }, |
| 365 | + ); |
| 366 | + }); |
| 367 | + describe("extraceDDContextFromAWSTraceHeader", () => { |
| 368 | + it("extracts Datadog trace context from AWS trace header", () => { |
| 369 | + const awsTraceId = "Root=1-65f2f78c-0000000008addb5405b376c0;Parent=5abcb7ed643995c7;Sampled=1"; |
| 370 | + const ddTraceContext = XrayService.extraceDDContextFromAWSTraceHeader(awsTraceId); |
| 371 | + |
| 372 | + expect(ddTraceContext).toEqual({ |
| 373 | + [DATADOG_TRACE_ID_HEADER]: "625397077193750208", |
| 374 | + [DATADOG_PARENT_ID_HEADER]: "6538302989251745223", |
| 375 | + [DATADOG_SAMPLING_PRIORITY_HEADER]: "1", |
| 376 | + }); |
| 377 | + }); |
| 378 | + |
| 379 | + it("returns null when AWS trace header is NOT injected by dd-trace", () => { |
| 380 | + const awsTraceId = "Root=1-5e272390-8c398be037738dc042009320;Parent=94ae789b969f1cc5;Sampled=1"; |
| 381 | + const ddTraceContext = XrayService.extraceDDContextFromAWSTraceHeader(awsTraceId); |
| 382 | + expect(ddTraceContext).toBeNull(); |
| 383 | + }); |
| 384 | + it("returns null when AWS trace header cannot be parsed", () => { |
| 385 | + const awsTraceId = "Root=1-5e272390-8c398be037738dc042009320;;"; |
| 386 | + const ddTraceContext = XrayService.extraceDDContextFromAWSTraceHeader(awsTraceId); |
| 387 | + expect(ddTraceContext).toBeNull(); |
| 388 | + }); |
| 389 | + }); |
343 | 390 | });
|
0 commit comments