mirror of
https://github.com/fleetdm/fleet
synced 2026-04-21 21:47:20 +00:00
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #40054 # Checklist for submitter If some of the following don't apply, delete the relevant line. - [ ] Changes file added for user-visible changes in `changes/`, `orbit/changes/` or `ee/fleetd-chrome/changes`. - Already added in previous PR ## Testing - [x] Added/updated automated tests - [x] QA'd all new/changed functionality manually <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Updated internal logging infrastructure across multiple server components to use standardized logging methods and improved context propagation. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
67 lines
1.9 KiB
Go
67 lines
1.9 KiB
Go
package live_query
|
|
|
|
import (
|
|
"log/slog"
|
|
"testing"
|
|
|
|
"github.com/fleetdm/fleet/v4/server/datastore/redis/redistest"
|
|
"github.com/fleetdm/fleet/v4/server/test"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestRedisLiveQuery(t *testing.T) {
|
|
for _, f := range testFunctions {
|
|
t.Run(test.FunctionName(f), func(t *testing.T) {
|
|
t.Run("standalone", func(t *testing.T) {
|
|
store := setupRedisLiveQuery(t, false)
|
|
f(t, store)
|
|
})
|
|
|
|
t.Run("cluster", func(t *testing.T) {
|
|
store := setupRedisLiveQuery(t, true)
|
|
f(t, store)
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
func setupRedisLiveQuery(t *testing.T, cluster bool) *redisLiveQuery {
|
|
pool := redistest.SetupRedis(t, "*livequery", cluster, true, true)
|
|
return NewRedisLiveQuery(pool, slog.New(slog.DiscardHandler), 0)
|
|
}
|
|
|
|
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}),
|
|
)
|
|
}
|