-package main
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+package keepstore
import (
"container/list"
Fatalf(string, ...interface{})
}
-func makeTestWorkList(ary []int) *list.List {
+func makeTestWorkList(ary []interface{}) *list.List {
l := list.New()
for _, n := range ary {
l.PushBack(n)
}
}
-func doWorkItems(t fatalfer, q *WorkQueue, expected []int) {
+func doWorkItems(t fatalfer, q *WorkQueue, expected []interface{}) {
for i := range expected {
actual, ok := <-q.NextItem
if !ok {
func TestWorkQueueDoneness(t *testing.T) {
b := NewWorkQueue()
defer b.Close()
- b.ReplaceQueue(makeTestWorkList([]int{1, 2, 3}))
+ b.ReplaceQueue(makeTestWorkList([]interface{}{1, 2, 3}))
expectQueued(t, b, 3)
gate := make(chan struct{})
go func() {
<-gate
- for _ = range b.NextItem {
+ for range b.NextItem {
<-gate
time.Sleep(time.Millisecond)
b.DoneItem <- struct{}{}
}
}()
expectEqualWithin(t, time.Second, 0, func() interface{} { return b.Status().InProgress })
- b.ReplaceQueue(makeTestWorkList([]int{4, 5, 6}))
+ b.ReplaceQueue(makeTestWorkList([]interface{}{4, 5, 6}))
for i := 1; i <= 3; i++ {
gate <- struct{}{}
expectEqualWithin(t, time.Second, 3-i, func() interface{} { return b.Status().Queued })
// Create a WorkQueue, generate a list for it, and instantiate a worker.
func TestWorkQueueReadWrite(t *testing.T) {
- var input = []int{1, 1, 2, 3, 5, 8, 13, 21, 34}
+ var input = []interface{}{1, 1, 2, 3, 5, 8, 13, 21, 34}
b := NewWorkQueue()
expectQueued(t, b, 0)
// Start a worker before the list has any input.
func TestWorkQueueEarlyRead(t *testing.T) {
- var input = []int{1, 1, 2, 3, 5, 8, 13, 21, 34}
+ var input = []interface{}{1, 1, 2, 3, 5, 8, 13, 21, 34}
b := NewWorkQueue()
defer b.Close()
// After Close(), NextItem closes, work finishes, then stats return zero.
func TestWorkQueueClose(t *testing.T) {
b := NewWorkQueue()
- input := []int{1, 2, 3, 4, 5, 6, 7, 8}
+ input := []interface{}{1, 2, 3, 4, 5, 6, 7, 8}
mark := make(chan struct{})
go func() {
<-b.NextItem
// available.
func TestWorkQueueReaderBlocks(t *testing.T) {
var (
- inputBeforeBlock = []int{1, 2, 3, 4, 5}
- inputAfterBlock = []int{6, 7, 8, 9, 10}
+ inputBeforeBlock = []interface{}{1, 2, 3, 4, 5}
+ inputAfterBlock = []interface{}{6, 7, 8, 9, 10}
)
b := NewWorkQueue()
// Replace one active work list with another.
func TestWorkQueueReplaceQueue(t *testing.T) {
- var firstInput = []int{1, 1, 2, 3, 5, 8, 13, 21, 34}
- var replaceInput = []int{1, 4, 9, 16, 25, 36, 49, 64, 81}
+ var firstInput = []interface{}{1, 1, 2, 3, 5, 8, 13, 21, 34}
+ var replaceInput = []interface{}{1, 4, 9, 16, 25, 36, 49, 64, 81}
b := NewWorkQueue()
b.ReplaceQueue(makeTestWorkList(firstInput))