726c8b2301
This can be used in at least one place in the notifiers to improve efficiency and reduce complexity.
27 lines
545 B
Go
27 lines
545 B
Go
package chainntnfs_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/lightningnetwork/lnd/chainntnfs"
|
|
)
|
|
|
|
func TestConcurrentQueue(t *testing.T) {
|
|
queue := chainntnfs.NewConcurrentQueue(100)
|
|
queue.Start()
|
|
defer queue.Stop()
|
|
|
|
// Pushes should never block for long.
|
|
for i := 0; i < 1000; i++ {
|
|
queue.ChanIn() <- i
|
|
}
|
|
|
|
// Pops also should not block for long. Expect elements in FIFO order.
|
|
for i := 0; i < 1000; i++ {
|
|
item := <-queue.ChanOut()
|
|
if i != item.(int) {
|
|
t.Fatalf("Dequeued wrong value: expected %d, got %d", i, item.(int))
|
|
}
|
|
}
|
|
}
|