chore: [CODE-3148]: use refcache.SpaceFinder in usage package (#3422)

* use refcache.SpaceFinder in usage package
jobatzil/login/xforwardedfor
Marko Gaćeša 2025-02-13 12:06:31 +00:00 committed by Harness
parent f85b6c45c3
commit 682f55de71
5 changed files with 19 additions and 33 deletions

View File

@ -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(

View File

@ -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

View File

@ -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,

View File

@ -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),
)

View File

@ -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)