diff --git a/pkg/infra/usagestats/service.go b/pkg/infra/usagestats/service.go index 9dc3be51fb2..6c82e1e714f 100644 --- a/pkg/infra/usagestats/service.go +++ b/pkg/infra/usagestats/service.go @@ -21,6 +21,12 @@ func init() { registry.RegisterService(&UsageStatsService{}) } +type UsageStats interface { + GetUsageReport() (UsageReport, error) + + RegisterMetric(name string, fn MetricFunc) +} + type MetricFunc func() (interface{}, error) type UsageStatsService struct { diff --git a/pkg/infra/usagestats/usage_stats_test.go b/pkg/infra/usagestats/usage_stats_test.go index d779ad4b159..356fd6b108e 100644 --- a/pkg/infra/usagestats/usage_stats_test.go +++ b/pkg/infra/usagestats/usage_stats_test.go @@ -25,6 +25,17 @@ import ( "github.com/stretchr/testify/assert" ) +// This is to ensure that the interface contract is held by the implementation +func Test_InterfaceContractValidity(t *testing.T) { + newUsageStats := func() UsageStats { + return &UsageStatsService{} + } + v, ok := newUsageStats().(*UsageStatsService) + + assert.NotNil(t, v) + assert.True(t, ok) +} + func TestMetrics(t *testing.T) { t.Run("When sending usage stats", func(t *testing.T) { uss := &UsageStatsService{