From c8093a14f82a97089ad47358ed0686b3913bd141 Mon Sep 17 00:00:00 2001 From: ensiouel <ensiouel@gmail.com> Date: Mon, 18 Dec 2023 14:51:38 +0300 Subject: [PATCH] =?UTF-8?q?refactor:=20=D1=81=D1=82=D1=80=D1=83=D0=BA?= =?UTF-8?q?=D1=82=D1=83=D1=80=D0=B0=20Cache=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=B2?= =?UTF-8?q?=20MemoryCache,=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D1=80=D1=83?= =?UTF-8?q?=D0=BA=D1=82=D0=BE=D1=80=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=B2=20NewMemoryCache?= =?UTF-8?q?=20=D0=B8=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B2=20=D0=BC=D0=B5=D1=81=D1=82=D0=B0=D1=85,=20?= =?UTF-8?q?=D0=B3=D0=B4=D0=B5=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D1=83=D0=B5=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/account/client.go | 6 +- pkg/cache/memory_cache.go | 90 +++++++++++++++++++ .../{cache_test.go => memory_cache_test.go} | 6 +- .../middleware/caching_middleware_test.go | 22 ++--- .../middleware/caching_middleware_test.go | 10 +-- .../middleware/caching_middleware_test.go | 22 ++--- pkg/content/client.go | 18 ++-- pkg/delivery/client/client.go | 8 +- .../middleware/caching_middleware_test.go | 22 ++--- .../middleware/caching_middleware_test.go | 8 +- .../middleware/caching_middleware_test.go | 38 ++++---- .../middleware/caching_middleware_test.go | 8 +- .../middleware/caching_middleware_test.go | 10 +-- .../middleware/caching_middleware_test.go | 8 +- .../middleware/caching_middleware_test.go | 12 +-- .../middleware/caching_middleware_test.go | 14 +-- .../middleware/caching_middleware_test.go | 10 +-- 17 files changed, 201 insertions(+), 111 deletions(-) create mode 100644 pkg/cache/memory_cache.go rename pkg/cache/{cache_test.go => memory_cache_test.go} (93%) diff --git a/pkg/account/client.go b/pkg/account/client.go index 53ae9fb8..112a71f6 100644 --- a/pkg/account/client.go +++ b/pkg/account/client.go @@ -53,9 +53,9 @@ func NewClient(conn *grpc.ClientConn, opts ...Option) *Account { func WithCaching(client *Account, size int, ttl time.Duration) *Account { c := *client - c.Members = serviceMembers.CachingMiddleware(cache.NewCache(size, ttl))(client.Members) - c.Organizations = serviceOrganizations.CachingMiddleware(cache.NewCache(size, ttl))(client.Organizations) - c.Users = serviceUsers.CachingMiddleware(cache.NewCache(size, ttl))(client.Users) + c.Members = serviceMembers.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Members) + c.Organizations = serviceOrganizations.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Organizations) + c.Users = serviceUsers.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Users) return &c } diff --git a/pkg/cache/memory_cache.go b/pkg/cache/memory_cache.go new file mode 100644 index 00000000..12b9b558 --- /dev/null +++ b/pkg/cache/memory_cache.go @@ -0,0 +1,90 @@ +package cache + +import ( + "fmt" + "time" + + "git.perx.ru/perxis/perxis-go/pkg/service" + lru "github.com/hashicorp/golang-lru/v2" + "go.uber.org/zap" +) + +const ( + defaultCacheSize = 1000 + defaultTTL = 30 * time.Second +) + +var _ Cache = &MemoryCache{} + +type MemoryCache struct { + cache *lru.Cache[interface{}, interface{}] + ttl time.Duration + logger *zap.Logger +} + +type item struct { + value interface{} + expiredAt time.Time +} + +func NewMemoryCache(size int, ttl time.Duration, opts ...interface{}) *MemoryCache { + if size == 0 { + size = defaultCacheSize + } + if ttl == 0 { + ttl = defaultTTL + } + c, err := lru.New[interface{}, interface{}](size) + if err != nil { + panic(err) + } + ch := &MemoryCache{ + cache: c, + ttl: ttl, + logger: zap.NewNop(), + } + + for _, o := range opts { + switch p := o.(type) { + case *zap.Logger: + ch.logger = p + } + } + + ch.logger = ch.logger.Named("Cache") + + return ch +} + +func (c *MemoryCache) Set(key, value interface{}) (err error) { + c.cache.Add(key, &item{value: value, expiredAt: time.Now().Add(c.ttl)}) + c.logger.Debug("Set", zap.String("key", fmt.Sprintf("%v", key)), zap.String("ptr", fmt.Sprintf("%p", value))) + return nil +} + +func (c *MemoryCache) Get(key interface{}) (value interface{}, err error) { + val, ok := c.cache.Get(key) + if ok { + v := val.(*item) + if v.expiredAt.Before(time.Now()) { + _ = c.Remove(key) + c.logger.Debug("Expired", zap.String("key", fmt.Sprintf("%v", key)), zap.String("ptr", fmt.Sprintf("%p", v.value))) + return nil, service.ErrNotFound + } + c.logger.Debug("Hit", zap.String("key", fmt.Sprintf("%v", key)), zap.String("ptr", fmt.Sprintf("%p", v.value))) + return v.value, nil + } + c.logger.Debug("Miss", zap.String("key", fmt.Sprintf("%v", key))) + return nil, service.ErrNotFound +} + +func (c *MemoryCache) Remove(key interface{}) (err error) { + present := c.cache.Remove(key) + c.logger.Debug("Remove", zap.String("key", fmt.Sprintf("%v", key))) + + if !present { + err = service.ErrNotFound + } + + return +} diff --git a/pkg/cache/cache_test.go b/pkg/cache/memory_cache_test.go similarity index 93% rename from pkg/cache/cache_test.go rename to pkg/cache/memory_cache_test.go index b0d4304a..b7cf246f 100644 --- a/pkg/cache/cache_test.go +++ b/pkg/cache/memory_cache_test.go @@ -10,7 +10,7 @@ import ( func TestCache(t *testing.T) { t.Run("Simple", func(t *testing.T) { - c := NewCache(10, 0) + c := NewMemoryCache(10, 0) { val, err := c.Get("test_key") @@ -37,7 +37,7 @@ func TestCache(t *testing.T) { } }) t.Run("Value Evicted", func(t *testing.T) { - c := NewCache(1, 0) + c := NewMemoryCache(1, 0) { err := c.Set("test_key_1", "test_val_1") @@ -62,7 +62,7 @@ func TestCache(t *testing.T) { }) t.Run("TTL expired", func(t *testing.T) { - c := NewCache(10, 10*time.Millisecond) + c := NewMemoryCache(10, 10*time.Millisecond) err := c.Set("test_key", "test_val") require.NoError(t, err) diff --git a/pkg/clients/middleware/caching_middleware_test.go b/pkg/clients/middleware/caching_middleware_test.go index b842e118..2a90c1db 100644 --- a/pkg/clients/middleware/caching_middleware_test.go +++ b/pkg/clients/middleware/caching_middleware_test.go @@ -31,7 +31,7 @@ func TestClientsCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}, nil).Once() @@ -52,7 +52,7 @@ func TestClientsCache(t *testing.T) { t.Run("GetBy from cache", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("GetBy", mock.Anything, spaceID, &clients.GetByParams{OAuthClientID: clientID}).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}, nil).Once() @@ -73,7 +73,7 @@ func TestClientsCache(t *testing.T) { t.Run("List", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}}, nil).Once() @@ -92,7 +92,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Update", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}, nil).Once() cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}}, nil).Once() @@ -143,7 +143,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Update(List)", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}}, nil).Once() @@ -172,7 +172,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}, nil).Once() cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}}, nil).Once() @@ -222,7 +222,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Delete(List)", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}}}, nil).Once() @@ -250,7 +250,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Create", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, Name: "client_1"}}, nil).Once() @@ -279,7 +279,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Enable", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) tr := true cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}, Disabled: &tr}, nil).Once() @@ -329,7 +329,7 @@ func TestClientsCache(t *testing.T) { t.Run("After Enable(List)", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) tr := true cs.On("List", mock.Anything, spaceID).Return([]*clients.Client{{ID: cltID, SpaceID: spaceID, OAuth: &clients.OAuth{ClientID: clientID, AuthID: "authID"}, Disabled: &tr}}, nil).Once() @@ -359,7 +359,7 @@ func TestClientsCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { cs := &csmocks.Clients{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID}}, nil).Once() cs.On("Get", mock.Anything, spaceID, cltID).Return(&clients.Client{ID: cltID, SpaceID: spaceID, Name: "client_1", OAuth: &clients.OAuth{ClientID: clientID}}, nil).Once() diff --git a/pkg/collaborators/middleware/caching_middleware_test.go b/pkg/collaborators/middleware/caching_middleware_test.go index b7dc0928..ea2ccadd 100644 --- a/pkg/collaborators/middleware/caching_middleware_test.go +++ b/pkg/collaborators/middleware/caching_middleware_test.go @@ -31,7 +31,7 @@ func TestCollaboratorsCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { cs := &csmocks.Collaborators{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, userID).Return(spaceRole, nil).Once() @@ -48,7 +48,7 @@ func TestCollaboratorsCache(t *testing.T) { t.Run("ListCollaborators from cache", func(t *testing.T) { cs := &csmocks.Collaborators{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("ListCollaborators", mock.Anything, spaceID).Return([]*collaborators.Collaborator{{SpaceID: spaceID, Subject: userID, Role: spaceRole}}, nil).Once() @@ -64,7 +64,7 @@ func TestCollaboratorsCache(t *testing.T) { t.Run("ListSpaces from cache", func(t *testing.T) { cs := &csmocks.Collaborators{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("ListSpaces", mock.Anything, userID).Return([]*collaborators.Collaborator{{SpaceID: spaceID, Subject: userID, Role: spaceRole}}, nil).Once() @@ -81,7 +81,7 @@ func TestCollaboratorsCache(t *testing.T) { t.Run("After Remove", func(t *testing.T) { cs := &csmocks.Collaborators{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, userID).Return(spaceRole, nil).Once() cs.On("ListCollaborators", mock.Anything, spaceID).Return([]*collaborators.Collaborator{{SpaceID: spaceID, Subject: userID, Role: spaceRole}}, nil).Once() @@ -135,7 +135,7 @@ func TestCollaboratorsCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { cs := &csmocks.Collaborators{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(cs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs) cs.On("Get", mock.Anything, spaceID, userID).Return(spaceRole, nil).Once() cs.On("ListCollaborators", mock.Anything, spaceID).Return([]*collaborators.Collaborator{{SpaceID: spaceID, Subject: userID, Role: spaceRole}}, nil).Once() diff --git a/pkg/collections/middleware/caching_middleware_test.go b/pkg/collections/middleware/caching_middleware_test.go index c9e58b68..ac284ce5 100644 --- a/pkg/collections/middleware/caching_middleware_test.go +++ b/pkg/collections/middleware/caching_middleware_test.go @@ -36,7 +36,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() col.On("Get", mock.Anything, spaceID, envID, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() @@ -60,7 +60,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) col.On("Get", mock.Anything, spaceID, envAlias, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() @@ -84,7 +84,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() col.On("Get", mock.Anything, spaceID, envID, colID, mock.Anything).Run(func(args mock.Arguments) { @@ -104,7 +104,7 @@ func TestCollections_Cache(t *testing.T) { // col := &colsmocks.Collections{} // env := &envmocks.Environments{} // - // svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + // svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) // // col.On("List", mock.Anything, spaceID, envID).Return([]*collections.Collection{{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}}, nil).Once() // env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() @@ -130,7 +130,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) col.On("List", mock.Anything, spaceID, envAlias, mock.Anything).Return([]*collections.Collection{{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}}, nil).Once() col.On("List", mock.Anything, spaceID, envID, mock.Anything).Return([]*collections.Collection{{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}}, nil).Once() @@ -150,7 +150,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() col.On("Get", mock.Anything, spaceID, envID, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() @@ -199,7 +199,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() //env.On("Get", mock.Anything, spaceID, envAlias).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() @@ -252,7 +252,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Twice() col.On("Get", mock.Anything, spaceID, envID, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() @@ -317,7 +317,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Twice() col.On("Get", mock.Anything, spaceID, envID, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() @@ -379,7 +379,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) //env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() col.On("List", mock.Anything, spaceID, envID, mock.Anything).Return([]*collections.Collection{{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}}, nil).Twice() @@ -430,7 +430,7 @@ func TestCollections_Cache(t *testing.T) { col := &colsmocks.Collections{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), env)(col) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil) col.On("Get", mock.Anything, spaceID, envID, colID).Return(&collections.Collection{ID: colID, SpaceID: spaceID, EnvID: envID, Name: "name"}, nil).Once() diff --git a/pkg/content/client.go b/pkg/content/client.go index af5ba5bf..bbdd62bb 100644 --- a/pkg/content/client.go +++ b/pkg/content/client.go @@ -76,15 +76,15 @@ func NewClient(conn *grpc.ClientConn, opts ...Option) *Content { func WithCaching(client *Content, size int, ttl time.Duration) *Content { c := *client - c.Clients = clientsSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Clients) - c.Environments = environmentsSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Environments) - c.Locales = localesSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Locales) - c.Roles = rolesSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Roles) - c.Spaces = spacesSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Spaces) - c.Items = itemsSvc.CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), c.Environments)(client.Items) - c.Collections = collectionsSvc.CachingMiddleware(cache.NewCache(size, ttl), c.Environments)(client.Collections) - c.Collaborators = collaboratorsSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Collaborators) - c.Invitations = invitationsSvc.CachingMiddleware(cache.NewCache(size, ttl))(client.Invitations) + c.Clients = clientsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Clients) + c.Environments = environmentsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Environments) + c.Locales = localesSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Locales) + c.Roles = rolesSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Roles) + c.Spaces = spacesSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Spaces) + c.Items = itemsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), c.Environments)(client.Items) + c.Collections = collectionsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl), c.Environments)(client.Collections) + c.Collaborators = collaboratorsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Collaborators) + c.Invitations = invitationsSvc.CachingMiddleware(cache.NewMemoryCache(size, ttl))(client.Invitations) return &c } diff --git a/pkg/delivery/client/client.go b/pkg/delivery/client/client.go index 1de0dd68..e3fb962c 100644 --- a/pkg/delivery/client/client.go +++ b/pkg/delivery/client/client.go @@ -44,10 +44,10 @@ func NewClient(conn *grpc.ClientConn, opts ...Option) (delivery.Delivery, error) func WithCaching(cfg *deliveryservice.Config, size int, ttl time.Duration) *deliveryservice.Config { c := *cfg - c.Environments = environments.CachingMiddleware(cache.NewCache(size, ttl))(cfg.Environments) - c.Locales = locales.CachingMiddleware(cache.NewCache(size, ttl))(cfg.Locales) - c.Items = items.CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), c.Environments)(cfg.Items) - c.Collections = collections.CachingMiddleware(cache.NewCache(size, ttl), c.Environments)(cfg.Collections) + c.Environments = environments.CachingMiddleware(cache.NewMemoryCache(size, ttl))(cfg.Environments) + c.Locales = locales.CachingMiddleware(cache.NewMemoryCache(size, ttl))(cfg.Locales) + c.Items = items.CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), c.Environments)(cfg.Items) + c.Collections = collections.CachingMiddleware(cache.NewMemoryCache(size, ttl), c.Environments)(cfg.Collections) return &c } diff --git a/pkg/environments/middleware/caching_middleware_test.go b/pkg/environments/middleware/caching_middleware_test.go index 2e1b73a8..784ce356 100644 --- a/pkg/environments/middleware/caching_middleware_test.go +++ b/pkg/environments/middleware/caching_middleware_test.go @@ -31,7 +31,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}, nil).Once() @@ -52,7 +52,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("Get from cache(by Alias)", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envAlias).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}, nil).Once() @@ -73,7 +73,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("List from cache", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment"}}, nil).Once() @@ -91,7 +91,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After SetAlias", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{"envID2"}}, nil).Once() envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{"envID2"}}}, nil).Once() @@ -135,7 +135,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After RemoveAlias", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{"envID2", envAlias}}, nil).Once() envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{"envID2", envAlias}}}, nil).Once() @@ -184,7 +184,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After Update", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}, nil).Once() envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}}, nil).Once() @@ -235,7 +235,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After Update(List)", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}}, nil).Once() envs.On("Update", mock.Anything, mock.Anything).Return(nil).Once() @@ -262,7 +262,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}, nil).Once() envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment", Aliases: []string{envAlias}}}, nil).Once() @@ -311,7 +311,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After Create", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("List", mock.Anything, spaceID).Return([]*environments.Environment{{ID: envID, SpaceID: spaceID, Description: "Environment"}}, nil).Once() @@ -338,7 +338,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After size exceeded", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(1, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(1, ttl))(envs) envs.On("Get", mock.Anything, spaceID, "envID2").Return(&environments.Environment{ID: "envID2", SpaceID: spaceID, Description: "Environment2"}, nil).Once() envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment"}, nil).Once() @@ -364,7 +364,7 @@ func TestEnvironmentsCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { envs := &mocksenvironments.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(envs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs) envs.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Description: "Environment"}, nil).Once() v1, err := svc.Get(ctx, spaceID, envID) diff --git a/pkg/invitations/middleware/caching_middleware_test.go b/pkg/invitations/middleware/caching_middleware_test.go index 8c83d76e..e7fac6f5 100644 --- a/pkg/invitations/middleware/caching_middleware_test.go +++ b/pkg/invitations/middleware/caching_middleware_test.go @@ -32,7 +32,7 @@ func TestLocalesCache(t *testing.T) { t.Run("Get from Cache", func(t *testing.T) { inv := &invmocks.Invitations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(inv) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv) inv.On("Get", mock.Anything, invID).Return(&invitations.Invitation{ID: invID, Email: email, OrgID: orgID}, nil).Once() @@ -50,7 +50,7 @@ func TestLocalesCache(t *testing.T) { t.Run("Get from Accept", func(t *testing.T) { inv := &invmocks.Invitations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(inv) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv) inv.On("Get", mock.Anything, invID).Return(&invitations.Invitation{ID: invID, Email: email, OrgID: orgID}, nil).Once() @@ -77,7 +77,7 @@ func TestLocalesCache(t *testing.T) { t.Run("Get from Delete", func(t *testing.T) { inv := &invmocks.Invitations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(inv) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv) inv.On("Get", mock.Anything, invID).Return(&invitations.Invitation{ID: invID, Email: email, OrgID: orgID}, nil).Once() @@ -104,7 +104,7 @@ func TestLocalesCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { inv := &invmocks.Invitations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(inv) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv) inv.On("Get", mock.Anything, invID).Return(&invitations.Invitation{ID: invID, Email: email, OrgID: orgID}, nil).Once() diff --git a/pkg/items/middleware/caching_middleware_test.go b/pkg/items/middleware/caching_middleware_test.go index b7ea569d..c3e862b1 100644 --- a/pkg/items/middleware/caching_middleware_test.go +++ b/pkg/items/middleware/caching_middleware_test.go @@ -37,7 +37,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -61,7 +61,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envAlias, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -85,7 +85,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envID, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -109,7 +109,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envAlias, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -138,7 +138,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Twice() itms.On("GetPublished", mock.Anything, spaceID, envAlias, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -176,7 +176,7 @@ func TestItemsCache(t *testing.T) { env := &envmocks.Environments{} env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, Data: map[string]interface{}{"f1": "d1"}}, nil).Once() @@ -208,7 +208,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -241,7 +241,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -273,7 +273,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished}, nil).Once() @@ -313,7 +313,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished}, nil).Once() @@ -346,7 +346,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -379,7 +379,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, Data: map[string]interface{}{"f1": "d1"}}, nil).Once() @@ -412,7 +412,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished}, nil).Once() @@ -445,7 +445,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envID, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished, Data: map[string]interface{}{"f1": "d1"}}, nil).Once() @@ -486,7 +486,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envID, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() @@ -527,7 +527,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envID, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished}, nil).Once() @@ -568,7 +568,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("GetPublished", mock.Anything, spaceID, envID, colID, itemID, mock.Anything).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StatePublished}, nil).Once() @@ -609,7 +609,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() @@ -657,7 +657,7 @@ func TestItemsCache(t *testing.T) { itms := &itmsmocks.Items{} env := &envmocks.Environments{} - svc := CachingMiddleware(cache.NewCache(size, ttl), cache.NewCache(size, ttl), env)(itms) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms) env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once() itms.On("Get", mock.Anything, spaceID, envID, colID, itemID).Return(&items.Item{ID: itemID, SpaceID: spaceID, EnvID: envID, CollectionID: colID, State: items.StateDraft}, nil).Once() diff --git a/pkg/locales/middleware/caching_middleware_test.go b/pkg/locales/middleware/caching_middleware_test.go index d39e78d7..281aa496 100644 --- a/pkg/locales/middleware/caching_middleware_test.go +++ b/pkg/locales/middleware/caching_middleware_test.go @@ -28,7 +28,7 @@ func TestLocalesCache(t *testing.T) { t.Run("List from Cache", func(t *testing.T) { loc := &locmocks.Locales{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(loc) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc) loc.On("List", mock.Anything, spaceID).Return([]*locales.Locale{{ID: loc1, Name: "name1", SpaceID: spaceID}}, nil).Once() @@ -46,7 +46,7 @@ func TestLocalesCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { loc := &locmocks.Locales{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(loc) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc) loc.On("List", mock.Anything, spaceID).Return([]*locales.Locale{{ID: loc1, Name: "name1", SpaceID: spaceID}}, nil).Once() @@ -74,7 +74,7 @@ func TestLocalesCache(t *testing.T) { t.Run("After Create", func(t *testing.T) { loc := &locmocks.Locales{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(loc) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc) loc.On("List", mock.Anything, spaceID).Return([]*locales.Locale{{ID: loc1, Name: "name1", SpaceID: spaceID}}, nil).Once() @@ -106,7 +106,7 @@ func TestLocalesCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { loc := &locmocks.Locales{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(loc) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc) loc.On("List", mock.Anything, spaceID).Return([]*locales.Locale{{ID: loc1, Name: "name1", SpaceID: spaceID}}, nil).Once() diff --git a/pkg/members/middleware/caching_middleware_test.go b/pkg/members/middleware/caching_middleware_test.go index 4564dbe4..eda7eb3a 100644 --- a/pkg/members/middleware/caching_middleware_test.go +++ b/pkg/members/middleware/caching_middleware_test.go @@ -26,7 +26,7 @@ func TestMembersCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { mbrs := &mocksmembers.Members{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(mbrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs) mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once() @@ -43,7 +43,7 @@ func TestMembersCache(t *testing.T) { t.Run("Invalidate cache", func(t *testing.T) { t.Run("After Set", func(t *testing.T) { mbrs := &mocksmembers.Members{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(mbrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs) mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once() @@ -69,7 +69,7 @@ func TestMembersCache(t *testing.T) { t.Run("After Remove", func(t *testing.T) { mbrs := &mocksmembers.Members{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(mbrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs) mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once() @@ -96,7 +96,7 @@ func TestMembersCache(t *testing.T) { t.Run("After RemoveAll", func(t *testing.T) { mbrs := &mocksmembers.Members{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(mbrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs) mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once() mbrs.On("ListMembers", mock.Anything, orgId).Return([]*members.Member{{OrgId: orgId, UserId: userId, Role: members.RoleOwner}}, nil) @@ -124,7 +124,7 @@ func TestMembersCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { mbrs := &mocksmembers.Members{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(mbrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs) mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once() diff --git a/pkg/organizations/middleware/caching_middleware_test.go b/pkg/organizations/middleware/caching_middleware_test.go index f468baf0..19cd14d5 100644 --- a/pkg/organizations/middleware/caching_middleware_test.go +++ b/pkg/organizations/middleware/caching_middleware_test.go @@ -28,7 +28,7 @@ func TestOrganizationsCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { orgs := &mocksorgs.Organizations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(orgs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs) orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once() @@ -45,7 +45,7 @@ func TestOrganizationsCache(t *testing.T) { t.Run("Invalidate cache", func(t *testing.T) { t.Run("After Update", func(t *testing.T) { orgs := &mocksorgs.Organizations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(orgs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs) orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once() @@ -70,7 +70,7 @@ func TestOrganizationsCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { orgs := &mocksorgs.Organizations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(orgs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs) orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once() @@ -94,7 +94,7 @@ func TestOrganizationsCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { orgs := &mocksorgs.Organizations{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(orgs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs) orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once() diff --git a/pkg/roles/middleware/caching_middleware_test.go b/pkg/roles/middleware/caching_middleware_test.go index ff0165f8..9d5d64f4 100644 --- a/pkg/roles/middleware/caching_middleware_test.go +++ b/pkg/roles/middleware/caching_middleware_test.go @@ -30,7 +30,7 @@ func TestRolesCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("Get", mock.Anything, spaceID, roleID).Return(&roles.Role{ID: roleID, SpaceID: spaceID, Description: "Role"}, nil).Once() @@ -47,7 +47,7 @@ func TestRolesCache(t *testing.T) { t.Run("List from cache", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("List", mock.Anything, spaceID).Return([]*roles.Role{{ID: roleID, SpaceID: spaceID, Description: "Role"}}, nil).Once() @@ -65,7 +65,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Update", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("Get", mock.Anything, spaceID, roleID).Return(&roles.Role{ID: roleID, SpaceID: spaceID, Description: "Role"}, nil).Once() rl.On("List", mock.Anything, spaceID).Return([]*roles.Role{{ID: roleID, SpaceID: spaceID, Description: "Role"}}, nil).Once() @@ -106,7 +106,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("Get", mock.Anything, spaceID, roleID).Return(&roles.Role{ID: roleID, SpaceID: spaceID, Description: "Role"}, nil).Once() rl.On("List", mock.Anything, spaceID).Return([]*roles.Role{{ID: roleID, SpaceID: spaceID, Description: "Role"}}, nil).Once() @@ -149,7 +149,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Create", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("List", mock.Anything, spaceID).Return([]*roles.Role{{ID: roleID, SpaceID: spaceID, Description: "Role"}}, nil).Once() @@ -177,7 +177,7 @@ func TestRolesCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { rl := &rsmocks.Roles{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(rl) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl) rl.On("Get", mock.Anything, spaceID, roleID).Return(&roles.Role{ID: roleID, SpaceID: spaceID, Description: "Role"}, nil).Once() diff --git a/pkg/spaces/middleware/caching_middleware_test.go b/pkg/spaces/middleware/caching_middleware_test.go index a79a136f..e87ceb38 100644 --- a/pkg/spaces/middleware/caching_middleware_test.go +++ b/pkg/spaces/middleware/caching_middleware_test.go @@ -31,7 +31,7 @@ func TestRolesCache(t *testing.T) { t.Run("Get from cache", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("Get", mock.Anything, spaceID).Return(&spaces.Space{ID: spaceID, OrgID: orgID, Name: "Space"}, nil).Once() @@ -48,7 +48,7 @@ func TestRolesCache(t *testing.T) { t.Run("List from cache", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("List", mock.Anything, orgID).Return([]*spaces.Space{{ID: spaceID, OrgID: orgID, Name: "Space"}}, nil).Once() @@ -66,7 +66,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Update", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("Get", mock.Anything, spaceID).Return(&spaces.Space{ID: spaceID, OrgID: orgID, Name: "Space"}, nil).Once() sp.On("List", mock.Anything, orgID).Return([]*spaces.Space{{ID: spaceID, OrgID: orgID, Name: "Space"}}, nil).Once() @@ -107,7 +107,7 @@ func TestRolesCache(t *testing.T) { t.Run("After UpdateConfig", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("Get", mock.Anything, spaceID).Return(&spaces.Space{ID: spaceID, OrgID: orgID, Name: "Space"}, nil).Once() sp.On("List", mock.Anything, orgID).Return([]*spaces.Space{{ID: spaceID, OrgID: orgID, Name: "Space"}}, nil).Once() @@ -148,7 +148,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Delete", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("Get", mock.Anything, spaceID).Return(&spaces.Space{ID: spaceID, OrgID: orgID, Name: "Space"}, nil).Once() sp.On("List", mock.Anything, orgID).Return([]*spaces.Space{{ID: spaceID, OrgID: orgID, Name: "Space"}}, nil).Once() @@ -189,7 +189,7 @@ func TestRolesCache(t *testing.T) { t.Run("After Create", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("List", mock.Anything, orgID).Return([]*spaces.Space{{ID: spaceID, OrgID: orgID, Name: "Space"}}, nil).Once() @@ -217,7 +217,7 @@ func TestRolesCache(t *testing.T) { t.Run("After TTL expired", func(t *testing.T) { sp := &spmocks.Spaces{} - svc := CachingMiddleware(cache.NewCache(size, ttl))(sp) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp) sp.On("Get", mock.Anything, spaceID).Return(&spaces.Space{ID: spaceID, OrgID: orgID, Name: "Space"}, nil).Once() diff --git a/pkg/users/middleware/caching_middleware_test.go b/pkg/users/middleware/caching_middleware_test.go index fde23379..edc9176b 100644 --- a/pkg/users/middleware/caching_middleware_test.go +++ b/pkg/users/middleware/caching_middleware_test.go @@ -29,7 +29,7 @@ func TestUsersCache(t *testing.T) { usrs := &mocks.Users{} ctx := context.Background() - svc := CachingMiddleware(cache.NewCache(size, ttl))(usrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs) usrs.On("Get", mock.Anything, userID).Return(&users.User{ID: userID, Name: "User", Identities: []string{identity}}, nil).Once() @@ -51,7 +51,7 @@ func TestUsersCache(t *testing.T) { usrs := &mocks.Users{} ctx := context.Background() - svc := CachingMiddleware(cache.NewCache(size, ttl))(usrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs) usrs.On("GetByIdentity", mock.Anything, identity).Return(&users.User{ID: userID, Name: "User", Identities: []string{identity}}, nil).Once() @@ -74,7 +74,7 @@ func TestUsersCache(t *testing.T) { usrs := &mocks.Users{} ctx := context.Background() - svc := CachingMiddleware(cache.NewCache(size, ttl))(usrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs) usrs.On("Get", mock.Anything, userID).Return(&users.User{ID: userID, Name: "User", Identities: []string{identity}}, nil).Once() usrs.On("Update", mock.Anything, mock.Anything).Return(nil).Once() @@ -107,7 +107,7 @@ func TestUsersCache(t *testing.T) { usrs := &mocks.Users{} ctx := context.Background() - svc := CachingMiddleware(cache.NewCache(size, ttl))(usrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs) usrs.On("Get", mock.Anything, userID).Return(&users.User{ID: userID, Name: "User", Identities: []string{identity}}, nil).Once() usrs.On("Delete", mock.Anything, mock.Anything).Return(nil).Once() @@ -140,7 +140,7 @@ func TestUsersCache(t *testing.T) { usrs := &mocks.Users{} ctx := context.Background() - svc := CachingMiddleware(cache.NewCache(size, ttl))(usrs) + svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs) usrs.On("Get", mock.Anything, userID).Return(&users.User{ID: userID, Name: "User", Identities: []string{identity}}, nil).Once() -- GitLab