mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
274 lines
5.7 KiB
Go
274 lines
5.7 KiB
Go
package test
|
|
|
|
import (
|
|
"github.com/crawlab-team/crawlab/db/redis"
|
|
"github.com/stretchr/testify/require"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestRedisClient_Ping(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
err = T.client.Ping()
|
|
require.Nil(t, err)
|
|
}
|
|
|
|
func TestRedisClient_Get_Set(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
err = T.client.Set(T.TestCollection, T.TestMessage)
|
|
require.Nil(t, err)
|
|
|
|
value, err := T.client.Get(T.TestCollection)
|
|
require.Nil(t, err)
|
|
require.Equal(t, T.TestMessage, value)
|
|
}
|
|
|
|
func TestRedisClient_Keys_AllKeys(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
for _, key := range T.TestKeysAlpha {
|
|
err = T.client.Set(key, key)
|
|
require.Nil(t, err)
|
|
}
|
|
for _, key := range T.TestKeysBeta {
|
|
err = T.client.Set(key, key)
|
|
require.Nil(t, err)
|
|
}
|
|
|
|
keys, err := T.client.Keys("*alpha*")
|
|
require.Nil(t, err)
|
|
require.Len(t, keys, len(T.TestKeysAlpha))
|
|
|
|
keys, err = T.client.Keys("*beta*")
|
|
require.Nil(t, err)
|
|
require.Len(t, keys, len(T.TestKeysBeta))
|
|
|
|
keys, err = T.client.AllKeys()
|
|
require.Nil(t, err)
|
|
require.Len(t, keys, len(T.TestKeysAlpha)+len(T.TestKeysBeta))
|
|
}
|
|
|
|
func TestRedisClient_RPush_LPop_LLen(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
for _, msg := range T.TestMessages {
|
|
err = T.client.RPush(T.TestCollection, msg)
|
|
require.Nil(t, err)
|
|
}
|
|
|
|
n, err := T.client.LLen(T.TestCollection)
|
|
require.Nil(t, err)
|
|
require.Equal(t, len(T.TestMessages), n)
|
|
|
|
value, err := T.client.LPop(T.TestCollection)
|
|
require.Nil(t, err)
|
|
require.Equal(t, T.TestMessages[0], value)
|
|
}
|
|
|
|
func TestRedisClient_LPush_RPop(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
for _, msg := range T.TestMessages {
|
|
err = T.client.LPush(T.TestCollection, msg)
|
|
require.Nil(t, err)
|
|
}
|
|
|
|
n, err := T.client.LLen(T.TestCollection)
|
|
require.Nil(t, err)
|
|
require.Equal(t, len(T.TestMessages), n)
|
|
|
|
value, err := T.client.RPop(T.TestCollection)
|
|
require.Nil(t, err)
|
|
require.Equal(t, T.TestMessages[0], value)
|
|
}
|
|
|
|
func TestRedisClient_BRPop(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
isErr := true
|
|
go func(t *testing.T) {
|
|
value, err := T.client.BRPop(T.TestCollection, 0)
|
|
require.Nil(t, err)
|
|
require.Equal(t, T.TestMessage, value)
|
|
isErr = false
|
|
}(t)
|
|
|
|
err = T.client.LPush(T.TestCollection, T.TestMessage)
|
|
require.Nil(t, err)
|
|
time.Sleep(500 * time.Millisecond)
|
|
require.False(t, isErr)
|
|
}
|
|
|
|
func TestRedisClient_BLPop(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
isErr := true
|
|
go func(t *testing.T) {
|
|
value, err := T.client.BLPop(T.TestCollection, 0)
|
|
require.Nil(t, err)
|
|
require.Equal(t, T.TestMessage, value)
|
|
isErr = false
|
|
}(t)
|
|
|
|
err = T.client.RPush(T.TestCollection, T.TestMessage)
|
|
require.Nil(t, err)
|
|
time.Sleep(500 * time.Millisecond)
|
|
require.False(t, isErr)
|
|
}
|
|
|
|
func TestRedisClient_HSet_HGet_HDel(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
for k, v := range T.TestMessagesMap {
|
|
err = T.client.HSet(T.TestCollection, k, v)
|
|
require.Nil(t, err)
|
|
}
|
|
|
|
for k, v := range T.TestMessagesMap {
|
|
vr, err := T.client.HGet(T.TestCollection, k)
|
|
require.Nil(t, err)
|
|
require.Equal(t, v, vr)
|
|
}
|
|
|
|
for k := range T.TestMessagesMap {
|
|
err = T.client.HDel(T.TestCollection, k)
|
|
require.Nil(t, err)
|
|
|
|
v, err := T.client.HGet(T.TestCollection, k)
|
|
require.Nil(t, err)
|
|
require.Empty(t, v)
|
|
}
|
|
}
|
|
|
|
func TestRedisClient_HScan(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
for k, v := range T.TestMessagesMap {
|
|
err = T.client.HSet(T.TestCollection, k, v)
|
|
require.Nil(t, err)
|
|
}
|
|
|
|
results, err := T.client.HScan(T.TestCollection)
|
|
require.Nil(t, err)
|
|
|
|
for k, vr := range results {
|
|
v, ok := T.TestMessagesMap[k]
|
|
require.True(t, ok)
|
|
require.Equal(t, v, vr)
|
|
}
|
|
}
|
|
|
|
func TestRedisClient_HKeys(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
for k, v := range T.TestMessagesMap {
|
|
err = T.client.HSet(T.TestCollection, k, v)
|
|
require.Nil(t, err)
|
|
}
|
|
|
|
keys, err := T.client.HKeys(T.TestCollection)
|
|
require.Nil(t, err)
|
|
|
|
for _, k := range keys {
|
|
_, ok := T.TestMessagesMap[k]
|
|
require.True(t, ok)
|
|
}
|
|
}
|
|
|
|
func TestRedisClient_ZAdd_ZCount_ZCountAll_ZPopMax_ZPopMin(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
for i, v := range T.TestMessages {
|
|
score := float32(i)
|
|
err = T.client.ZAdd(T.TestCollection, score, v)
|
|
require.Nil(t, err)
|
|
}
|
|
|
|
count, err := T.client.ZCountAll(T.TestCollection)
|
|
require.Nil(t, err)
|
|
require.Equal(t, len(T.TestMessages), count)
|
|
|
|
value, err := T.client.ZPopMaxOne(T.TestCollection)
|
|
require.Nil(t, err)
|
|
require.Equal(t, T.TestMessages[len(T.TestMessages)-1], value)
|
|
|
|
value, err = T.client.ZPopMinOne(T.TestCollection)
|
|
require.Nil(t, err)
|
|
require.Equal(t, T.TestMessages[0], value)
|
|
}
|
|
|
|
func TestRedisClient_BZPopMax_BZPopMin(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
isErr := true
|
|
go func(t *testing.T) {
|
|
value, err := T.client.BZPopMax(T.TestCollection, 0)
|
|
require.Nil(t, err)
|
|
require.Equal(t, T.TestMessage, value)
|
|
isErr = false
|
|
}(t)
|
|
|
|
err = T.client.ZAdd(T.TestCollection, 1, T.TestMessage)
|
|
require.Nil(t, err)
|
|
time.Sleep(500 * time.Millisecond)
|
|
require.False(t, isErr)
|
|
|
|
isErr = true
|
|
go func(t *testing.T) {
|
|
value, err := T.client.BZPopMin(T.TestCollection, 0)
|
|
require.Nil(t, err)
|
|
require.Equal(t, T.TestMessage, value)
|
|
isErr = false
|
|
}(t)
|
|
|
|
err = T.client.ZAdd(T.TestCollection, 1, T.TestMessage)
|
|
require.Nil(t, err)
|
|
time.Sleep(500 * time.Millisecond)
|
|
require.False(t, isErr)
|
|
}
|
|
|
|
func TestRedisClient_Lock_Unlock(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
ts, err := T.client.Lock(T.TestLockKey)
|
|
require.Nil(t, err)
|
|
|
|
_, err = T.client.Lock(T.TestLockKey)
|
|
require.NotNil(t, err)
|
|
|
|
T.client.UnLock(T.TestLockKey, ts)
|
|
|
|
ts, err = T.client.Lock(T.TestLockKey)
|
|
require.Nil(t, err)
|
|
|
|
}
|
|
|
|
func TestRedisClient_MemoryStats(t *testing.T) {
|
|
var err error
|
|
T.Setup(t)
|
|
|
|
stats, err := T.client.MemoryStats()
|
|
require.Nil(t, err)
|
|
|
|
for _, k := range redis.MemoryStatsMetrics {
|
|
v, ok := stats[k]
|
|
require.True(t, ok)
|
|
require.Greater(t, v, int64(-1))
|
|
}
|
|
}
|