@@ -723,8 +723,9 @@ void testCollectMultipleTraces() throws IOException {
723723 assertNotNull (parsedTraceId , "trace_id must be present in every span" );
724724 assertEquals (16 , parsedTraceId .length , "trace_id must be 16 bytes" );
725725 assertEquals (8 , parsedSpanId .length , "span_id must be 8 bytes" );
726- parsedSpanIds .add (readLittleEndianLong (parsedSpanId ));
727- parsedTraceIds .add (readLittleEndianLong (parsedTraceId ));
726+ parsedSpanIds .add (readBigEndianLong (parsedSpanId ));
727+ // low-order part of traceId occupies parsedTraceId[8..15] (big-endian)
728+ parsedTraceIds .add (readBigEndianLong (copyOfRange (parsedTraceId , 8 , 16 )));
728729 } else {
729730 ss .skipField (ssTag );
730731 }
@@ -964,8 +965,8 @@ private static void verifySpan(CodedInputStream sp, DDSpan span, SpanSpec spec,
964965 assertNotNull (parsedTraceId , "trace_id must be present [" + caseName + "]" );
965966 assertEquals (16 , parsedTraceId .length , "trace_id must be 16 bytes [" + caseName + "]" );
966967 if (spec .use128BitTraceId ) {
967- // high-order bytes occupy parsedTraceId[8..15 ] (little -endian in the wire format )
968- long highOrderBytes = readLittleEndianLong ( copyOfRange ( parsedTraceId , 8 , 16 ) );
968+ // high-order part of traceId occupies parsedTraceId[0..7 ] (big -endian)
969+ long highOrderBytes = readBigEndianLong ( parsedTraceId );
969970 assertNotEquals (
970971 0L ,
971972 highOrderBytes ,
@@ -976,9 +977,7 @@ private static void verifySpan(CodedInputStream sp, DDSpan span, SpanSpec spec,
976977 assertNotNull (parsedSpanId , "span_id must be present [" + caseName + "]" );
977978 assertEquals (8 , parsedSpanId .length , "span_id must be 8 bytes [" + caseName + "]" );
978979 assertEquals (
979- span .getSpanId (),
980- readLittleEndianLong (parsedSpanId ),
981- "span_id mismatch [" + caseName + "]" );
980+ span .getSpanId (), readBigEndianLong (parsedSpanId ), "span_id mismatch [" + caseName + "]" );
982981
983982 // ── parent_span_id (field 4) ──────────────────────────────────────────────
984983 if (spec .parentIndex >= 0 ) {
@@ -988,14 +987,14 @@ private static void verifySpan(CodedInputStream sp, DDSpan span, SpanSpec spec,
988987 8 , parsedParentSpanId .length , "parent_span_id must be 8 bytes [" + caseName + "]" );
989988 assertEquals (
990989 span .getParentId (),
991- readLittleEndianLong (parsedParentSpanId ),
990+ readBigEndianLong (parsedParentSpanId ),
992991 "parent_span_id mismatch [" + caseName + "]" );
993992 } else {
994993 // root spans either omit the field or write zero bytes
995994 if (parsedParentSpanId != null ) {
996995 assertEquals (
997996 0L ,
998- readLittleEndianLong (parsedParentSpanId ),
997+ readBigEndianLong (parsedParentSpanId ),
999998 "root span parent_span_id must be zero [" + caseName + "]" );
1000999 }
10011000 }
@@ -1191,10 +1190,10 @@ private static String readKeyValueKey(CodedInputStream kv) throws IOException {
11911190 return key ;
11921191 }
11931192
1194- /** Reads a little -endian 64-bit integer from the first 8 bytes of the given array. */
1195- private static long readLittleEndianLong (byte [] bytes ) {
1193+ /** Reads a big -endian 64-bit value from the first 8 bytes of the given array. */
1194+ private static long readBigEndianLong (byte [] bytes ) {
11961195 long value = 0 ;
1197- for (int i = 7 ; i >= 0 ; i -- ) {
1196+ for (int i = 0 ; i < 8 ; i ++ ) {
11981197 value = (value << 8 ) | (bytes [i ] & 0xFF );
11991198 }
12001199 return value ;
0 commit comments