X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b92203411f6f6adaef1c2af62495830f13f4fa14..75e196b201be758ffb857c3f2d33847e8cca0d18:/services/keepstore/trash_worker_test.go?ds=sidebyside diff --git a/services/keepstore/trash_worker_test.go b/services/keepstore/trash_worker_test.go index 8268191b08..a626d9be9b 100644 --- a/services/keepstore/trash_worker_test.go +++ b/services/keepstore/trash_worker_test.go @@ -258,11 +258,39 @@ func performTrashWorkerTest(testData TrashWorkerTestData, t *testing.T) { } go RunTrashWorker(trashq) + // Install gate so all local operations block until we say go + gate := make(chan struct{}) + for _, v := range vols { + v.(*MockVolume).Gate = gate + } + + assertStatusItem := func(k string, expect float64) { + if v := getStatusItem("TrashQueue", k); v != expect { + t.Errorf("Got %s %v, expected %v", k, v, expect) + } + } + + assertStatusItem("InProgress", 0) + assertStatusItem("Queued", 0) + + listLen := trashList.Len() trashq.ReplaceQueue(trashList) - time.Sleep(10 * time.Millisecond) // give a moment to finish processing the list + + // Wait for worker to take request(s) + expectEqualWithin(t, time.Second, listLen, func() interface{} { return trashq.Status().InProgress }) + + // Ensure status.json also reports work is happening + assertStatusItem("InProgress", float64(1)) + assertStatusItem("Queued", float64(listLen-1)) + + // Let worker proceed + close(gate) + + // Wait for worker to finish + expectEqualWithin(t, time.Second, 0, func() interface{} { return trashq.Status().InProgress }) // Verify Locator1 to be un/deleted as expected - data, _ := GetBlock(testData.Locator1, false) + data, _ := GetBlock(testData.Locator1) if testData.ExpectLocator1 { if len(data) == 0 { t.Errorf("Expected Locator1 to be still present: %s", testData.Locator1) @@ -275,7 +303,7 @@ func performTrashWorkerTest(testData TrashWorkerTestData, t *testing.T) { // Verify Locator2 to be un/deleted as expected if testData.Locator1 != testData.Locator2 { - data, _ = GetBlock(testData.Locator2, false) + data, _ = GetBlock(testData.Locator2) if testData.ExpectLocator2 { if len(data) == 0 { t.Errorf("Expected Locator2 to be still present: %s", testData.Locator2)