[management] fix github run id (#3705)

This commit is contained in:
Pascal Fischer 2025-04-18 11:21:54 +02:00 committed by GitHub
parent f686615876
commit 1a6d6b3109
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 36 additions and 26 deletions

View File

@ -482,7 +482,7 @@ jobs:
go test -tags=benchmark \
-run=^$ \
-bench=. \
-exec 'sudo --preserve-env=CI,NETBIRD_STORE_ENGINE,GIT_BRANCH' \
-exec 'sudo --preserve-env=CI,NETBIRD_STORE_ENGINE,GIT_BRANCH,GITHUB_RUN_ID' \
-timeout 20m ./management/...
api_integration_test:

View File

@ -13,6 +13,7 @@ import (
"testing"
"time"
"github.com/prometheus/client_golang/prometheus/push"
log "github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
@ -150,3 +151,28 @@ func BenchmarkDeleteUsers(b *testing.B) {
})
}
}
func TestMain(m *testing.M) {
exitCode := m.Run()
if exitCode == 0 && os.Getenv("CI") == "true" {
runID := os.Getenv("GITHUB_RUN_ID")
storeEngine := os.Getenv("NETBIRD_STORE_ENGINE")
err := push.New("http://localhost:9091", "api_benchmark").
Collector(testing_tools.BenchmarkDuration).
Grouping("ci_run", runID).
Grouping("store_engine", storeEngine).
Push()
if err != nil {
log.Printf("Failed to push metrics: %v", err)
} else {
time.Sleep(1 * time.Minute)
_ = push.New("http://localhost:9091", "api_benchmark").
Grouping("ci_run", runID).
Grouping("store_engine", storeEngine).
Delete()
}
}
os.Exit(exitCode)
}

View File

@ -16,7 +16,6 @@ import (
"github.com/golang-jwt/jwt"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/push"
"github.com/stretchr/testify/assert"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
@ -75,6 +74,14 @@ const (
OperationGetAll = "get_all"
)
var BenchmarkDuration = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "benchmark_duration_ms",
Help: "Benchmark duration per op in ms",
},
[]string{"module", "operation", "test_case", "branch"},
)
type TB interface {
Cleanup(func())
Helper()
@ -324,38 +331,15 @@ func EvaluateBenchmarkResults(b *testing.B, testCase string, duration time.Durat
b.Fatalf("environment variable GIT_BRANCH is not set")
}
storeEngine := os.Getenv("NETBIRD_STORE_ENGINE")
if storeEngine == "" {
b.Fatalf("environment variable NETBIRD_STORE_ENGINE is not set")
}
if recorder.Code != http.StatusOK {
b.Fatalf("Benchmark %s failed: unexpected status code %d", testCase, recorder.Code)
}
msPerOp := float64(duration.Nanoseconds()) / float64(b.N) / 1e6
gauge := prometheus.NewGauge(prometheus.GaugeOpts{
Name: "benchmark_duration_ms",
Help: "Benchmark duration per op in ms",
ConstLabels: prometheus.Labels{
"store_engine": storeEngine,
"module": module,
"operation": operation,
"test_case": testCase,
"branch": branch,
},
})
gauge := BenchmarkDuration.WithLabelValues(module, operation, testCase, branch)
gauge.Set(msPerOp)
if err := push.New("http://localhost:9091", "api_benchmark").
Collector(gauge).
Grouping("ci_run", os.Getenv("GITHUB_RUN_ID")).
Push(); err != nil {
b.Fatalf("Could not push benchmark metric: %v", err)
}
b.ReportMetric(msPerOp, "ms/op")
}