From 682f55de7144b754f67a4b58ff797ad1df4e88bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20Ga=C4=87e=C5=A1a?= Date: Thu, 13 Feb 2025 12:06:31 +0000 Subject: [PATCH] chore: [CODE-3148]: use refcache.SpaceFinder in usage package (#3422) * use refcache.SpaceFinder in usage package --- app/services/usage/mocks.go | 19 ++++--------------- app/services/usage/usage.go | 15 +++++++-------- app/services/usage/usage_test.go | 11 ++++------- app/services/usage/wire.go | 5 +++-- cmd/gitness/wire_gen.go | 2 +- 5 files changed, 19 insertions(+), 33 deletions(-) diff --git a/app/services/usage/mocks.go b/app/services/usage/mocks.go index dc34078a3..27476123a 100644 --- a/app/services/usage/mocks.go +++ b/app/services/usage/mocks.go @@ -40,31 +40,20 @@ func (i *mockInterface) Send( return i.SendFunc(ctx, payload) } -type SpaceStoreMock struct { +type SpaceFinderMock struct { FindByRefFn func( ctx context.Context, spaceRef string, - ) (*types.Space, error) - FindByIDsFn func( - ctx context.Context, - ids ...int64, - ) ([]*types.Space, error) + ) (*types.SpaceCore, error) } -func (s *SpaceStoreMock) FindByRef( +func (s *SpaceFinderMock) FindByRef( ctx context.Context, spaceRef string, -) (*types.Space, error) { +) (*types.SpaceCore, error) { return s.FindByRefFn(ctx, spaceRef) } -func (s *SpaceStoreMock) FindByIDs( - ctx context.Context, - ids ...int64, -) ([]*types.Space, error) { - return s.FindByIDsFn(ctx, ids...) -} - type MetricsMock struct { UpsertOptimisticFn func(ctx context.Context, in *types.UsageMetric) error GetMetricsFn func( diff --git a/app/services/usage/usage.go b/app/services/usage/usage.go index e8eb98aa3..a66122d71 100644 --- a/app/services/usage/usage.go +++ b/app/services/usage/usage.go @@ -35,9 +35,8 @@ type Metric struct { Bandwidth } -type SpaceStore interface { - FindByRef(ctx context.Context, spaceRef string) (*types.Space, error) - FindByIDs(ctx context.Context, spaceIDs ...int64) ([]*types.Space, error) +type SpaceFinder interface { + FindByRef(ctx context.Context, spaceRef string) (*types.SpaceCore, error) } type MetricStore interface { @@ -60,7 +59,7 @@ type Mediator struct { workers []*worker - spaceStore SpaceStore + spaceFinder SpaceFinder metricsStore MetricStore wg sync.WaitGroup @@ -70,13 +69,13 @@ type Mediator struct { func NewMediator( ctx context.Context, - spaceStore SpaceStore, + spaceFinder SpaceFinder, usageMetricsStore MetricStore, config Config, ) *Mediator { m := &Mediator{ queue: newQueue(), - spaceStore: spaceStore, + spaceFinder: spaceFinder, metricsStore: usageMetricsStore, workers: make([]*worker, config.MaxWorkers), config: config, @@ -112,7 +111,7 @@ func (m *Mediator) Wait() { } func (m *Mediator) Size(ctx context.Context, spaceRef string) (Bandwidth, error) { - space, err := m.spaceStore.FindByRef(ctx, spaceRef) + space, err := m.spaceFinder.FindByRef(ctx, spaceRef) if err != nil { return Bandwidth{}, fmt.Errorf("could not find space: %w", err) } @@ -134,7 +133,7 @@ func (m *Mediator) days30() time.Duration { func (m *Mediator) process(ctx context.Context, payload *Metric) { defer m.wg.Done() - space, err := m.spaceStore.FindByRef(ctx, payload.SpaceRef) + space, err := m.spaceFinder.FindByRef(ctx, payload.SpaceRef) if err != nil { log.Ctx(ctx).Err(err).Msg("failed to find space") return diff --git a/app/services/usage/usage_test.go b/app/services/usage/usage_test.go index 5b1b7156b..6be943d4f 100644 --- a/app/services/usage/usage_test.go +++ b/app/services/usage/usage_test.go @@ -27,17 +27,14 @@ import ( ) func TestMediator_basic(t *testing.T) { - space := &types.Space{ + space := &types.SpaceCore{ ID: 1, Identifier: "space", } - spaceMock := &SpaceStoreMock{ - FindByRefFn: func(context.Context, string) (*types.Space, error) { + spaceFinderMock := &SpaceFinderMock{ + FindByRefFn: func(context.Context, string) (*types.SpaceCore, error) { return space, nil }, - FindByIDsFn: func(context.Context, ...int64) ([]*types.Space, error) { - return []*types.Space{space}, nil - }, } out := atomic.Int64{} @@ -74,7 +71,7 @@ func TestMediator_basic(t *testing.T) { defaultSize := 512 mediator := NewMediator( context.Background(), - spaceMock, + spaceFinderMock, usageMock, Config{ MaxWorkers: 5, diff --git a/app/services/usage/wire.go b/app/services/usage/wire.go index 2a203c78e..0f7c576c0 100644 --- a/app/services/usage/wire.go +++ b/app/services/usage/wire.go @@ -17,6 +17,7 @@ package usage import ( "context" + "github.com/harness/gitness/app/services/refcache" "github.com/harness/gitness/app/store" "github.com/harness/gitness/types" @@ -30,7 +31,7 @@ var WireSet = wire.NewSet( func ProvideMediator( ctx context.Context, config *types.Config, - spaceStore store.SpaceStore, + spaceFinder refcache.SpaceFinder, metricsStore store.UsageMetricStore, ) Sender { if !config.UsageMetrics.Enabled { @@ -38,7 +39,7 @@ func ProvideMediator( } return NewMediator( ctx, - spaceStore, + spaceFinder, metricsStore, NewConfig(config), ) diff --git a/cmd/gitness/wire_gen.go b/cmd/gitness/wire_gen.go index bd3da8568..33b77b93f 100644 --- a/cmd/gitness/wire_gen.go +++ b/cmd/gitness/wire_gen.go @@ -501,7 +501,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro genericHandler := api2.NewGenericHandlerProvider(spaceStore, genericController, tokenStore, controller, authenticator, provider, authorizer) handler3 := router.GenericHandlerProvider(genericHandler) appRouter := router.AppRouterProvider(registryOCIHandler, apiHandler, handler2, handler3) - sender := usage.ProvideMediator(ctx, config, spaceStore, usageMetricStore) + sender := usage.ProvideMediator(ctx, config, spaceFinder, usageMetricStore) routerRouter := router2.ProvideRouter(ctx, config, authenticator, repoController, reposettingsController, executionController, logsController, spaceController, pipelineController, secretController, triggerController, connectorController, templateController, pluginController, pullreqController, webhookController, githookController, gitInterface, serviceaccountController, controller, principalController, usergroupController, checkController, systemController, uploadController, keywordsearchController, infraproviderController, gitspaceController, migrateController, aiagentController, capabilitiesController, provider, openapiService, appRouter, sender) serverServer := server2.ProvideServer(config, routerRouter) publickeyService := publickey.ProvidePublicKey(publicKeyStore, principalInfoCache)