From 43a4604e28888497ae37a0de89205c6de395a302 Mon Sep 17 00:00:00 2001 From: liqiang Date: Mon, 20 Jan 2025 05:47:26 +0000 Subject: [PATCH 1/3] e2e: prom metric check func --- test/engine/steps.go | 1 + test/engine/verify/count.go | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/test/engine/steps.go b/test/engine/steps.go index 69dea13406..5dc0632930 100644 --- a/test/engine/steps.go +++ b/test/engine/steps.go @@ -100,6 +100,7 @@ func ScenarioInitializer(ctx *godog.ScenarioContext) { // metric ctx.Then(`^there is more than \{(\d+)\} metrics in \{(\d+)\} seconds$`, verify.MetricCount) + ctx.Then(`^there is exactly \{(\d+)\} metrics in \{(\d+)\} interval seconds$`, verify.MetricCount) // other ctx.Then(`wait \{(\d+)\} seconds`, func(ctx context.Context, t int) context.Context { diff --git a/test/engine/verify/count.go b/test/engine/verify/count.go index 0c87246712..dc54494dd4 100644 --- a/test/engine/verify/count.go +++ b/test/engine/verify/count.go @@ -116,6 +116,14 @@ func LogCountLess(ctx context.Context, expect int) (context.Context, error) { } func MetricCheck(ctx context.Context, expect int, duration int64, checker func([]*protocol.LogGroup) error) (context.Context, error) { + var startTime int32 + var enableExactlyCheck bool + value := ctx.Value(config.StartTimeContextKey) + if value != nil { + startTime = value.(int32) + enableExactlyCheck = true + } + println("MetricCheck: startTime", startTime, enableExactlyCheck) timeoutCtx, cancel := context.WithTimeout(context.TODO(), config.TestConfig.RetryTimeout) defer cancel() var groups []*protocol.LogGroup @@ -126,6 +134,11 @@ func MetricCheck(ctx context.Context, expect int, duration int64, checker func([ count = 0 currTime := time.Now().Unix() lastScrapeTime := int32(currTime - duration) + if enableExactlyCheck { + expect = int(int32(currTime)-startTime) / int(duration) + lastScrapeTime = int32(startTime) + } + println("MetricCheck: expect", expect, "duration", duration, "lastScrapeTime", lastScrapeTime) groups, err = subscriber.TestSubscriber.GetData(control.GetQuery(ctx), lastScrapeTime) if err != nil { return err From 6512a3793750b13b4fbce3a480166b79f0f0d48d Mon Sep 17 00:00:00 2001 From: liqiang Date: Mon, 20 Jan 2025 06:01:57 +0000 Subject: [PATCH 2/3] chore: update code style --- test/engine/verify/count.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/engine/verify/count.go b/test/engine/verify/count.go index dc54494dd4..b967054eee 100644 --- a/test/engine/verify/count.go +++ b/test/engine/verify/count.go @@ -136,7 +136,7 @@ func MetricCheck(ctx context.Context, expect int, duration int64, checker func([ lastScrapeTime := int32(currTime - duration) if enableExactlyCheck { expect = int(int32(currTime)-startTime) / int(duration) - lastScrapeTime = int32(startTime) + lastScrapeTime = startTime } println("MetricCheck: expect", expect, "duration", duration, "lastScrapeTime", lastScrapeTime) groups, err = subscriber.TestSubscriber.GetData(control.GetQuery(ctx), lastScrapeTime) From e63e4e873c3a88c6c8a8a282cc39892d84794b92 Mon Sep 17 00:00:00 2001 From: liqiang Date: Wed, 22 Jan 2025 05:50:45 +0000 Subject: [PATCH 3/3] chore: remove log --- test/engine/verify/count.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/engine/verify/count.go b/test/engine/verify/count.go index b967054eee..96a11c7ea3 100644 --- a/test/engine/verify/count.go +++ b/test/engine/verify/count.go @@ -123,7 +123,6 @@ func MetricCheck(ctx context.Context, expect int, duration int64, checker func([ startTime = value.(int32) enableExactlyCheck = true } - println("MetricCheck: startTime", startTime, enableExactlyCheck) timeoutCtx, cancel := context.WithTimeout(context.TODO(), config.TestConfig.RetryTimeout) defer cancel() var groups []*protocol.LogGroup @@ -138,7 +137,6 @@ func MetricCheck(ctx context.Context, expect int, duration int64, checker func([ expect = int(int32(currTime)-startTime) / int(duration) lastScrapeTime = startTime } - println("MetricCheck: expect", expect, "duration", duration, "lastScrapeTime", lastScrapeTime) groups, err = subscriber.TestSubscriber.GetData(control.GetQuery(ctx), lastScrapeTime) if err != nil { return err