From 56cae2dc20307819f000a6d803bc35ad5de982ba Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Tue, 17 May 2016 14:55:19 +0200 Subject: [PATCH] unit test framework: Wait for all running operations to finish during all tests. --- .../persistentvolume/persistentvolume_framework_test.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/controller/persistentvolume/persistentvolume_framework_test.go b/pkg/controller/persistentvolume/persistentvolume_framework_test.go index e2d4b8eb2aa..2f2c6a0d09a 100644 --- a/pkg/controller/persistentvolume/persistentvolume_framework_test.go +++ b/pkg/controller/persistentvolume/persistentvolume_framework_test.go @@ -345,6 +345,12 @@ func (r *volumeReactor) getChangeCount() int { return r.changedSinceLastSync } +func (r *volumeReactor) getOperationCount() int { + r.ctrl.runningOperationsMapLock.Lock() + defer r.ctrl.runningOperationsMapLock.Unlock() + return len(r.ctrl.runningOperations) +} + // waitTest waits until all tests, controllers and other goroutines do their // job and no new actions are registered for 10 milliseconds. func (r *volumeReactor) waitTest() { @@ -354,7 +360,7 @@ func (r *volumeReactor) waitTest() { for { time.Sleep(10 * time.Millisecond) changes := r.getChangeCount() - if changes == oldChanges { + if changes == oldChanges && r.getOperationCount() == 0 { // No changes for last 10ms -> controller must be idle. break }