Browse Source

archiver: tests: fix several timing nits

Once we've signaled a cond var, it may take some small amount of time for
the goroutines released to hit the spot we're wanting them to be at. Give
them an appropriate amount of time.
pull/11296/head
Kyle Evans 5 years ago
parent
commit
59786fe125
  1. 29
      services/archiver/archiver_test.go

29
services/archiver/archiver_test.go

@ -37,6 +37,21 @@ func allComplete(inFlight []*ArchiveRequest) bool {
return true return true
} }
func waitForCount(t *testing.T, num int) {
var numQueued int
// Wait for 3 seconds to hit the queue.
timeout := time.Now().Add(3 * time.Second)
for {
numQueued = len(archiveInProgress)
if numQueued == num || time.Now().After(timeout) {
break
}
}
assert.Equal(t, num, len(archiveInProgress))
}
func releaseOneEntry(t *testing.T, inFlight []*ArchiveRequest) { func releaseOneEntry(t *testing.T, inFlight []*ArchiveRequest) {
var nowQueued, numQueued int var nowQueued, numQueued int
@ -58,7 +73,7 @@ func releaseOneEntry(t *testing.T, inFlight []*ArchiveRequest) {
assert.NotEqual(t, nowQueued, numQueued) assert.NotEqual(t, nowQueued, numQueued)
// Also make sure that we released only one. // Also make sure that we released only one.
assert.Equal(t, nowQueued, numQueued+1) assert.Equal(t, nowQueued, numQueued-1)
} }
func TestArchive_Basic(t *testing.T) { func TestArchive_Basic(t *testing.T) {
@ -106,16 +121,20 @@ func TestArchive_Basic(t *testing.T) {
inFlight[2] = secondReq inFlight[2] = secondReq
ArchiveRepository(zipReq) ArchiveRepository(zipReq)
assert.Equal(t, len(archiveInProgress), 1) waitForCount(t, 1)
ArchiveRepository(tgzReq) ArchiveRepository(tgzReq)
assert.Equal(t, len(archiveInProgress), 2) waitForCount(t, 2)
ArchiveRepository(secondReq) ArchiveRepository(secondReq)
assert.Equal(t, len(archiveInProgress), 3) waitForCount(t, 3)
// Make sure sending an unprocessed request through doesn't affect the queue // Make sure sending an unprocessed request through doesn't affect the queue
// count. // count.
ArchiveRepository(zipReq) ArchiveRepository(zipReq)
assert.Equal(t, len(archiveInProgress), 3)
// Sleep two seconds to make sure the queue doesn't change.
two_seconds, _ := time.ParseDuration("2s")
time.Sleep(two_seconds)
assert.Equal(t, 3, len(archiveInProgress))
// Release them all, they'll then stall at the archiveQueueReleaseCond while // Release them all, they'll then stall at the archiveQueueReleaseCond while
// we examine the queue state. // we examine the queue state.

Loading…
Cancel
Save