diff --git a/cmd/stdiscosrv/database.go b/cmd/stdiscosrv/database.go index f38ec4c27..ce151da3c 100644 --- a/cmd/stdiscosrv/database.go +++ b/cmd/stdiscosrv/database.go @@ -16,6 +16,7 @@ import ( "time" "github.com/syndtr/goleveldb/leveldb" + "github.com/syndtr/goleveldb/leveldb/storage" "github.com/syndtr/goleveldb/leveldb/util" ) @@ -54,6 +55,18 @@ func newLevelDBStore(dir string) (*levelDBStore, error) { }, nil } +func newMemoryLevelDBStore() (*levelDBStore, error) { + db, err := leveldb.Open(storage.NewMemStorage(), nil) + if err != nil { + return nil, err + } + return &levelDBStore{ + db: db, + inbox: make(chan func(), 16), + clock: defaultClock{}, + }, nil +} + func (s *levelDBStore) put(key string, rec DatabaseRecord) error { t0 := time.Now() defer func() { diff --git a/cmd/stdiscosrv/database_test.go b/cmd/stdiscosrv/database_test.go index 781ac0a2a..2596b6b17 100644 --- a/cmd/stdiscosrv/database_test.go +++ b/cmd/stdiscosrv/database_test.go @@ -9,15 +9,12 @@ package main import ( "context" "fmt" - "os" "testing" "time" ) func TestDatabaseGetSet(t *testing.T) { - os.RemoveAll("_database") - defer os.RemoveAll("_database") - db, err := newLevelDBStore("_database") + db, err := newMemoryLevelDBStore() if err != nil { t.Fatal(err) } @@ -119,7 +116,7 @@ func TestDatabaseGetSet(t *testing.T) { // Put a record with misses - rec = DatabaseRecord{Misses: 42} + rec = DatabaseRecord{Misses: 42, Missed: tc.Now().UnixNano()} if err := db.put("efgh", rec); err != nil { t.Fatal(err) } @@ -209,5 +206,6 @@ func (t *testClock) wind(d time.Duration) { } func (t *testClock) Now() time.Time { + t.now = t.now.Add(time.Nanosecond) return t.now }