mirror of
https://github.com/empayre/fleet.git
synced 2024-11-06 08:55:24 +00:00
3d8a766ca1
* Make receive calls to redis conn thread safe Also removes REDIS_TEST env var. Redis is lightweight and fast, no need to skip these tests. * No need to increase the wait
80 lines
2.0 KiB
Go
80 lines
2.0 KiB
Go
package live_query
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/fleetdm/fleet/v4/server/pubsub"
|
|
"github.com/fleetdm/fleet/v4/server/test"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRedisLiveQuery(t *testing.T) {
|
|
for _, f := range testFunctions {
|
|
t.Run(test.FunctionName(f), func(t *testing.T) {
|
|
store, teardown := setupRedisLiveQuery(t)
|
|
defer teardown()
|
|
f(t, store)
|
|
})
|
|
}
|
|
}
|
|
|
|
func setupRedisLiveQuery(t *testing.T) (store *redisLiveQuery, teardown func()) {
|
|
var (
|
|
addr = "127.0.0.1:6379"
|
|
password = ""
|
|
database = 0
|
|
useTLS = false
|
|
)
|
|
|
|
pool, err := pubsub.NewRedisPool(addr, password, database, useTLS)
|
|
require.NoError(t, err)
|
|
store = NewRedisLiveQuery(pool)
|
|
|
|
_, err = store.pool.Get().Do("PING")
|
|
require.NoError(t, err)
|
|
|
|
teardown = func() {
|
|
store.pool.Get().Do("FLUSHDB")
|
|
store.pool.Close()
|
|
}
|
|
|
|
return store, teardown
|
|
}
|
|
|
|
func TestMapBitfield(t *testing.T) {
|
|
// empty
|
|
assert.Equal(t, []byte{}, mapBitfield(nil))
|
|
assert.Equal(t, []byte{}, mapBitfield([]uint{}))
|
|
|
|
// one byte
|
|
assert.Equal(t, []byte("\x80"), mapBitfield([]uint{0}))
|
|
assert.Equal(t, []byte("\x40"), mapBitfield([]uint{1}))
|
|
assert.Equal(t, []byte("\xc0"), mapBitfield([]uint{0, 1}))
|
|
|
|
assert.Equal(t, []byte("\x08"), mapBitfield([]uint{4}))
|
|
assert.Equal(t, []byte("\xf8"), mapBitfield([]uint{0, 1, 2, 3, 4}))
|
|
assert.Equal(t, []byte("\xff"), mapBitfield([]uint{0, 1, 2, 3, 4, 5, 6, 7}))
|
|
|
|
// two bytes
|
|
assert.Equal(t, []byte("\x00\x80"), mapBitfield([]uint{8}))
|
|
assert.Equal(t, []byte("\xff\x80"), mapBitfield([]uint{0, 1, 2, 3, 4, 5, 6, 7, 8}))
|
|
|
|
// more bytes
|
|
assert.Equal(
|
|
t,
|
|
[]byte("\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 "),
|
|
mapBitfield([]uint{0, 1, 2, 3, 4, 5, 6, 7, 8, 170}),
|
|
)
|
|
assert.Equal(
|
|
t,
|
|
[]byte("\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00 "),
|
|
mapBitfield([]uint{0, 1, 2, 3, 4, 5, 6, 7, 8, 113, 170}),
|
|
)
|
|
assert.Equal(
|
|
t,
|
|
[]byte("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"),
|
|
mapBitfield([]uint{79}),
|
|
)
|
|
}
|