MCPcopy
hub / github.com/CodisLabs/codis / TestMakeCGoSlice

Function TestMakeCGoSlice

pkg/utils/unsafe2/slice_test.go:25–74  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

23}
24
25func TestMakeCGoSlice(t *testing.T) {
26 n := MinOffheapSlice * 2
27 SetMaxOffheapBytes(int64(n) * 2)
28
29 s1 := MakeSlice(n)
30 _, ok1 := s1.(*cgoSlice)
31 assert.Must(ok1 && len(s1.Buffer()) == n)
32 defer FreeSlice(s1)
33
34 s2 := MakeSlice(n)
35 _, ok2 := s2.(*cgoSlice)
36 assert.Must(ok2 && len(s2.Buffer()) == n)
37 defer FreeSlice(s2)
38
39 assert.Must(OffheapBytes() == int64(n)*2)
40
41 s3 := MakeSlice(n)
42 _, ok3 := s3.(*goSlice)
43 assert.Must(ok3 && len(s3.Buffer()) == n)
44 defer FreeSlice(s3)
45
46 assert.Must(OffheapBytes() == int64(n)*2)
47
48 FreeSlice(s2)
49 assert.Must(OffheapBytes() == int64(n))
50
51 s4 := MakeSlice(n)
52 _, ok4 := s4.(*cgoSlice)
53 assert.Must(ok4 && len(s4.Buffer()) == n)
54 defer FreeSlice(s4)
55
56 assert.Must(OffheapBytes() == int64(n)*2)
57
58 s5 := MakeOffheapSlice(n)
59 assert.Must(s5 != nil && len(s5.Buffer()) == n)
60 defer FreeSlice(s5)
61
62 assert.Must(OffheapBytes() == int64(n)*3)
63
64 c1 := s5.Slice2(0, 2)
65 c2 := c1.Slice3(0, 1, 2)
66 assert.Must(c1.Parent() == s5)
67 assert.Must(c2.Parent() == s5)
68
69 c1.Buffer()[0] = 'a'
70 assert.Must(c2.Buffer()[0] == 'a')
71
72 c1.Buffer()[0] = 'b'
73 assert.Must(c2.Buffer()[0] == 'b')
74}

Callers

nothing calls this directly

Calls 9

SetMaxOffheapBytesFunction · 0.85
MakeSliceFunction · 0.85
FreeSliceFunction · 0.85
OffheapBytesFunction · 0.85
MakeOffheapSliceFunction · 0.85
BufferMethod · 0.65
Slice2Method · 0.65
Slice3Method · 0.65
ParentMethod · 0.65

Tested by

no test coverage detected