diff --git a/go.mod b/go.mod index 0283681b..c46d14f2 100644 --- a/go.mod +++ b/go.mod @@ -24,13 +24,14 @@ require ( ) require ( - github.com/codeready-toolchain/api v0.0.0-20250131222557-beba5463f429 + github.com/codeready-toolchain/api v0.0.0-20250227073728-5999971adb48 github.com/ghodss/yaml v1.0.0 github.com/google/go-cmp v0.6.0 github.com/google/go-github/v52 v52.0.0 github.com/google/uuid v1.6.0 github.com/migueleliasweb/go-github-mock v0.0.18 github.com/prometheus/client_golang v1.18.0 + github.com/prometheus/client_model v0.5.0 golang.org/x/oauth2 v0.12.0 gopkg.in/yaml.v2 v2.4.0 k8s.io/kubectl v0.29.2 @@ -86,7 +87,6 @@ require ( github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.45.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/shopspring/decimal v1.2.0 // indirect diff --git a/go.sum b/go.sum index 67425f18..dc06779f 100644 --- a/go.sum +++ b/go.sum @@ -25,8 +25,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/codeready-toolchain/api v0.0.0-20250131222557-beba5463f429 h1:I7xzHRmstvzucH9NqF54xvsM/yYuWOp/G5+BUr5j4tY= -github.com/codeready-toolchain/api v0.0.0-20250131222557-beba5463f429/go.mod h1:gPwicZPTmRm1PF75ysEYXaYKdXoFgwgCggTJd1oYmOs= +github.com/codeready-toolchain/api v0.0.0-20250227073728-5999971adb48 h1:jqGcYw4KdQzqe5WEp+06HXBRyosAktgO5Y6ADs+NF5A= +github.com/codeready-toolchain/api v0.0.0-20250227073728-5999971adb48/go.mod h1:gPwicZPTmRm1PF75ysEYXaYKdXoFgwgCggTJd1oYmOs= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= diff --git a/pkg/test/metrics/metric.go b/pkg/test/metrics/metric.go index f76e002a..1001f663 100644 --- a/pkg/test/metrics/metric.go +++ b/pkg/test/metrics/metric.go @@ -1,11 +1,14 @@ package metrics import ( + "fmt" "testing" "github.com/prometheus/client_golang/prometheus" promtestutil "github.com/prometheus/client_golang/prometheus/testutil" + promclientgo "github.com/prometheus/client_model/go" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func AssertMetricsCounterEquals(t *testing.T, expected int, c prometheus.Counter) { @@ -27,3 +30,33 @@ func AssertCounterGreaterOrEqualsInt(t *testing.T, threshold int, c prometheus.C func AssertMetricsGaugeEquals(t *testing.T, expected int, g prometheus.Gauge, msgAndArgs ...interface{}) { assert.InDelta(t, float64(expected), promtestutil.ToFloat64(g), 0.01, msgAndArgs...) } + +func AssertHistogramBucketEquals(t *testing.T, expected, bucket float64, h prometheus.Histogram, msgAndArgs ...interface{}) { + metric := promclientgo.Metric{} + err := h.Write(&metric) + require.NoError(t, err) + for _, buck := range metric.GetHistogram().GetBucket() { + if buck.GetUpperBound() == bucket { + assert.Equal(t, uint64(expected), buck.GetCumulativeCount(), msgAndArgs...) // nolint:gosec + return + } + } + assert.Fail(t, fmt.Sprintf("the bucket with the upper limit '%v' wasn't found, actual: %v", bucket, metric.GetHistogram().GetBucket()), msgAndArgs...) +} + +func AssertHistogramSampleCountEquals(t *testing.T, expected uint64, h prometheus.Histogram, msgAndArgs ...interface{}) { + metric := promclientgo.Metric{} + err := h.Write(&metric) + require.NoError(t, err) + assert.Equal(t, expected, metric.GetHistogram().GetSampleCount(), msgAndArgs...) +} + +func AssertAllHistogramBucketsAreEmpty(t *testing.T, h prometheus.Histogram, msgAndArgs ...interface{}) { + metric := promclientgo.Metric{} + err := h.Write(&metric) + require.NoError(t, err) + for _, buck := range metric.GetHistogram().GetBucket() { + assert.Empty(t, buck.GetCumulativeCount(), msgAndArgs...) + } + assert.Empty(t, metric.GetHistogram().GetSampleCount(), msgAndArgs...) +} diff --git a/pkg/test/usersignup/usersignup.go b/pkg/test/usersignup/usersignup.go index 86c0af46..6305fc95 100644 --- a/pkg/test/usersignup/usersignup.go +++ b/pkg/test/usersignup/usersignup.go @@ -228,6 +228,12 @@ func WithAnnotation(key, value string) Modifier { } } +func WithRequestReceivedTimeAnnotation(t time.Time) Modifier { + return func(userSignup *toolchainv1alpha1.UserSignup) { + userSignup.Annotations[toolchainv1alpha1.UserSignupRequestReceivedTimeAnnotationKey] = t.Format(time.RFC3339) + } +} + func WithoutAnnotation(key string) Modifier { return func(userSignup *toolchainv1alpha1.UserSignup) { delete(userSignup.Annotations, key)