Files
grafana/pkg/infra/distcache/database_storage_test.go
2019-03-08 09:09:27 +01:00

51 lines
1.1 KiB
Go

package distcache
import (
"testing"
"time"
"github.com/bmizerany/assert"
"github.com/grafana/grafana/pkg/log"
"github.com/grafana/grafana/pkg/services/sqlstore"
)
func TestDatabaseStorageGarbageCollection(t *testing.T) {
sqlstore := sqlstore.InitTestDB(t)
db := &databaseCache{
SQLStore: sqlstore,
log: log.New("distcache.database"),
}
obj := &CacheableStruct{String: "foolbar"}
//set time.now to 2 weeks ago
getTime = func() time.Time { return time.Now().AddDate(0, 0, -2) }
db.Put("key1", obj, 1000*time.Second)
db.Put("key2", obj, 1000*time.Second)
db.Put("key3", obj, 1000*time.Second)
// insert object that should never expire
db.Put("key4", obj, 0)
getTime = time.Now
db.Put("key5", obj, 1000*time.Second)
//run GC
db.internalRunGC()
//try to read values
_, err := db.Get("key1")
assert.Equal(t, err, ErrCacheItemNotFound)
_, err = db.Get("key2")
assert.Equal(t, err, ErrCacheItemNotFound)
_, err = db.Get("key3")
assert.Equal(t, err, ErrCacheItemNotFound)
_, err = db.Get("key4")
assert.Equal(t, err, nil)
_, err = db.Get("key5")
assert.Equal(t, err, nil)
}