mirror of
https://github.com/lukaszraczylo/graphql-monitoring-proxy.git
synced 2026-06-05 23:03:48 +00:00
149 lines
3.0 KiB
Go
149 lines
3.0 KiB
Go
package libpack_cache
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
type CacheTestSuite struct {
|
|
suite.Suite
|
|
}
|
|
|
|
func (suite *CacheTestSuite) SetupTest() {
|
|
}
|
|
|
|
func TestCachingTestSuite(t *testing.T) {
|
|
suite.Run(t, new(CacheTestSuite))
|
|
}
|
|
|
|
func (suite *CacheTestSuite) Test_New() {
|
|
suite.T().Run("should return a new cache", func(t *testing.T) {
|
|
cache := New(2 * time.Second)
|
|
suite.NotNil(cache)
|
|
})
|
|
}
|
|
|
|
func (suite *CacheTestSuite) Test_CacheUse() {
|
|
cache := New(30 * time.Second)
|
|
tests := []struct {
|
|
name string
|
|
cache_value string
|
|
}{
|
|
{
|
|
name: "test1",
|
|
cache_value: "test1-123",
|
|
},
|
|
{
|
|
name: "test2",
|
|
cache_value: "test2-123",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
suite.T().Run(tt.name, func(t *testing.T) {
|
|
cache.Set(tt.name, []byte(tt.name), 5*time.Second)
|
|
c, ok := cache.Get(tt.name)
|
|
suite.Equal(true, ok)
|
|
suite.Equal(tt.name, string(c))
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *CacheTestSuite) Test_CacheDelete() {
|
|
cache := New(30 * time.Second)
|
|
tests := []struct {
|
|
name string
|
|
cache_value string
|
|
}{
|
|
{
|
|
name: "test1",
|
|
cache_value: "test1-123",
|
|
},
|
|
{
|
|
name: "test2",
|
|
cache_value: "test2-123",
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
suite.T().Run(tt.name, func(t *testing.T) {
|
|
cache.Set(tt.name, []byte(tt.name), 5*time.Second)
|
|
c, ok := cache.Get(tt.name)
|
|
suite.Equal(true, ok)
|
|
suite.Equal(tt.name, string(c))
|
|
cache.Delete(tt.name)
|
|
c, ok = cache.Get(tt.name)
|
|
suite.Equal(false, ok)
|
|
suite.Equal("", string(c))
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *CacheTestSuite) Test_CacheExpire() {
|
|
cache := New(30 * time.Second)
|
|
tests := []struct {
|
|
name string
|
|
cache_value string
|
|
ttl time.Duration
|
|
}{
|
|
{
|
|
name: "test1",
|
|
cache_value: "test1-123",
|
|
ttl: 2 * time.Second,
|
|
},
|
|
{
|
|
name: "test2",
|
|
cache_value: "test2-123",
|
|
ttl: 5 * time.Second,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
suite.T().Run(tt.name, func(t *testing.T) {
|
|
cache.Set(tt.name, []byte(tt.name), tt.ttl)
|
|
c, ok := cache.Get(tt.name)
|
|
suite.Equal(true, ok)
|
|
suite.Equal(tt.name, string(c))
|
|
time.Sleep(tt.ttl)
|
|
c, ok = cache.Get(tt.name)
|
|
suite.Equal(false, ok)
|
|
suite.Equal("", string(c))
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *CacheTestSuite) Test_CacheCleanExpiredEntries() {
|
|
cache := New(5 * time.Second)
|
|
tests := []struct {
|
|
name string
|
|
cache_value string
|
|
ttl time.Duration
|
|
}{
|
|
{
|
|
name: "test1",
|
|
cache_value: "test1-123",
|
|
ttl: 2 * time.Second,
|
|
},
|
|
{
|
|
name: "test2",
|
|
cache_value: "test2-123",
|
|
ttl: 5 * time.Second,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
suite.T().Run(tt.name, func(t *testing.T) {
|
|
cache.Set(tt.name, []byte(tt.name), tt.ttl)
|
|
c, ok := cache.Get(tt.name)
|
|
suite.Equal(true, ok)
|
|
suite.Equal(tt.name, string(c))
|
|
time.Sleep(tt.ttl)
|
|
c, ok = cache.Get(tt.name)
|
|
suite.Equal(false, ok)
|
|
suite.Equal("", string(c))
|
|
cache.CleanExpiredEntries()
|
|
c, ok = cache.Get(tt.name)
|
|
suite.Equal(false, ok)
|
|
suite.Equal("", string(c))
|
|
})
|
|
}
|
|
}
|