Files
token-go/persist/default_adapter_test.go
2023-10-15 22:51:49 +08:00

206 lines
5.4 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 persist
import (
"testing"
"time"
)
func NewTestDefaultAdapter() Adapter {
return NewDefaultAdapter()
}
func TestDefaultAdapter_StrOperation(t *testing.T) {
defaultAdapter := NewTestDefaultAdapter()
if err := defaultAdapter.SetStr("k1", "v1", 0); err == nil {
t.Errorf("SetStr() failed: set timeout = 0")
}
if err := defaultAdapter.SetStr("k1", "v1", -2); err == nil {
t.Errorf("SetStr() failed: set timeout = -2")
}
if err := defaultAdapter.SetStr("k2", "v2", -1); err != nil {
t.Errorf("SetStr() failed: can't set data")
}
if v := defaultAdapter.GetStr("k2"); v != "v2" {
t.Errorf("GetStr() failed: value is %s, want 'v2' ", v)
}
if v := defaultAdapter.GetStrTimeout("k2"); v != -1 {
t.Errorf("GetStrTimeout() failed: timeout is %v,want -1 ", v)
}
if v := defaultAdapter.GetStrTimeout("k3"); v != -2 {
t.Errorf("GetStrTimeout() failed: timeout is %v,want -2 ", v)
}
if err := defaultAdapter.SetStr("k1", "v1", 1); err != nil {
t.Errorf("SetStr() failed: can't set data")
}
time.Sleep(1 * time.Second)
if v := defaultAdapter.Get("k1"); v != nil {
t.Errorf("getExpireAndDelete() faliled: get expired value")
}
err1 := defaultAdapter.SetStr("k", "v", 9)
if err1 != nil {
t.Errorf("SetStr() failed: %v", err1)
}
time.Sleep(1 * time.Millisecond)
timeout := defaultAdapter.GetStrTimeout("k")
t.Logf("get timeout = %v", timeout)
if timeout > 8 {
t.Errorf("GetStrTimeout( failed: %v", timeout)
}
if err := defaultAdapter.UpdateStrTimeout("k", -1); err != nil {
t.Errorf("UpdateStrTimeout() failed: %v", err)
}
err2 := defaultAdapter.UpdateStrTimeout("k", 9)
if err2 != nil {
t.Errorf("UpdateStrTimeout() failed: %v", err2)
}
timeout = defaultAdapter.GetStrTimeout("k")
t.Logf("get timeout = %v", timeout)
getRes := defaultAdapter.GetStr("k")
if getRes != "v" {
t.Errorf("GetStr() failed: %v", getRes)
}
err3 := defaultAdapter.UpdateStr("k", "L")
if err3 != nil {
t.Errorf("UpdateStr() failed: %v", err3)
}
getRes = defaultAdapter.GetStr("k")
if getRes != "L" {
t.Errorf("GetStr() failed: GetStr() = %v want 'L' ", getRes)
}
err4 := defaultAdapter.DeleteStr("k")
if err4 != nil {
t.Errorf("DeleteStr() failed: %v", err4)
}
err5 := defaultAdapter.UpdateStr("k", "L")
if err5 == nil {
t.Errorf("UpdateStr() failed: update not exist data")
}
getRes = defaultAdapter.GetStr("k")
if getRes != "" {
t.Errorf("GetStr() failed: %v", getRes)
}
}
func TestDefaultAdapter_InterfaceOperation(t *testing.T) {
defaultAdapter := NewTestDefaultAdapter()
if err := defaultAdapter.Set("k1", "v1", 0); err == nil {
t.Errorf("Set() failed: set timeout = 0")
}
if err := defaultAdapter.Set("k1", "v1", -2); err == nil {
t.Errorf("Set() failed: set timeout = -2")
}
if err := defaultAdapter.Set("k2", "v2", -1); err != nil {
t.Errorf("Set() failed: can't set data")
}
if v := defaultAdapter.Get("k2"); v.(string) != "v2" {
t.Errorf("Get() failed: value is %s, want 'v2' ", v.(string))
}
if v := defaultAdapter.GetTimeout("k2"); v != -1 {
t.Errorf("GetTimeout() failed: timeout is %v,want -1 ", v)
}
if v := defaultAdapter.GetTimeout("k3"); v != -2 {
t.Errorf("GetTimeout() failed: timeout is %v,want -2 ", v)
}
if err := defaultAdapter.Set("k1", "v1", 1); err != nil {
t.Errorf("Set() failed: can't set data")
}
time.Sleep(1 * time.Second)
if v := defaultAdapter.Get("k1"); v != nil {
t.Errorf("getExpireAndDelete() faliled: get expired value")
}
err1 := defaultAdapter.Set("k", "v", 9)
if err1 != nil {
t.Errorf("Set() failed: %v", err1)
}
time.Sleep(1 * time.Millisecond)
timeout := defaultAdapter.GetTimeout("k")
t.Logf("get timeout = %v", timeout)
if timeout > 8 {
t.Errorf("GetTimeout() failed: %v", timeout)
}
if err := defaultAdapter.UpdateTimeout("k", -1); err != nil {
t.Errorf("UpdateTimeout() failed: %v", err)
}
err2 := defaultAdapter.UpdateTimeout("k", 9)
if err2 != nil {
t.Errorf("UpdateTimeout() failed: %v", err2)
}
timeout = defaultAdapter.GetTimeout("k")
t.Logf("get timeout = %v", timeout)
getRes := defaultAdapter.Get("k")
if getRes.(string) != "v" {
t.Errorf("Get() failed: Get() = %v, want 'v' ", getRes.(string))
}
err3 := defaultAdapter.Update("k", "L")
if err3 != nil {
t.Errorf("Update() failed: %v", err3)
}
getRes = defaultAdapter.Get("k")
if getRes.(string) != "L" {
t.Errorf("Get() failed: Get() = %v want 'L' ", getRes.(string))
}
err4 := defaultAdapter.Delete("k")
if err4 != nil {
t.Errorf("Delete() failed: %v", err4)
}
err5 := defaultAdapter.Update("k", "L")
if err5 == nil {
t.Errorf("Update() failed: update not exist data")
}
getRes = defaultAdapter.Get("k")
if getRes != nil {
t.Errorf("Get() failed: %v s", getRes)
}
}
func TestDefaultAdapter_DeleteBatchFilteredValue(t *testing.T) {
adapter := NewTestDefaultAdapter()
err := adapter.(*DefaultAdapter).StartCleanTimer(2)
if err != nil {
t.Fatalf("StartCleanTimer() failed: %v", err)
}
if err = adapter.SetStr("k_1", "v", -1); err != nil {
t.Errorf("SetStr() failed: %v", err)
}
if err = adapter.SetStr("k_2", "v", -1); err != nil {
t.Errorf("SetStr() failed: %v", err)
}
if err = adapter.SetStr("k_3", "v", -1); err != nil {
t.Errorf("SetStr() failed: %v", err)
}
err = adapter.(BatchAdapter).DeleteBatchFilteredKey("k_")
if err != nil {
t.Errorf("DeleteBatchFilteredKey() failed: %v", err)
}
str := adapter.GetStr("k_2")
if str != "" {
t.Errorf("DeleteBatchFilteredKey() failed")
}
}