MCPcopy Index your code
hub / github.com/apache/devlake / TestQueue

Function TestQueue

backend/helpers/pluginhelper/api/queue_test.go:44–85  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

42}
43
44func TestQueue(t *testing.T) {
45 q := NewQueue()
46 q.Push(NewQueueIteratorNode("a"))
47 q.Push(NewQueueIteratorNode("b"))
48
49 require.Equal(t, q.GetCount(), int64(2))
50 folderRaw := q.PullWithWorkingBlock()
51 data, ok := folderRaw.Data().(string)
52 require.True(t, ok)
53 require.Equal(t, "a", data)
54 require.Equal(t, q.GetCount(), int64(1))
55 folderRaw = q.PullWithWorkingBlock()
56 data, ok = folderRaw.Data().(string)
57 require.True(t, ok)
58 require.Equal(t, "b", data)
59 require.Equal(t, q.GetCount(), int64(0))
60
61 empty := false
62 waited := false
63 go func() {
64 require.Equal(t, q.GetCountWithWorkingBlock(), int64(1))
65 data, ok := q.PullWithWorkingBlock().Data().(string)
66 require.True(t, ok)
67 require.Equal(t, data, "c")
68 dataNode := q.PullWithWorkingBlock()
69 require.Equal(t, dataNode, nil)
70 empty = true
71 }()
72
73 go func() {
74 time.Sleep(100 * time.Millisecond)
75 q.Push(NewQueueIteratorNode("c"))
76 waited = true
77 q.Finish(3)
78 }()
79
80 for !empty {
81 time.Sleep(time.Millisecond)
82 }
83
84 require.True(t, waited)
85}

Callers

nothing calls this directly

Calls 8

PushMethod · 0.95
GetCountMethod · 0.95
PullWithWorkingBlockMethod · 0.95
FinishMethod · 0.95
NewQueueFunction · 0.85
NewQueueIteratorNodeFunction · 0.85
DataMethod · 0.65

Tested by

no test coverage detected