MCPcopy Create free account
hub / github.com/cloudwego/netpoll / TestLinkBuffer

Function TestLinkBuffer

nocopy_linkbuffer_test.go:29–89  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

27)
28
29func TestLinkBuffer(t *testing.T) {
30 // clean & new
31 LinkBufferCap = 128
32
33 buf := NewLinkBuffer()
34 Equal(t, buf.Len(), 0)
35 MustTrue(t, buf.IsEmpty())
36
37 head := buf.head
38
39 p, err := buf.Next(10)
40 Equal(t, len(p), 0)
41 MustTrue(t, err != nil)
42
43 buf.Malloc(128)
44 MustTrue(t, buf.IsEmpty())
45
46 p, err = buf.Peek(10)
47 Equal(t, len(p), 0)
48 MustTrue(t, err != nil)
49
50 buf.Flush()
51 Equal(t, buf.Len(), 128)
52 MustTrue(t, !buf.IsEmpty())
53
54 p, err = buf.Next(28)
55 Equal(t, len(p), 28)
56 Equal(t, buf.Len(), 100)
57 MustNil(t, err)
58 MustTrue(t, buf.read.readExposed()) // single-node Next exposes buffer
59
60 p, err = buf.Peek(90)
61 Equal(t, len(p), 90)
62 Equal(t, buf.Len(), 100)
63 MustNil(t, err)
64 MustTrue(t, buf.read.readExposed()) // single-node Peek exposes buffer
65
66 read := buf.read
67 Equal(t, buf.head, head)
68 err = buf.Release()
69 MustNil(t, err)
70 Equal(t, buf.head, read)
71
72 inputs := buf.book(block1k, block8k)
73 Equal(t, len(inputs), block1k)
74 Equal(t, buf.Len(), 100)
75
76 buf.MallocAck(block1k)
77 Equal(t, buf.Len(), 100)
78 Equal(t, buf.MallocLen(), block1k)
79 buf.Flush()
80 Equal(t, buf.Len(), 100+block1k)
81 Equal(t, buf.MallocLen(), 0)
82
83 outputs := buf.GetBytes(make([][]byte, 16))
84 Equal(t, len(outputs), 2)
85
86 err = buf.Skip(block1k)

Callers

nothing calls this directly

Calls 15

NewLinkBufferFunction · 0.85
readExposedMethod · 0.80
LenMethod · 0.65
NextMethod · 0.65
MallocMethod · 0.65
PeekMethod · 0.65
FlushMethod · 0.65
ReleaseMethod · 0.65
MallocAckMethod · 0.65
MallocLenMethod · 0.65
SkipMethod · 0.65
EqualFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…