Files
baiyue-firstleg/common-web/src/test/java/com/baiyue/common/web/TraceParentTest.java
T

47 lines
1.8 KiB
Java
Raw Normal View History

2026-08-25 12:30:07 +08:00
package com.baiyue.common.web;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
class TraceParentTest {
@Test
void parsesCanonicalVersion00AndCreatesLocalChild() {
TraceParent remote = TraceParent.parse(
"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01").orElseThrow();
TraceParent local = TraceParent.childOf(remote);
assertThat(local.traceId()).isEqualTo(remote.traceId());
assertThat(local.parentId()).matches("[0-9a-f]{16}")
.isNotEqualTo(remote.parentId())
.isNotEqualTo("0000000000000000");
assertThat(local.traceFlags()).isEqualTo("01");
assertThat(local.value()).hasSize(TraceParent.HEADER_LENGTH);
}
@Test
void rejectsNonCanonicalUnsupportedAndZeroIdentifiers() {
assertThat(TraceParent.parse(
"00-4BF92F3577B34DA6A3CE929D0E0E4736-00f067aa0ba902b7-01")).isEmpty();
assertThat(TraceParent.parse(
"01-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01")).isEmpty();
assertThat(TraceParent.parse(
"00-00000000000000000000000000000000-00f067aa0ba902b7-01")).isEmpty();
assertThat(TraceParent.parse(
"00-4bf92f3577b34da6a3ce929d0e0e4736-0000000000000000-01")).isEmpty();
assertThat(TraceParent.parse("x".repeat(10_000))).isEmpty();
}
@Test
void createsCanonicalNonZeroRootAndNormalizesLegacyHex() {
TraceParent root = TraceParent.newRoot("ABCDEF0123456789ABCDEF0123456789");
assertThat(root.traceId()).isEqualTo("abcdef0123456789abcdef0123456789");
assertThat(root.parentId()).matches("[0-9a-f]{16}").isNotEqualTo("0000000000000000");
assertThat(root.value()).matches(
"00-abcdef0123456789abcdef0123456789-[0-9a-f]{16}-00");
}
}