|
@@ -0,0 +1,77 @@
|
|
|
+package cache
|
|
|
+
|
|
|
+import (
|
|
|
+ "context"
|
|
|
+ "testing"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+func TestMemorySetGetDelete(t *testing.T) {
|
|
|
+ // 创建一个新的 memory Cache 实例
|
|
|
+ memCache := NewMemory()
|
|
|
+
|
|
|
+ // 设置一个键值对
|
|
|
+ key := "testKey"
|
|
|
+ val := "testValue"
|
|
|
+ ttl := 1 * time.Minute
|
|
|
+ _, err := memCache.Set(context.Background(), key, val, ttl)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("Failed to set key-value pair: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取键对应的值
|
|
|
+ result, err := memCache.Get(context.Background(), key)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("Failed to get value for key: %v", err)
|
|
|
+ }
|
|
|
+ if result != val {
|
|
|
+ t.Errorf("Expected value %s, but got %s", val, result)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 删除键值对
|
|
|
+ _, err = memCache.Delete(context.Background(), key)
|
|
|
+ if err != nil {
|
|
|
+ t.Errorf("Failed to delete key-value pair: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 再次尝试获取键对应的值,应该返回 ErrorCacheNotFound 错误
|
|
|
+ _, err = memCache.Get(context.Background(), key)
|
|
|
+ if err != ErrorCacheNotFound {
|
|
|
+ t.Errorf("Expected error ErrorCacheNotFound, but got %v", err)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func BenchmarkMemorySet(b *testing.B) {
|
|
|
+ memCache := NewMemory()
|
|
|
+ key := "testKey"
|
|
|
+ val := "testValue"
|
|
|
+ ttl := 1 * time.Minute
|
|
|
+
|
|
|
+ for i := 0; i < b.N; i++ {
|
|
|
+ _, _ = memCache.Set(context.Background(), key, val, ttl)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func BenchmarkMemoryGet(b *testing.B) {
|
|
|
+ memCache := NewMemory()
|
|
|
+ key := "testKey"
|
|
|
+ val := "testValue"
|
|
|
+ ttl := 1 * time.Minute
|
|
|
+ _, _ = memCache.Set(context.Background(), key, val, ttl)
|
|
|
+
|
|
|
+ for i := 0; i < b.N; i++ {
|
|
|
+ _, _ = memCache.Get(context.Background(), key)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func BenchmarkMemoryDelete(b *testing.B) {
|
|
|
+ memCache := NewMemory()
|
|
|
+ key := "testKey"
|
|
|
+ val := "testValue"
|
|
|
+ ttl := 1 * time.Minute
|
|
|
+ _, _ = memCache.Set(context.Background(), key, val, ttl)
|
|
|
+
|
|
|
+ for i := 0; i < b.N; i++ {
|
|
|
+ _, _ = memCache.Delete(context.Background(), key)
|
|
|
+ }
|
|
|
+}
|