✏ refactor storage

This commit is contained in:
Fenny
2020-11-04 20:49:53 +01:00
parent b29989b82e
commit a6058cffb3
22 changed files with 705 additions and 614 deletions

View File

@@ -29,159 +29,104 @@ func init() {
}
}
func Test_MySQL_Set(t *testing.T) {
store := New(storeConfig)
id := "hello"
value := []byte("Hi there!")
store.Set(id, value, 0)
func Test_Redis_Set(t *testing.T) {
var (
returnedValue []byte
exp int64
store = testStore
key = "john"
val = []byte("doe")
)
store.db.QueryRow(store.sqlSelect, id).Scan(&returnedValue, &exp)
utils.AssertEqual(t, returnedValue, value)
utils.AssertEqual(t, exp, int64(0))
err := store.Set(key, val, 0)
utils.AssertEqual(t, nil, err)
}
func Test_MySQL_SetExpiry(t *testing.T) {
store := New(storeConfig)
id := "hello"
value := []byte("Hi there!")
expiry := time.Second * 10
store.Set(id, value, expiry)
now := time.Now().Unix()
func Test_Redis_Get(t *testing.T) {
var (
returnedValue []byte
exp int64
store = testStore
key = "john"
val = []byte("doe")
)
store.db.QueryRow(store.sqlSelect, id).Scan(&returnedValue, &exp)
delta := exp - now
upperBound := int64(expiry.Seconds())
lowerBound := upperBound - 2
if !(delta <= upperBound && delta > lowerBound) {
t.Fatalf("Test_SetExpiry: expiry delta out of bounds (is %d, must be %d<x<=%d)", delta, lowerBound, upperBound)
}
}
func Test_MySQL_Get(t *testing.T) {
store := New(storeConfig)
id := "hello"
value := []byte("Hi there!")
store.db.Exec(store.sqlInsert, id, utils.UnsafeString(value), 0)
returnedValue, err := store.Get(id)
utils.AssertEqual(t, nil, err)
utils.AssertEqual(t, value, returnedValue)
}
func Test_MySQL_Get_NoRows(t *testing.T) {
store := New(storeConfig)
id := "hello"
returnedValue, err := store.Get(id)
utils.AssertEqual(t, nil, err)
utils.AssertEqual(t, 0, len(returnedValue))
}
func Test_MySQL_Get_Expired(t *testing.T) {
store := New(storeConfig)
id := "hello"
value := []byte("Hi there!")
store.db.Exec(store.sqlInsert, id, utils.UnsafeString(value), time.Now().Add(time.Minute*-1).Unix())
returnedValue, err := store.Get(id)
utils.AssertEqual(t, nil, err)
utils.AssertEqual(t, 0, len(returnedValue))
}
func Test_MySQL_Delete(t *testing.T) {
store := New(storeConfig)
id := "hello"
value := []byte("Hi there!")
store.db.Exec(store.sqlInsert, id, utils.UnsafeString(value), 0)
err := store.Delete(id)
err := store.Set(key, val, 0)
utils.AssertEqual(t, nil, err)
row := store.db.QueryRow(store.sqlSelect, id)
err = row.Scan()
utils.AssertEqual(t, noRows, err.Error())
result, err := store.Get(key)
utils.AssertEqual(t, nil, err)
utils.AssertEqual(t, val, result)
}
func Test_MySQL_Clear(t *testing.T) {
func Test_Redis_Set_Expiration(t *testing.T) {
var (
store = testStore
key = "john"
val = []byte("doe")
exp = 500 * time.Millisecond
)
store := New(storeConfig)
id := "hello"
value := []byte("Hi there!")
store.db.Exec(store.sqlInsert, id, utils.UnsafeString(value), 0)
err := store.Clear()
err := store.Set(key, val, exp)
utils.AssertEqual(t, nil, err)
row := store.db.QueryRow(store.sqlSelect, id)
err = row.Scan()
utils.AssertEqual(t, noRows, err.Error())
time.Sleep(1 * time.Second)
}
func Benchmark_MySQL_Set(b *testing.B) {
store := New(storeConfig)
key := "aaaa"
val := []byte("This is a value")
expiry := time.Second * 60
b.ResetTimer()
for n := 0; n < b.N; n++ {
store.Set(key, val, expiry)
}
func Test_Redis_Get_Expired(t *testing.T) {
var (
store = testStore
key = "john"
)
result, err := store.Get(key)
utils.AssertEqual(t, ErrNotExist, err)
utils.AssertEqual(t, true, len(result) == 0)
}
func Benchmark_MySQL_Get(b *testing.B) {
store := New(storeConfig)
key := "aaaa"
val := []byte("This is a value")
store.Set(key, val, 0)
b.ResetTimer()
for n := 0; n < b.N; n++ {
store.Get(key)
}
func Test_Redis_Get_NotExist(t *testing.T) {
var store = testStore
result, err := store.Get("notexist")
utils.AssertEqual(t, ErrNotExist, err)
utils.AssertEqual(t, true, len(result) == 0)
}
func Test_Redis_Delete(t *testing.T) {
var (
store = testStore
key = "john"
val = []byte("doe")
)
err := store.Set(key, val, 0)
utils.AssertEqual(t, nil, err)
err = store.Delete(key)
utils.AssertEqual(t, nil, err)
result, err := store.Get(key)
utils.AssertEqual(t, ErrNotExist, err)
utils.AssertEqual(t, true, len(result) == 0)
}
func Test_Redis_Clear(t *testing.T) {
var (
store = testStore
val = []byte("doe")
)
err := store.Set("john1", val, 0)
utils.AssertEqual(t, nil, err)
err = store.Set("john2", val, 0)
utils.AssertEqual(t, nil, err)
err = store.Clear()
utils.AssertEqual(t, nil, err)
result, err := store.Get("john1")
utils.AssertEqual(t, ErrNotExist, err)
utils.AssertEqual(t, true, len(result) == 0)
result, err = store.Get("john2")
utils.AssertEqual(t, ErrNotExist, err)
utils.AssertEqual(t, true, len(result) == 0)
}