...
1 package ldredis
2
3 import (
4 "fmt"
5 "testing"
6
7 "github.com/launchdarkly/go-server-sdk/v6/subsystems"
8 "github.com/launchdarkly/go-server-sdk/v6/testhelpers/storetest"
9
10 r "github.com/gomodule/redigo/redis"
11 "github.com/stretchr/testify/require"
12 )
13
14 func TestBigSegmentStore(t *testing.T) {
15 client, err := r.DialURL(redisURL)
16 require.NoError(t, err)
17 defer client.Close()
18
19 setTestMetadata := func(prefix string, metadata subsystems.BigSegmentStoreMetadata) error {
20 if prefix == "" {
21 prefix = DefaultPrefix
22 }
23 _, err := client.Do("SET", bigSegmentsSyncTimeKey(prefix), fmt.Sprintf("%d", metadata.LastUpToDate))
24 return err
25 }
26
27 setTestSegments := func(prefix string, contextHashKey string, included []string, excluded []string) error {
28 if prefix == "" {
29 prefix = DefaultPrefix
30 }
31 for _, inc := range included {
32 _, err := client.Do("SADD", bigSegmentsIncludeKey(prefix, contextHashKey), inc)
33 if err != nil {
34 return err
35 }
36 }
37 for _, exc := range excluded {
38 _, err := client.Do("SADD", bigSegmentsExcludeKey(prefix, contextHashKey), exc)
39 if err != nil {
40 return err
41 }
42 }
43 return nil
44 }
45
46 storetest.NewBigSegmentStoreTestSuite(
47 func(prefix string) subsystems.ComponentConfigurer[subsystems.BigSegmentStore] {
48 return BigSegmentStore().Prefix(prefix)
49 },
50 clearTestData,
51 setTestMetadata,
52 setTestSegments,
53 ).Run(t)
54 }
55
View as plain text