first commit
This commit is contained in:
100
framework/kvstore/kvstore_test.go
Normal file
100
framework/kvstore/kvstore_test.go
Normal file
@@ -0,0 +1,100 @@
|
||||
package kvstore
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestStoreSetGetDelete(t *testing.T) {
|
||||
store, err := New(Config{})
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create store: %v", err)
|
||||
}
|
||||
defer store.Close()
|
||||
|
||||
if err := store.Set("k1", "v1"); err != nil {
|
||||
t.Fatalf("set failed: %v", err)
|
||||
}
|
||||
|
||||
v, err := store.Get("k1")
|
||||
if err != nil {
|
||||
t.Fatalf("get failed: %v", err)
|
||||
}
|
||||
if v.(string) != "v1" {
|
||||
t.Fatalf("unexpected value: %v", v)
|
||||
}
|
||||
|
||||
deleted, err := store.Delete("k1")
|
||||
if err != nil {
|
||||
t.Fatalf("delete failed: %v", err)
|
||||
}
|
||||
if !deleted {
|
||||
t.Fatal("expected key to be deleted")
|
||||
}
|
||||
|
||||
if _, err := store.Get("k1"); !errors.Is(err, ErrNotFound) {
|
||||
t.Fatalf("expected ErrNotFound, got: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreTTLExpiration(t *testing.T) {
|
||||
store, err := New(Config{
|
||||
CleanupInterval: 10 * time.Millisecond,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create store: %v", err)
|
||||
}
|
||||
defer store.Close()
|
||||
|
||||
if err := store.SetWithTTL("exp", "value", 25*time.Millisecond); err != nil {
|
||||
t.Fatalf("set with ttl failed: %v", err)
|
||||
}
|
||||
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
|
||||
if _, err := store.Get("exp"); !errors.Is(err, ErrNotFound) {
|
||||
t.Fatalf("expected ErrNotFound after expiry, got: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreGetAndDelete(t *testing.T) {
|
||||
store, err := New(Config{})
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create store: %v", err)
|
||||
}
|
||||
defer store.Close()
|
||||
|
||||
if err := store.Set("k", "v"); err != nil {
|
||||
t.Fatalf("set failed: %v", err)
|
||||
}
|
||||
|
||||
v, err := store.GetAndDelete("k")
|
||||
if err != nil {
|
||||
t.Fatalf("get and delete failed: %v", err)
|
||||
}
|
||||
if v.(string) != "v" {
|
||||
t.Fatalf("unexpected value: %v", v)
|
||||
}
|
||||
|
||||
if _, err := store.Get("k"); !errors.Is(err, ErrNotFound) {
|
||||
t.Fatalf("expected missing key after get-and-delete, got: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreClose(t *testing.T) {
|
||||
store, err := New(Config{})
|
||||
if err != nil {
|
||||
t.Fatalf("failed to create store: %v", err)
|
||||
}
|
||||
if err := store.Close(); err != nil {
|
||||
t.Fatalf("close failed: %v", err)
|
||||
}
|
||||
|
||||
if err := store.Set("k", "v"); !errors.Is(err, ErrClosed) {
|
||||
t.Fatalf("expected ErrClosed on set, got: %v", err)
|
||||
}
|
||||
if _, err := store.Get("k"); !errors.Is(err, ErrClosed) {
|
||||
t.Fatalf("expected ErrClosed on get, got: %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user