Files
grafana/pkg/infra/remotecache/database_storage_test.go
T

77 lines
2.0 KiB
Go
Raw Normal View History

2019-03-08 20:49:16 +01:00
package remotecache
2019-02-15 14:31:52 +01:00
import (
2021-12-22 11:02:42 +01:00
"context"
2019-02-15 14:31:52 +01:00
"testing"
"time"
2019-05-13 14:45:54 +08:00
"github.com/grafana/grafana/pkg/infra/log"
2019-02-15 14:31:52 +01:00
"github.com/grafana/grafana/pkg/services/sqlstore"
"github.com/stretchr/testify/assert"
2019-02-15 14:31:52 +01:00
)
func TestDatabaseStorageGarbageCollection(t *testing.T) {
sqlstore := sqlstore.InitTestDB(t)
db := &databaseCache{
SQLStore: sqlstore,
2019-03-14 09:23:35 +01:00
log: log.New("remotecache.database"),
2019-02-15 14:31:52 +01:00
}
obj := &CacheableStruct{String: "foolbar"}
2020-09-22 16:22:19 +02:00
// set time.now to 2 weeks ago
2019-03-07 19:07:11 +01:00
var err error
2019-02-15 14:31:52 +01:00
getTime = func() time.Time { return time.Now().AddDate(0, 0, -2) }
2021-12-22 11:02:42 +01:00
err = db.Set(context.Background(), "key1", obj, 1000*time.Second)
2019-03-07 19:07:11 +01:00
assert.Equal(t, err, nil)
2021-12-22 11:02:42 +01:00
err = db.Set(context.Background(), "key2", obj, 1000*time.Second)
2019-03-07 19:07:11 +01:00
assert.Equal(t, err, nil)
2021-12-22 11:02:42 +01:00
err = db.Set(context.Background(), "key3", obj, 1000*time.Second)
2019-03-07 19:07:11 +01:00
assert.Equal(t, err, nil)
2019-02-15 14:31:52 +01:00
// insert object that should never expire
2021-12-22 11:02:42 +01:00
err = db.Set(context.Background(), "key4", obj, 0)
2019-10-10 16:42:11 +02:00
assert.Equal(t, err, nil)
2019-02-15 14:31:52 +01:00
getTime = time.Now
2021-12-22 11:02:42 +01:00
err = db.Set(context.Background(), "key5", obj, 1000*time.Second)
2019-10-10 16:42:11 +02:00
assert.Equal(t, err, nil)
2019-02-15 14:31:52 +01:00
2020-09-22 16:22:19 +02:00
// run GC
2019-02-15 14:31:52 +01:00
db.internalRunGC()
2020-09-22 16:22:19 +02:00
// try to read values
2021-12-22 11:02:42 +01:00
_, err = db.Get(context.Background(), "key1")
2019-03-07 19:07:11 +01:00
assert.Equal(t, err, ErrCacheItemNotFound, "expected cache item not found. got: ", err)
2021-12-22 11:02:42 +01:00
_, err = db.Get(context.Background(), "key2")
2019-02-15 14:31:52 +01:00
assert.Equal(t, err, ErrCacheItemNotFound)
2021-12-22 11:02:42 +01:00
_, err = db.Get(context.Background(), "key3")
2019-02-15 14:31:52 +01:00
assert.Equal(t, err, ErrCacheItemNotFound)
2021-12-22 11:02:42 +01:00
_, err = db.Get(context.Background(), "key4")
2019-02-15 14:31:52 +01:00
assert.Equal(t, err, nil)
2021-12-22 11:02:42 +01:00
_, err = db.Get(context.Background(), "key5")
2019-02-15 14:31:52 +01:00
assert.Equal(t, err, nil)
}
func TestSecondSet(t *testing.T) {
var err error
sqlstore := sqlstore.InitTestDB(t)
db := &databaseCache{
SQLStore: sqlstore,
log: log.New("remotecache.database"),
}
obj := &CacheableStruct{String: "hey!"}
2021-12-22 11:02:42 +01:00
err = db.Set(context.Background(), "killa-gorilla", obj, 0)
assert.Equal(t, err, nil)
2021-12-22 11:02:42 +01:00
err = db.Set(context.Background(), "killa-gorilla", obj, 0)
assert.Equal(t, err, nil)
}