From 4c6b5af5f886a99dec032804e61742744d2ff10e Mon Sep 17 00:00:00 2001 From: skudasov Date: Fri, 20 Sep 2024 17:43:58 +0200 Subject: [PATCH] adjust tests for a new runner --- wasp/wasp.go | 6 ++++++ wasp/wasp_test.go | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/wasp/wasp.go b/wasp/wasp.go index b6b3e2cdd..88cd6c6b3 100644 --- a/wasp/wasp.go +++ b/wasp/wasp.go @@ -225,6 +225,7 @@ type Generator struct { labels model.LabelSet rl atomic.Pointer[ratelimit.Limiter] scheduleSegments []*Segment + currentSegmentMu *sync.Mutex currentSegment *Segment ResponsesWaitGroup *sync.WaitGroup dataWaitGroup *sync.WaitGroup @@ -299,6 +300,7 @@ func NewGenerator(cfg *Config) (*Generator, error) { Responses: NewResponses(rch), ResponsesChan: rch, labels: ls, + currentSegmentMu: &sync.Mutex{}, responsesData: &ResponseData{ okDataMu: &sync.Mutex{}, OKData: NewSliceBuffer[any](cfg.CallResultBufLen), @@ -345,7 +347,9 @@ func (g *Generator) runExecuteLoop() { } }() case VU: + g.currentSegmentMu.Lock() g.stats.CurrentVUs.Store(g.currentSegment.From) + g.currentSegmentMu.Unlock() // we start all vus once vus := g.stats.CurrentVUs.Load() for i := 0; i < int(vus); i++ { @@ -457,7 +461,9 @@ func (g *Generator) processSegment() bool { if g.stats.CurrentSegment.Load() == g.stats.LastSegment.Load() { return true } + g.currentSegmentMu.Lock() g.currentSegment = g.scheduleSegments[g.stats.CurrentSegment.Load()] + g.currentSegmentMu.Unlock() g.stats.CurrentSegment.Add(1) switch g.Cfg.LoadType { case RPS: diff --git a/wasp/wasp_test.go b/wasp/wasp_test.go index a411faa92..413de7606 100644 --- a/wasp/wasp_test.go +++ b/wasp/wasp_test.go @@ -449,13 +449,13 @@ func TestSmokeStaticRPSSchedulePrecision(t *testing.T) { require.NoError(t, err) _, failed := gen.Run(true) require.Equal(t, false, failed) - require.GreaterOrEqual(t, gen.Stats().Success.Load(), int64(990)) + require.GreaterOrEqual(t, gen.Stats().Success.Load(), int64(980)) require.LessOrEqual(t, gen.Stats().Success.Load(), int64(1010)) require.Equal(t, gen.Stats().Failed.Load(), int64(0)) require.Equal(t, gen.Stats().CallTimeout.Load(), int64(0)) okData, _, failResponses := convertResponsesData(gen) - require.GreaterOrEqual(t, len(okData), 990) + require.GreaterOrEqual(t, len(okData), 980) require.LessOrEqual(t, len(okData), 1010) require.Empty(t, failResponses) require.Empty(t, gen.Errors()) @@ -475,14 +475,14 @@ func TestSmokeCustomUnitPrecision(t *testing.T) { _, failed := gen.Run(true) require.Equal(t, false, failed) stats := gen.Stats() - require.GreaterOrEqual(t, stats.Success.Load(), int64(4990)) + require.GreaterOrEqual(t, stats.Success.Load(), int64(4970)) require.LessOrEqual(t, stats.Success.Load(), int64(5010)) require.Equal(t, stats.Failed.Load(), int64(0)) require.Equal(t, stats.CallTimeout.Load(), int64(0)) require.Equal(t, stats.CurrentTimeUnit, gen.Cfg.RateLimitUnitDuration.Nanoseconds()) okData, _, failResponses := convertResponsesData(gen) - require.GreaterOrEqual(t, len(okData), 4990) + require.GreaterOrEqual(t, len(okData), 4970) require.LessOrEqual(t, len(okData), 5010) require.Empty(t, failResponses) require.Empty(t, gen.Errors()) @@ -501,13 +501,13 @@ func TestSmokeStaticRPSScheduleIsNotBlocking(t *testing.T) { require.NoError(t, err) _, failed := gen.Run(true) require.Equal(t, false, failed) - require.GreaterOrEqual(t, gen.Stats().Success.Load(), int64(990)) + require.GreaterOrEqual(t, gen.Stats().Success.Load(), int64(980)) require.LessOrEqual(t, gen.Stats().Success.Load(), int64(1010)) require.Equal(t, gen.Stats().Failed.Load(), int64(0)) require.Equal(t, gen.Stats().CallTimeout.Load(), int64(0)) okData, _, failResponses := convertResponsesData(gen) - require.GreaterOrEqual(t, len(okData), 990) + require.GreaterOrEqual(t, len(okData), 980) require.LessOrEqual(t, len(okData), 1010) require.Empty(t, failResponses) require.Empty(t, gen.Errors())