diff --git a/lib/executor/ramping_vus_test.go b/lib/executor/ramping_vus_test.go index 8ae1d343b..1c54d1ef6 100644 --- a/lib/executor/ramping_vus_test.go +++ b/lib/executor/ramping_vus_test.go @@ -417,7 +417,7 @@ func TestRampingVUsRampDownNoWobble(t *testing.T) { } // Sample ramp-down at a higher rate - for i := len(sampleTimes); i < rampDownSamples; i++ { + for i := len(sampleTimes); i < len(result); i++ { time.Sleep(rampDownSampleTime) result[i] = test.state.GetCurrentlyActiveVUsCount() } @@ -431,12 +431,18 @@ func TestRampingVUsRampDownNoWobble(t *testing.T) { vuChanges := []int64{result[2]} // Check ramp-down consistency - for i := 3; i < len(result[2:]); i++ { + for i := 3; i < len(result); i++ { if result[i] != result[i-1] { vuChanges = append(vuChanges, result[i]) } } - assert.Equal(t, []int64{10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, vuChanges) + assert.Equal(t, int64(0), vuChanges[len(vuChanges)-1], "ramp-down must end at 0 active VUs") + for i := 1; i < len(vuChanges); i++ { + assert.Lessf(t, vuChanges[i], vuChanges[i-1], + "active VUs increased during ramp-down: %d -> %d (full sample: %v)", + vuChanges[i-1], vuChanges[i], result, + ) + } } func TestRampingVUsConfigExecutionPlanExample(t *testing.T) { diff --git a/lib/executor/vu_handle_test.go b/lib/executor/vu_handle_test.go index 6b76f8253..1730ea72b 100644 --- a/lib/executor/vu_handle_test.go +++ b/lib/executor/vu_handle_test.go @@ -130,6 +130,7 @@ func TestVUHandleStartStopRace(t *testing.T) { var vuID uint64 testIterations := 10000 + const returnTimeout = 500 * time.Millisecond returned := make(chan struct{}) getVU := func() (lib.InitializedVU, error) { @@ -159,15 +160,14 @@ func TestVUHandleStartStopRace(t *testing.T) { vuHandle := newStoppedVUHandle(ctx, getVU, returnVU, mockNextIterations, &BaseConfig{}, logEntry) go vuHandle.runLoopsIfPossible(runIter) - for range testIterations { + for i := range testIterations { err := vuHandle.start() vuHandle.gracefulStop() require.NoError(t, err) select { case <-returned: - case <-time.After(100 * time.Millisecond): - go panic("returning took too long") - time.Sleep(time.Second) + case <-time.After(returnTimeout): + t.Fatalf("VU was not returned within %s after iteration %d", returnTimeout, i) } }