MCPcopy Create free account
hub / github.com/blobcache/blobcache / QueueAPI

Function QueueAPI

src/blobcache/blobcachetests/queue.go:13–175  ·  view source on GitHub ↗
(t *testing.T, setup func(testing.TB) (blobcache.QueueAPI, blobcache.Handle))

Source from the content-addressed store, hash-verified

11)
12
13func QueueAPI(t *testing.T, setup func(testing.TB) (blobcache.QueueAPI, blobcache.Handle)) {
14 t.Run("MaxBytes", func(t *testing.T) {
15 t.Parallel()
16 ctx := testutil.Context(t)
17 s, qh := setup(t)
18 info, err := s.InspectQueue(ctx, qh)
19 require.NoError(t, err)
20 max := info.Config.MaxBytesPerMessage
21
22 _, err = s.Enqueue(ctx, qh, []blobcache.Message{
23 {Bytes: make([]byte, int(max))},
24 })
25 require.NoError(t, err)
26 buf := make([]blobcache.Message, 1)
27 n, err := s.Dequeue(ctx, qh, buf, blobcache.DequeueOpts{Min: 1})
28 require.NoError(t, err)
29 require.Equal(t, 1, n)
30
31 _, err = s.Enqueue(ctx, qh, []blobcache.Message{
32 {Bytes: make([]byte, int(max)+1)},
33 })
34 require.Error(t, err)
35 })
36 t.Run("MaxHandles", func(t *testing.T) {
37 t.Parallel()
38 ctx := testutil.Context(t)
39 s, qh := setup(t)
40 info, err := s.InspectQueue(ctx, qh)
41 require.NoError(t, err)
42 max := info.Config.MaxHandlesPerMessage
43
44 handles := make([]blobcache.Handle, int(max))
45 for i := range handles {
46 handles[i] = blobcache.Handle{OID: blobcache.RandomOID()}
47 }
48 _, err = s.Enqueue(ctx, qh, []blobcache.Message{
49 {Handles: handles},
50 })
51 require.NoError(t, err)
52 buf := make([]blobcache.Message, 1)
53 n, err := s.Dequeue(ctx, qh, buf, blobcache.DequeueOpts{Min: 1})
54 require.NoError(t, err)
55 require.Equal(t, 1, n)
56
57 handlesOver := make([]blobcache.Handle, int(max)+1)
58 for i := range handlesOver {
59 handlesOver[i] = blobcache.Handle{OID: blobcache.RandomOID()}
60 }
61 _, err = s.Enqueue(ctx, qh, []blobcache.Message{
62 {Handles: handlesOver},
63 })
64 require.Error(t, err)
65 })
66 t.Run("ZeroLengthBuffer", func(t *testing.T) {
67 t.Parallel()
68 ctx := testutil.Context(t)
69 s, qh := setup(t)
70 _, err := s.Dequeue(ctx, qh, []blobcache.Message{}, blobcache.DequeueOpts{})

Callers 2

ServiceAPIFunction · 0.70
TestMultiNodeFunction · 0.70

Calls 8

ContextFunction · 0.92
RandomOIDFunction · 0.92
RunMethod · 0.80
InspectQueueMethod · 0.65
EnqueueMethod · 0.65
DequeueMethod · 0.65
setupFunction · 0.50
ErrorMethod · 0.45

Tested by 1

TestMultiNodeFunction · 0.56