MCPcopy
hub / github.com/grafana/tempo / TestInterner_UnsafeClone

Function TestInterner_UnsafeClone

pkg/parquetquery/intern/intern_test.go:30–71  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

28}
29
30func TestInterner_UnsafeClone(t *testing.T) {
31 i := New()
32 defer i.Close()
33
34 value1 := pq.ByteArrayValue([]byte("foo"))
35 value2 := pq.ByteArrayValue([]byte("foo"))
36
37 clone1 := i.UnsafeClone(&value1)
38 clone2 := i.UnsafeClone(&value2)
39
40 clone1Addr := unsafe.SliceData(clone1.ByteArray())
41 clone2Addr := unsafe.SliceData(clone2.ByteArray())
42 if clone1Addr != clone2Addr {
43 t.Errorf("expected interned values to have same memory address, got %p and %p", clone1Addr, clone2Addr)
44 }
45
46 value1Addr := unsafe.SliceData(value1.ByteArray())
47 value2Addr := unsafe.SliceData(value2.ByteArray())
48 if value1Addr == value2Addr {
49 t.Error("expected original values to have different memory addresses")
50 }
51
52 if string(clone1.ByteArray()) != string(clone2.ByteArray()) {
53 t.Error("expected same byte values")
54 }
55 if string(value1.ByteArray()) != string(value2.ByteArray()) {
56 t.Error("expected original values to have same content")
57 }
58
59 clone3 := i.UnsafeClone(&value1) // Clone the same value again
60 clone3Addr := unsafe.SliceData(clone3.ByteArray())
61 if clone1Addr != clone3Addr {
62 t.Errorf("expected repeated interning to return same memory, got %p and %p", clone1Addr, clone3Addr)
63 }
64
65 differentValue := pq.ByteArrayValue([]byte("bar"))
66 differentClone := i.UnsafeClone(&differentValue)
67 differentAddr := unsafe.SliceData(differentClone.ByteArray())
68 if clone1Addr == differentAddr {
69 t.Error("expected different strings to have different interned memory")
70 }
71}
72
73func TestPqValueMemoryLayout(t *testing.T) {
74 var pqVal pq.Value

Callers

nothing calls this directly

Calls 4

UnsafeCloneMethod · 0.80
NewFunction · 0.70
CloseMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected