Files
storage/surrealdb/surrealdb_test.go
2025-04-08 02:51:31 +03:00

122 lines
2.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package surrealdb
import (
"encoding/json"
"fmt"
"github.com/stretchr/testify/require"
"os"
"testing"
"time"
)
var testStore *Storage
var testConfig = ConfigDefault
func TestMain(m *testing.M) {
var err error
testStore, err = New(testConfig)
if err != nil {
panic(err)
}
code := m.Run()
if err := testStore.Close(); err != nil {
fmt.Fprintf(os.Stderr, "failed to close store: %v\n", err)
}
os.Exit(code)
}
func Test_Surrealdb_Create(t *testing.T) {
err := testStore.Set("create", []byte("test12345"), 0)
require.NoError(t, err)
}
func Test_Surrealdb_CreateAndGet(t *testing.T) {
err := testStore.Set("createandget", []byte("test1234"), 0)
require.NoError(t, err)
get, err := testStore.Get("createandget")
require.NoError(t, err)
require.NotEmpty(t, get)
}
func Test_Surrealdb_ListTable(t *testing.T) {
bytes, err := testStore.List()
require.NoError(t, err)
require.NotEmpty(t, bytes)
}
func Test_Surrealdb_Get_WithNoErr(t *testing.T) {
get, err := testStore.Get("create")
require.NoError(t, err)
require.NotEmpty(t, get)
}
func Test_Surrealdb_Delete(t *testing.T) {
err := testStore.Set("delete", []byte("delete1234"), 0)
require.NoError(t, err)
err = testStore.Delete("delete")
require.NoError(t, err)
}
func Test_Surrealdb_Flush(t *testing.T) {
err := testStore.Reset()
require.NoError(t, err)
}
func Test_Surrealdb_GetExpired(t *testing.T) {
err := testStore.Set("temp", []byte("value"), 1*time.Second)
require.NoError(t, err)
time.Sleep(2 * time.Second)
val, err := testStore.Get("temp")
require.NoError(t, err)
require.Nil(t, val)
}
func Test_Surrealdb_GetMissing(t *testing.T) {
val, err := testStore.Get("non-existent-key")
require.NoError(t, err)
require.Nil(t, val)
}
func Test_Surrealdb_ListSkipsExpired(t *testing.T) {
_ = testStore.Reset()
// Geçerli kayıt
_ = testStore.Set("valid", []byte("123"), 0)
// Süresi geçen kayıt
_ = testStore.Set("expired", []byte("456"), 1*time.Second)
time.Sleep(2 * time.Second)
// List çağrısı
data, err := testStore.List()
require.NoError(t, err)
var result map[string][]byte
err = json.Unmarshal(data, &result)
require.NoError(t, err)
require.Contains(t, result, "valid")
require.NotContains(t, result, "expired")
}
func BenchmarkSet(b *testing.B) {
store, err := New(ConfigDefault)
if err != nil {
b.Fatalf("failed to init storage: %v", err)
}
defer store.Close()
for i := 0; i < b.N; i++ {
key := fmt.Sprintf("bench-key-%d-%d", i, time.Now().UnixNano())
err := store.Set(fmt.Sprintf("bench-key-%d", key), []byte("value"), 0)
if err != nil {
b.Errorf("Set failed: %v", err)
}
}
}