trace_id_test.cc 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include "opentelemetry/trace/trace_id.h"
  4. #include <cstring>
  5. #include <string>
  6. #include <gtest/gtest.h>
  7. namespace
  8. {
  9. using opentelemetry::trace::TraceId;
  10. std::string Hex(const opentelemetry::trace::TraceId &trace)
  11. {
  12. char buf[32];
  13. trace.ToLowerBase16(buf);
  14. return std::string(buf, sizeof(buf));
  15. }
  16. TEST(TraceIdTest, DefaultConstruction)
  17. {
  18. TraceId id;
  19. EXPECT_FALSE(id.IsValid());
  20. EXPECT_EQ("00000000000000000000000000000000", Hex(id));
  21. }
  22. TEST(TraceIdTest, ValidId)
  23. {
  24. constexpr uint8_t buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1};
  25. TraceId id(buf);
  26. EXPECT_TRUE(id.IsValid());
  27. EXPECT_EQ("01020304050607080807060504030201", Hex(id));
  28. EXPECT_NE(TraceId(), id);
  29. EXPECT_EQ(TraceId(buf), id);
  30. }
  31. TEST(TraceIdTest, LowercaseBase16)
  32. {
  33. constexpr uint8_t buf[] = {1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff};
  34. TraceId id(buf);
  35. EXPECT_TRUE(id.IsValid());
  36. EXPECT_EQ("01020304050607080807aabbccddeeff", Hex(id));
  37. EXPECT_NE(TraceId(), id);
  38. EXPECT_EQ(TraceId(buf), id);
  39. }
  40. TEST(TraceIdTest, CopyBytesTo)
  41. {
  42. constexpr uint8_t src[] = {1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1};
  43. TraceId id(src);
  44. uint8_t buf[TraceId::kSize];
  45. id.CopyBytesTo(buf);
  46. EXPECT_TRUE(memcmp(src, buf, sizeof(buf)) == 0);
  47. }
  48. } // namespace