diff --git a/pkg/solver/matcher/matcher_bench_test.go b/pkg/solver/matcher/matcher_bench_test.go new file mode 100644 index 00000000..85fafa42 --- /dev/null +++ b/pkg/solver/matcher/matcher_bench_test.go @@ -0,0 +1,19 @@ +//go:build bench && solver + +package matcher + +import "testing" + +func BenchmarkMatchOffers(b *testing.B) { + testCases := generateMatchTestCases() + b.ResetTimer() + + for i := 0; i < b.N; i++ { + for _, tc := range testCases { + result := matchOffers(tc.resourceOffer, tc.jobOffer) + if result.matched() != tc.shouldMatch { + b.Fatalf("expected match to be %v for case %s", tc.shouldMatch, tc.name) + } + } + } +} diff --git a/pkg/solver/matcher/testutils.go b/pkg/solver/matcher/testutils.go index d0be6447..7467b45d 100644 --- a/pkg/solver/matcher/testutils.go +++ b/pkg/solver/matcher/testutils.go @@ -1,4 +1,4 @@ -//go:build unit +//go:build unit || bench package matcher diff --git a/stack b/stack index 51db9439..a8f76859 100755 --- a/stack +++ b/stack @@ -270,6 +270,11 @@ function integration-tests-solver() { load-local-env go test -v -tags="integration,solver" -count 1 ./... } + +function benchmarks-solver() { + go test -tags="bench,solver" -bench=MatchOffers -benchtime=3s -benchmem ./... +} + ############################################################################ # run #