MCPcopy
hub / github.com/apache/answer / TestQueue_MultipleMessages

Function TestQueue_MultipleMessages

internal/base/queue/queue_test.go:59–92  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

57}
58
59func TestQueue_MultipleMessages(t *testing.T) {
60 q := New[*testMessage]("test", 10)
61 defer q.Close()
62
63 var count atomic.Int32
64 var wg sync.WaitGroup
65 numMessages := 100
66 wg.Add(numMessages)
67
68 q.RegisterHandler(func(ctx context.Context, msg *testMessage) error {
69 count.Add(1)
70 wg.Done()
71 return nil
72 })
73
74 for i := range numMessages {
75 q.Send(context.Background(), &testMessage{ID: i})
76 }
77
78 done := make(chan struct{})
79 go func() {
80 wg.Wait()
81 close(done)
82 }()
83
84 select {
85 case <-done:
86 if int(count.Load()) != numMessages {
87 t.Errorf("expected %d messages, got %d", numMessages, count.Load())
88 }
89 case <-time.After(5 * time.Second):
90 t.Fatalf("timeout: only received %d of %d messages", count.Load(), numMessages)
91 }
92}
93
94func TestQueue_NoHandlerDropsMessage(t *testing.T) {
95 q := New[*testMessage]("test", 10)

Callers

nothing calls this directly

Calls 5

closeFunction · 0.85
CloseMethod · 0.65
AddMethod · 0.65
RegisterHandlerMethod · 0.65
SendMethod · 0.65

Tested by

no test coverage detected