MCPcopy
hub / github.com/hashicorp/memberlist / TestAddLabelHeaderToPacket

Function TestAddLabelHeaderToPacket

label_test.go:16–75  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

14)
15
16func TestAddLabelHeaderToPacket(t *testing.T) {
17 type testcase struct {
18 buf []byte
19 label string
20 expectPacket []byte
21 expectErr string
22 }
23
24 run := func(t *testing.T, tc testcase) {
25 got, err := AddLabelHeaderToPacket(tc.buf, tc.label)
26 if tc.expectErr != "" {
27 require.Error(t, err)
28 require.Contains(t, err.Error(), tc.expectErr)
29 } else {
30 require.NoError(t, err)
31 require.Equal(t, tc.expectPacket, got)
32 }
33 }
34
35 longLabel := strings.Repeat("a", 255)
36
37 cases := map[string]testcase{
38 "nil buf with no label": testcase{
39 buf: nil,
40 label: "",
41 expectPacket: nil,
42 },
43 "nil buf with label": testcase{
44 buf: nil,
45 label: "foo",
46 expectPacket: append([]byte{byte(hasLabelMsg), 3}, []byte("foo")...),
47 },
48 "message with label": testcase{
49 buf: []byte("something"),
50 label: "foo",
51 expectPacket: append([]byte{byte(hasLabelMsg), 3}, []byte("foosomething")...),
52 },
53 "message with no label": testcase{
54 buf: []byte("something"),
55 label: "",
56 expectPacket: []byte("something"),
57 },
58 "message with almost too long label": testcase{
59 buf: []byte("something"),
60 label: longLabel,
61 expectPacket: append([]byte{byte(hasLabelMsg), 255}, []byte(longLabel+"something")...),
62 },
63 "label too long by one byte": testcase{
64 buf: []byte("something"),
65 label: longLabel + "x",
66 expectErr: `label "` + longLabel + `x" is too long`,
67 },
68 }
69
70 for name, tc := range cases {
71 t.Run(name, func(t *testing.T) {
72 run(t, tc)
73 })

Callers

nothing calls this directly

Calls 3

AddLabelHeaderToPacketFunction · 0.85
runFunction · 0.85
ErrorMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…