]> source.dussan.org Git - gitea.git/commitdiff
archiver: tests: fix several timing nits
authorKyle Evans <kevans@FreeBSD.org>
Tue, 5 May 2020 22:30:21 +0000 (17:30 -0500)
committerKyle Evans <kevans@FreeBSD.org>
Tue, 5 May 2020 22:30:21 +0000 (17:30 -0500)
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.

services/archiver/archiver_test.go

index bfeeb24f1e7863ce7f4a4875aa30b2d44244c394..cfbe646db90905113f104bc67ecec3b98411b4ce 100644 (file)
@@ -37,6 +37,21 @@ func allComplete(inFlight []*ArchiveRequest) bool {
        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) {
        var nowQueued, numQueued int
 
@@ -58,7 +73,7 @@ func releaseOneEntry(t *testing.T, inFlight []*ArchiveRequest) {
        assert.NotEqual(t, nowQueued, numQueued)
 
        // 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) {
@@ -106,16 +121,20 @@ func TestArchive_Basic(t *testing.T) {
        inFlight[2] = secondReq
 
        ArchiveRepository(zipReq)
-       assert.Equal(t, len(archiveInProgress), 1)
+       waitForCount(t, 1)
        ArchiveRepository(tgzReq)
-       assert.Equal(t, len(archiveInProgress), 2)
+       waitForCount(t, 2)
        ArchiveRepository(secondReq)
-       assert.Equal(t, len(archiveInProgress), 3)
+       waitForCount(t, 3)
 
        // Make sure sending an unprocessed request through doesn't affect the queue
        // count.
        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
        // we examine the queue state.