database_storage_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package distcache
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/bmizerany/assert"
  6. "github.com/grafana/grafana/pkg/log"
  7. "github.com/grafana/grafana/pkg/services/sqlstore"
  8. )
  9. func TestDatabaseStorageGarbageCollection(t *testing.T) {
  10. sqlstore := sqlstore.InitTestDB(t)
  11. db := &databaseCache{
  12. SQLStore: sqlstore,
  13. log: log.New("distcache.database"),
  14. }
  15. obj := &CacheableStruct{String: "foolbar"}
  16. //set time.now to 2 weeks ago
  17. getTime = func() time.Time { return time.Now().AddDate(0, 0, -2) }
  18. db.Put("key1", obj, 1000*time.Second)
  19. db.Put("key2", obj, 1000*time.Second)
  20. db.Put("key3", obj, 1000*time.Second)
  21. // insert object that should never expire
  22. db.Put("key4", obj, 0)
  23. getTime = time.Now
  24. db.Put("key5", obj, 1000*time.Second)
  25. //run GC
  26. db.internalRunGC()
  27. //try to read values
  28. _, err := db.Get("key1")
  29. assert.Equal(t, err, ErrCacheItemNotFound)
  30. _, err = db.Get("key2")
  31. assert.Equal(t, err, ErrCacheItemNotFound)
  32. _, err = db.Get("key3")
  33. assert.Equal(t, err, ErrCacheItemNotFound)
  34. _, err = db.Get("key4")
  35. assert.Equal(t, err, nil)
  36. _, err = db.Get("key5")
  37. assert.Equal(t, err, nil)
  38. }