aboutsummaryrefslogtreecommitdiffstats
path: root/conn_test.go
diff options
context:
space:
mode:
authorMarc Pervaz Boocha <marcpervaz@qburst.com>2025-02-25 09:47:02 +0530
committerMarc Pervaz Boocha <marcpervaz@qburst.com>2025-02-27 13:38:14 +0530
commita5194b3be4768d42b27ef9e2d0d52479e0436758 (patch)
tree4e60b1b790e63b8aaf8dba77acbfe4599dedbee0 /conn_test.go
parentAdd additional test cases to improve coverage and robustness (diff)
downloadcache-a5194b3be4768d42b27ef9e2d0d52479e0436758.tar
cache-a5194b3be4768d42b27ef9e2d0d52479e0436758.tar.gz
cache-a5194b3be4768d42b27ef9e2d0d52479e0436758.tar.bz2
cache-a5194b3be4768d42b27ef9e2d0d52479e0436758.tar.lz
cache-a5194b3be4768d42b27ef9e2d0d52479e0436758.tar.xz
cache-a5194b3be4768d42b27ef9e2d0d52479e0436758.tar.zst
cache-a5194b3be4768d42b27ef9e2d0d52479e0436758.zip
Removed testify and improved tests
Diffstat (limited to 'conn_test.go')
-rw-r--r--conn_test.go128
1 files changed, 70 insertions, 58 deletions
diff --git a/conn_test.go b/conn_test.go
index d6c284e..a97a5e9 100644
--- a/conn_test.go
+++ b/conn_test.go
@@ -1,39 +1,25 @@
package cache
import (
- "fmt"
+ "strconv"
"testing"
"time"
- "github.com/stretchr/testify/assert"
+ "errors"
)
-func setupTestDB[K any, V any](t testing.TB) *DB[K, V] {
- t.Helper()
+func setupTestDB[K any, V any](tb testing.TB) *DB[K, V] {
+ tb.Helper()
db, err := OpenMem[K, V]()
- assert.NoError(t, err)
- t.Cleanup(func() {
+ if err != nil {
+ tb.Fatalf("unexpected error: %v", err)
+ }
+ tb.Cleanup(func() {
db.Close()
})
- return &db
-func TestDBConcurrentAccess(t *testing.T) {
- db := setupTestDB[string, string](t)
-
- go func() {
- for i := 0; i < 100; i++ {
- db.Set(fmt.Sprintf("Key%d", i), "Value", 0)
- }
- }()
- go func() {
- for i := 0; i < 100; i++ {
- db.GetValue(fmt.Sprintf("Key%d", i))
- }
- }()
-
- // Allow some time for goroutines to complete
- time.Sleep(1 * time.Second)
+ return &db
}
func TestDBGetSet(t *testing.T) {
@@ -45,15 +31,22 @@ func TestDBGetSet(t *testing.T) {
db := setupTestDB[string, string](t)
want := "Value"
- err := db.Set("Key", want, 1*time.Hour)
- assert.NoError(t, err)
+
+ if err := db.Set("Key", want, 1*time.Hour); err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
got, ttl, err := db.GetValue("Key")
- assert.NoError(t, err)
- assert.Equal(t, want, got)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if want != got {
+ t.Fatalf("expected: %v, got: %v", want, got)
+ }
- now := time.Now()
- assert.WithinDuration(t, now.Add(ttl), now.Add(1*time.Hour), 1*time.Millisecond)
+ if ttl.Round(time.Second) != 1*time.Hour {
+ t.Fatalf("expected duration %v, got: %v", time.Hour, ttl.Round(time.Second))
+ }
})
t.Run("Not Exists", func(t *testing.T) {
@@ -61,8 +54,9 @@ func TestDBGetSet(t *testing.T) {
db := setupTestDB[string, string](t)
- _, _, err := db.GetValue("Key")
- assert.ErrorIs(t, err, ErrKeyNotFound)
+ if _, _, err := db.GetValue("Key"); !errors.Is(err, ErrKeyNotFound) {
+ t.Fatalf("expected error: %v, got: %v", ErrKeyNotFound, err)
+ }
})
t.Run("Update", func(t *testing.T) {
@@ -70,16 +64,22 @@ func TestDBGetSet(t *testing.T) {
db := setupTestDB[string, string](t)
- err := db.Set("Key", "Other", 0)
- assert.NoError(t, err)
+ if err := db.Set("Key", "Other", 0); err != nil {
+ t.Fatalf("expected no error, got: %v", err)
+ }
want := "Value"
- err = db.Set("Key", want, 0)
- assert.NoError(t, err)
+ if err := db.Set("Key", want, 0); err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
got, _, err := db.GetValue("Key")
- assert.NoError(t, err)
- assert.Equal(t, want, got)
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if want != got {
+ t.Fatalf("expected: %v, got: %v", want, got)
+ }
})
t.Run("Key Expiry", func(t *testing.T) {
@@ -87,13 +87,15 @@ func TestDBGetSet(t *testing.T) {
db := setupTestDB[string, string](t)
- err := db.Set("Key", "Value", 500*time.Millisecond)
- assert.NoError(t, err)
+ if err := db.Set("Key", "Value", 500*time.Millisecond); err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
time.Sleep(600 * time.Millisecond)
- _, _, err = db.GetValue("Key")
- assert.ErrorIs(t, err, ErrKeyNotFound)
+ if _, _, err := db.GetValue("Key"); !errors.Is(err, ErrKeyNotFound) {
+ t.Fatalf("expected error: %v, got: %v", ErrKeyNotFound, err)
+ }
})
}
@@ -105,14 +107,17 @@ func TestDBDelete(t *testing.T) {
db := setupTestDB[string, string](t)
want := "Value"
- err := db.Set("Key", want, 0)
- assert.NoError(t, err)
+ if err := db.Set("Key", want, 0); err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
- err = db.Delete("Key")
- assert.NoError(t, err)
+ if err := db.Delete("Key"); err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
- _, _, err = db.GetValue("Key")
- assert.ErrorIs(t, err, ErrKeyNotFound)
+ if _, _, err := db.GetValue("Key"); !errors.Is(err, ErrKeyNotFound) {
+ t.Fatalf("expected error: %v, got: %v", ErrKeyNotFound, err)
+ }
})
t.Run("Not Exists", func(t *testing.T) {
@@ -120,22 +125,25 @@ func TestDBDelete(t *testing.T) {
db := setupTestDB[string, string](t)
- err := db.Delete("Key")
- assert.ErrorIs(t, err, ErrKeyNotFound)
+ if err := db.Delete("Key"); !errors.Is(err, ErrKeyNotFound) {
+ t.Fatalf("expected error: %v, got: %v", ErrKeyNotFound, err)
+ }
})
}
func BenchmarkDBGet(b *testing.B) {
for n := 1; n <= 10000; n *= 10 {
- b.Run(fmt.Sprint(n), func(b *testing.B) {
+ b.Run(strconv.Itoa(n), func(b *testing.B) {
db := setupTestDB[int, int](b)
- for i := 0; i < n; i++ {
+ for i := range n {
db.Set(i, i, 0)
}
+
b.ReportAllocs()
b.ResetTimer()
- for i := 0; i < b.N; i++ {
+
+ for b.Loop() {
db.GetValue(n - 1)
}
})
@@ -144,14 +152,16 @@ func BenchmarkDBGet(b *testing.B) {
func BenchmarkDBSet(b *testing.B) {
for n := 1; n <= 10000; n *= 10 {
- b.Run(fmt.Sprint(n), func(b *testing.B) {
+ b.Run(strconv.Itoa(n), func(b *testing.B) {
db := setupTestDB[int, int](b)
- for i := 0; i < n-1; i++ {
+ for i := range n - 1 {
db.Set(i, i, 0)
}
+
b.ReportAllocs()
b.ResetTimer()
- for i := 0; i < b.N; i++ {
+
+ for b.Loop() {
db.Set(n, n, 0)
}
})
@@ -160,14 +170,16 @@ func BenchmarkDBSet(b *testing.B) {
func BenchmarkDBDelete(b *testing.B) {
for n := 1; n <= 10000; n *= 10 {
- b.Run(fmt.Sprint(n), func(b *testing.B) {
+ b.Run(strconv.Itoa(n), func(b *testing.B) {
db := setupTestDB[int, int](b)
- for i := 0; i < n-1; i++ {
+ for i := range n - 1 {
db.Set(i, i, 0)
}
+
b.ReportAllocs()
b.ResetTimer()
- for i := 0; i < b.N; i++ {
+
+ for b.Loop() {
db.Set(n, n, 0)
db.Delete(n)
}