package test import ( "git.sxidc.com/go-framework/baize/framework/core/infrastructure" "git.sxidc.com/go-framework/baize/framework/core/infrastructure/cache/local" "git.sxidc.com/go-framework/baize/framework/core/infrastructure/cache/redis" "git.sxidc.com/go-tools/utils/strutils" "testing" "time" ) func TestLocalCache(t *testing.T) { cache := local.New("test") testLocalCache(t, cache) } func TestRedisCache(t *testing.T) { cache, err := redis.New("localhost:30379", "", "mtyzxhc", 1, "test") if err != nil { t.Fatalf("%+v\n", err) } testRedisCache(t, cache) } func TestCacheInfrastructure(t *testing.T) { i := infrastructure.NewInfrastructure(infrastructure.Config{ CacheConfig: infrastructure.CacheConfig{ Namespace: "test", Redis: &infrastructure.RedisConfig{ Address: "localhost:30379", UserName: "", Password: "mtyzxhc", DB: 1, }, }, }) testLocalCache(t, i.LocalCache().(*local.Cache)) testRedisCache(t, i.RedisCache().(*redis.Cache)) } func testLocalCache(t *testing.T, cache *local.Cache) { err := cache.Set("test1", "test1-value", 0) if err != nil { t.Fatalf("%+v\n", err) } test1Value, err := cache.Get("test1") if err != nil { t.Fatalf("%+v\n", err) } if test1Value != "test1-value" { t.Fatalf("Value Error: cache %v\n", test1Value) } err = cache.Set("test2", "test2-value", 0) if err != nil { t.Fatalf("%+v\n", err) } multiValues, err := cache.GetMulti([]string{"test1", "test2"}) if err != nil { t.Fatalf("%+v\n", err) } if len(multiValues) != 2 { t.Fatalf("Value Error: cache %v\n", multiValues) } if multiValues["test1"] != "test1-value" || multiValues["test2"] != "test2-value" { t.Fatalf("Value Error: cache %v\n", multiValues) } allValues, err := cache.GetAll() if err != nil { t.Fatalf("%+v\n", err) } if len(allValues) != 2 { t.Fatalf("Value Error: cache %v\n", allValues) } if allValues["test1"] != "test1-value" || allValues["test2"] != "test2-value" { t.Fatalf("Value Error: cache %v\n", allValues) } err = cache.Delete("test2") if err != nil { t.Fatalf("%+v\n", err) } test2Value, err := cache.Get("test2") if err != nil { t.Fatalf("%+v\n", err) } if strutils.IsStringNotEmpty(test2Value) { t.Fatalf("Delete Value Error: cache %v\n", test2Value) } err = cache.Clear() if err != nil { t.Fatalf("%+v\n", err) } allValues, err = cache.GetAll() if err != nil { t.Fatalf("%+v\n", err) } if len(allValues) != 0 { t.Fatalf("Clear Value Error: cache %v\n", allValues) } err = cache.Set("test", "test-value", 1) if err != nil { t.Fatalf("%+v\n", err) } time.Sleep(1500 * time.Millisecond) testValue, err := cache.Get("test") if err != nil { t.Fatalf("%+v\n", err) } if strutils.IsStringNotEmpty(testValue) { t.Fatalf("Value Expire Error: cache %v\n", testValue) } err = cache.Clear() if err != nil { t.Fatalf("%+v\n", err) } } func testRedisCache(t *testing.T, cache *redis.Cache) { err := cache.Set("test1", "test1-value", 0) if err != nil { t.Fatalf("%+v\n", err) } test1Value, err := cache.Get("test1") if err != nil { t.Fatalf("%+v\n", err) } if test1Value != "test1-value" { t.Fatalf("Value Error: cache %v\n", test1Value) } err = cache.Set("test2", "test2-value", 0) if err != nil { t.Fatalf("%+v\n", err) } multiValues, err := cache.GetMulti([]string{"test1", "test2"}) if err != nil { t.Fatalf("%+v\n", err) } if len(multiValues) != 2 { t.Fatalf("Value Error: cache %v\n", multiValues) } if multiValues["test1"] != "test1-value" || multiValues["test2"] != "test2-value" { t.Fatalf("Value Error: cache %v\n", multiValues) } allValues, err := cache.GetAll() if err != nil { t.Fatalf("%+v\n", err) } if len(allValues) != 2 { t.Fatalf("Value Error: cache %v\n", allValues) } if allValues["test1"] != "test1-value" || allValues["test2"] != "test2-value" { t.Fatalf("Value Error: cache %v\n", allValues) } err = cache.Delete("test2") if err != nil { t.Fatalf("%+v\n", err) } test2Value, err := cache.Get("test2") if err != nil { t.Fatalf("%+v\n", err) } if strutils.IsStringNotEmpty(test2Value) { t.Fatalf("Delete Value Error: cache %v\n", test2Value) } err = cache.Clear() if err != nil { t.Fatalf("%+v\n", err) } allValues, err = cache.GetAll() if err != nil { t.Fatalf("%+v\n", err) } if len(allValues) != 0 { t.Fatalf("Clear Value Error: cache %v\n", allValues) } err = cache.Set("test", "test-value", 1) if err != nil { t.Fatalf("%+v\n", err) } time.Sleep(1500 * time.Millisecond) testValue, err := cache.Get("test") if err != nil { t.Fatalf("%+v\n", err) } if strutils.IsStringNotEmpty(testValue) { t.Fatalf("Value Expire Error: cache %v\n", testValue) } err = cache.Clear() if err != nil { t.Fatalf("%+v\n", err) } }