Skip to content

Commit b762309

Browse files
authoredJan 1, 2024
Add RE tests (#2847)
* Add RE tests * Enable testing on RE * change db id to 0 - only when RE cluster is set * label tests * adding secrets
1 parent 73c879d commit b762309

12 files changed

+212
-113
lines changed
 
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: RE Tests
2+
3+
on:
4+
push:
5+
branches: [master]
6+
pull_request:
7+
8+
permissions:
9+
contents: read
10+
11+
jobs:
12+
build:
13+
name: build
14+
runs-on: ubuntu-latest
15+
strategy:
16+
fail-fast: false
17+
matrix:
18+
go-version: [1.21.x]
19+
re-build: ["100.0.1-64402"]
20+
21+
steps:
22+
- name: Checkout code
23+
uses: actions/checkout@v4
24+
25+
- name: Clone Redis EE docker repository
26+
uses: actions/checkout@v4
27+
with:
28+
repository: RedisLabs/redis-ee-docker
29+
path: redis-ee
30+
31+
- name: Set up ${{ matrix.go-version }}
32+
uses: actions/setup-go@v5
33+
with:
34+
go-version: ${{ matrix.go-version }}
35+
36+
- name: Build cluster
37+
working-directory: redis-ee
38+
env:
39+
IMAGE: "redislabs/redis-internal:${{ matrix.re-build }}"
40+
RE_USERNAME: ${{ secrets.RE_USERNAME }}
41+
RE_PASS: ${{ secrets.RE_PASS }}
42+
RE_CLUSTER_NAME: ${{ secrets.RE_CLUSTER_NAME }}
43+
OSS_CLUSTER: false
44+
DB_PORT: ${{ secrets.RE_DB_PORT }}
45+
DOCKER_ACCESS_TOKEN: ${{ secrets.DOCKER_ACCESS_TOKEN }}
46+
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
47+
run: ./build.sh
48+
49+
- name: Test
50+
env:
51+
RE_CLUSTER: "1"
52+
run: |
53+
go test \
54+
--ginkgo.skip-file="ring_test.go" \
55+
--ginkgo.skip-file="sentinel_test.go" \
56+
--ginkgo.skip-file="osscluster_test.go" \
57+
--ginkgo.skip-file="pubsub_test.go" \
58+
--ginkgo.skip-file="gears_commands_test.go" \
59+
--ginkgo.label-filter='!NonRedisEnterprise'

‎commands_test.go

Lines changed: 64 additions & 64 deletions
Large diffs are not rendered by default.

‎example_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,11 @@ func ExampleNewUniversalClient_cluster() {
657657
}
658658

659659
func ExampleClient_SlowLogGet() {
660+
if RECluster {
661+
// skip slowlog test for cluster
662+
fmt.Println(2)
663+
return
664+
}
660665
const key = "slowlog-log-slower-than"
661666

662667
old := rdb.ConfigGet(ctx, key).Val()

‎json_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var _ = Describe("JSON Commands", Label("json"), func() {
1919

2020
BeforeEach(func() {
2121
client = redis.NewClient(&redis.Options{Addr: ":6379"})
22-
Expect(client.FlushDB(ctx).Err()).NotTo(HaveOccurred())
22+
Expect(client.FlushAll(ctx).Err()).NotTo(HaveOccurred())
2323
})
2424

2525
AfterEach(func() {
@@ -270,7 +270,7 @@ var _ = Describe("JSON Commands", Label("json"), func() {
270270
Expect(res).To(Equal(`[{"a":1,"b":3,"c":4}]`))
271271
})
272272

273-
It("should JSONMSet", Label("json.mset", "json"), func() {
273+
It("should JSONMSet", Label("json.mset", "json", "NonRedisEnterprise"), func() {
274274
doc1 := redis.JSONSetArgs{Key: "mset1", Path: "$", Value: `{"a": 1}`}
275275
doc2 := redis.JSONSetArgs{Key: "mset2", Path: "$", Value: 2}
276276
docs := []redis.JSONSetArgs{doc1, doc2}
@@ -287,11 +287,11 @@ var _ = Describe("JSON Commands", Label("json"), func() {
287287
Expect(err).NotTo(HaveOccurred())
288288
Expect(res).To(Equal([]interface{}{`[{"a":1}]`, "[2]"}))
289289

290-
mSetResult, err = client.JSONMSet(ctx, "mset1", "$.a", 2, "mset3", "$", `[1]`).Result()
290+
_, err = client.JSONMSet(ctx, "mset1", "$.a", 2, "mset3", "$", `[1]`).Result()
291291
Expect(err).NotTo(HaveOccurred())
292292
})
293293

294-
It("should JSONMGet", Label("json.mget", "json"), func() {
294+
It("should JSONMGet", Label("json.mget", "json", "NonRedisEnterprise"), func() {
295295
cmd1 := client.JSONSet(ctx, "mget2a", "$", `{"a": ["aa", "ab", "ac", "ad"], "b": {"a": ["ba", "bb", "bc", "bd"]}}`)
296296
Expect(cmd1.Err()).NotTo(HaveOccurred())
297297
Expect(cmd1.Val()).To(Equal("OK"))
@@ -306,7 +306,7 @@ var _ = Describe("JSON Commands", Label("json"), func() {
306306
Expect(cmd3.Val()[1]).To(Equal(`[[100,200,300,200],[100,200,300,200]]`))
307307
})
308308

309-
It("should JSONMget with $", Label("json.mget", "json"), func() {
309+
It("should JSONMget with $", Label("json.mget", "json", "NonRedisEnterprise"), func() {
310310
res, err := client.JSONSet(ctx, "doc1", "$", `{"a": 1, "b": 2, "nested": {"a": 3}, "c": "", "nested2": {"a": ""}}`).Result()
311311
Expect(err).NotTo(HaveOccurred())
312312
Expect(res).To(Equal("OK"))

‎main_test.go

Lines changed: 55 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"os"
77
"os/exec"
88
"path/filepath"
9+
"strconv"
910
"sync"
1011
"testing"
1112
"time"
@@ -64,6 +65,8 @@ var cluster = &clusterScenario{
6465
clients: make(map[string]*redis.Client, 6),
6566
}
6667

68+
var RECluster = false
69+
6770
func registerProcess(port string, p *redisProcess) {
6871
if processes == nil {
6972
processes = make(map[string]*redisProcess)
@@ -78,47 +81,56 @@ var _ = BeforeSuite(func() {
7881
redisAddr = ":" + redisPort
7982
}
8083
var err error
84+
RECluster, _ = strconv.ParseBool(os.Getenv("RE_CLUSTER"))
85+
86+
if !RECluster {
8187

82-
redisMain, err = startRedis(redisPort)
83-
Expect(err).NotTo(HaveOccurred())
88+
redisMain, err = startRedis(redisPort)
89+
Expect(err).NotTo(HaveOccurred())
8490

85-
ringShard1, err = startRedis(ringShard1Port)
86-
Expect(err).NotTo(HaveOccurred())
91+
ringShard1, err = startRedis(ringShard1Port)
92+
Expect(err).NotTo(HaveOccurred())
8793

88-
ringShard2, err = startRedis(ringShard2Port)
89-
Expect(err).NotTo(HaveOccurred())
94+
ringShard2, err = startRedis(ringShard2Port)
95+
Expect(err).NotTo(HaveOccurred())
9096

91-
ringShard3, err = startRedis(ringShard3Port)
92-
Expect(err).NotTo(HaveOccurred())
97+
ringShard3, err = startRedis(ringShard3Port)
98+
Expect(err).NotTo(HaveOccurred())
9399

94-
sentinelMaster, err = startRedis(sentinelMasterPort)
95-
Expect(err).NotTo(HaveOccurred())
100+
sentinelMaster, err = startRedis(sentinelMasterPort)
101+
Expect(err).NotTo(HaveOccurred())
96102

97-
sentinel1, err = startSentinel(sentinelPort1, sentinelName, sentinelMasterPort)
98-
Expect(err).NotTo(HaveOccurred())
103+
sentinel1, err = startSentinel(sentinelPort1, sentinelName, sentinelMasterPort)
104+
Expect(err).NotTo(HaveOccurred())
99105

100-
sentinel2, err = startSentinel(sentinelPort2, sentinelName, sentinelMasterPort)
101-
Expect(err).NotTo(HaveOccurred())
106+
sentinel2, err = startSentinel(sentinelPort2, sentinelName, sentinelMasterPort)
107+
Expect(err).NotTo(HaveOccurred())
102108

103-
sentinel3, err = startSentinel(sentinelPort3, sentinelName, sentinelMasterPort)
104-
Expect(err).NotTo(HaveOccurred())
109+
sentinel3, err = startSentinel(sentinelPort3, sentinelName, sentinelMasterPort)
110+
Expect(err).NotTo(HaveOccurred())
105111

106-
sentinelSlave1, err = startRedis(
107-
sentinelSlave1Port, "--slaveof", "127.0.0.1", sentinelMasterPort)
108-
Expect(err).NotTo(HaveOccurred())
112+
sentinelSlave1, err = startRedis(
113+
sentinelSlave1Port, "--slaveof", "127.0.0.1", sentinelMasterPort)
114+
Expect(err).NotTo(HaveOccurred())
109115

110-
sentinelSlave2, err = startRedis(
111-
sentinelSlave2Port, "--slaveof", "127.0.0.1", sentinelMasterPort)
112-
Expect(err).NotTo(HaveOccurred())
116+
sentinelSlave2, err = startRedis(
117+
sentinelSlave2Port, "--slaveof", "127.0.0.1", sentinelMasterPort)
118+
Expect(err).NotTo(HaveOccurred())
113119

114-
Expect(startCluster(ctx, cluster)).NotTo(HaveOccurred())
120+
Expect(startCluster(ctx, cluster)).NotTo(HaveOccurred())
121+
} else {
122+
redisPort = rediStackPort
123+
redisAddr = rediStackAddr
124+
}
115125
})
116126

117127
var _ = AfterSuite(func() {
118-
Expect(cluster.Close()).NotTo(HaveOccurred())
128+
if !RECluster {
129+
Expect(cluster.Close()).NotTo(HaveOccurred())
119130

120-
for _, p := range processes {
121-
Expect(p.Close()).NotTo(HaveOccurred())
131+
for _, p := range processes {
132+
Expect(p.Close()).NotTo(HaveOccurred())
133+
}
122134
}
123135
processes = nil
124136
})
@@ -131,6 +143,23 @@ func TestGinkgoSuite(t *testing.T) {
131143
//------------------------------------------------------------------------------
132144

133145
func redisOptions() *redis.Options {
146+
if RECluster {
147+
return &redis.Options{
148+
Addr: redisAddr,
149+
DB: 0,
150+
151+
DialTimeout: 10 * time.Second,
152+
ReadTimeout: 30 * time.Second,
153+
WriteTimeout: 30 * time.Second,
154+
ContextTimeoutEnabled: true,
155+
156+
MaxRetries: -1,
157+
PoolSize: 10,
158+
159+
PoolTimeout: 30 * time.Second,
160+
ConnMaxIdleTime: time.Minute,
161+
}
162+
}
134163
return &redis.Options{
135164
Addr: redisAddr,
136165
DB: 15,

‎pipeline_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ var _ = Describe("pipelining", func() {
7171
Expect(cmds).To(HaveLen(1))
7272
})
7373

74-
It("handles large pipelines", func() {
74+
It("handles large pipelines", Label("NonRedisEnterprise"), func() {
7575
for callCount := 1; callCount < 16; callCount++ {
7676
for i := 1; i <= callCount; i++ {
7777
pipe.SetNX(ctx, strconv.Itoa(i)+"_key", strconv.Itoa(i)+"_value", 0)

‎probabilistic_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ var _ = Describe("Probabilistic commands", Label("probabilistic"), func() {
460460
Expect(info).To(BeAssignableToTypeOf(redis.CMSInfo{}))
461461
})
462462

463-
It("should CMSMerge, CMSMergeWithWeight and CMSQuery", Label("cms", "cmsmerge", "cmsquery"), func() {
463+
It("should CMSMerge, CMSMergeWithWeight and CMSQuery", Label("cms", "cmsmerge", "cmsquery", "NonRedisEnterprise"), func() {
464464
err := client.CMSMerge(ctx, "destCms1", "testcms2", "testcms3").Err()
465465
Expect(err).To(HaveOccurred())
466466
Expect(err).To(MatchError("CMS: key does not exist"))
@@ -697,7 +697,7 @@ var _ = Describe("Probabilistic commands", Label("probabilistic"), func() {
697697
Expect(info.Compression).To(BeEquivalentTo(int64(2000)))
698698
})
699699

700-
It("should TDigestMerge", Label("tdigest", "tmerge"), func() {
700+
It("should TDigestMerge", Label("tdigest", "tmerge", "NonRedisEnterprise"), func() {
701701
err := client.TDigestCreate(ctx, "tdigest1").Err()
702702
Expect(err).NotTo(HaveOccurred())
703703
err = client.TDigestAdd(ctx, "tdigest1", 10, 20, 30, 40, 50, 60, 70, 80, 90, 100).Err()

‎race_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ var _ = Describe("races", func() {
137137
})
138138
})
139139

140-
It("should select db", func() {
140+
It("should select db", Label("NonRedisEnterprise"), func() {
141141
err := client.Set(ctx, "db", 1, 0).Err()
142142
Expect(err).NotTo(HaveOccurred())
143143

@@ -243,7 +243,7 @@ var _ = Describe("races", func() {
243243
})
244244
})
245245

246-
var _ = Describe("cluster races", func() {
246+
var _ = Describe("cluster races", Label("NonRedisEnterprise"), func() {
247247
var client *redis.ClusterClient
248248
var C, N int
249249

‎redis_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,11 @@ var _ = Describe("Client", func() {
6565
})
6666

6767
It("should Stringer", func() {
68-
Expect(client.String()).To(Equal(fmt.Sprintf("Redis<:%s db:15>", redisPort)))
68+
if RECluster {
69+
Expect(client.String()).To(Equal(fmt.Sprintf("Redis<:%s db:0>", redisPort)))
70+
} else {
71+
Expect(client.String()).To(Equal(fmt.Sprintf("Redis<:%s db:15>", redisPort)))
72+
}
6973
})
7074

7175
It("supports context", func() {
@@ -76,7 +80,7 @@ var _ = Describe("Client", func() {
7680
Expect(err).To(MatchError("context canceled"))
7781
})
7882

79-
It("supports WithTimeout", func() {
83+
It("supports WithTimeout", Label("NonRedisEnterprise"), func() {
8084
err := client.ClientPause(ctx, time.Second).Err()
8185
Expect(err).NotTo(HaveOccurred())
8286

@@ -151,7 +155,7 @@ var _ = Describe("Client", func() {
151155
Expect(pubsub.Close()).NotTo(HaveOccurred())
152156
})
153157

154-
It("should select DB", func() {
158+
It("should select DB", Label("NonRedisEnterprise"), func() {
155159
db2 := redis.NewClient(&redis.Options{
156160
Addr: redisAddr,
157161
DB: 2,
@@ -503,7 +507,7 @@ var _ = Describe("Conn", func() {
503507
Expect(err).NotTo(HaveOccurred())
504508
})
505509

506-
It("TxPipeline", func() {
510+
It("TxPipeline", Label("NonRedisEnterprise"), func() {
507511
tx := client.Conn().TxPipeline()
508512
tx.SwapDB(ctx, 0, 2)
509513
tx.SwapDB(ctx, 1, 0)

‎timeseries_commands_test.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ var _ = Describe("RedisTimeseries commands", Label("timeseries"), func() {
1515
var client *redis.Client
1616

1717
BeforeEach(func() {
18-
client = redis.NewClient(&redis.Options{Addr: ":6379"})
18+
client = redis.NewClient(&redis.Options{Addr: rediStackAddr})
1919
Expect(client.FlushDB(ctx).Err()).NotTo(HaveOccurred())
2020
})
2121

@@ -290,15 +290,17 @@ var _ = Describe("RedisTimeseries commands", Label("timeseries"), func() {
290290
Expect(result.Value).To(BeEquivalentTo(151))
291291
})
292292

293-
It("should TSGet Latest", Label("timeseries", "tsgetlatest"), func() {
293+
It("should TSGet Latest", Label("timeseries", "tsgetlatest", "NonRedisEnterprise"), func() {
294294
resultGet, err := client.TSCreate(ctx, "tsgl-1").Result()
295295
Expect(err).NotTo(HaveOccurred())
296296
Expect(resultGet).To(BeEquivalentTo("OK"))
297297
resultGet, err = client.TSCreate(ctx, "tsgl-2").Result()
298298
Expect(err).NotTo(HaveOccurred())
299299
Expect(resultGet).To(BeEquivalentTo("OK"))
300+
300301
resultGet, err = client.TSCreateRule(ctx, "tsgl-1", "tsgl-2", redis.Sum, 10).Result()
301302
Expect(err).NotTo(HaveOccurred())
303+
302304
Expect(resultGet).To(BeEquivalentTo("OK"))
303305
_, err = client.TSAdd(ctx, "tsgl-1", 1, 1).Result()
304306
Expect(err).NotTo(HaveOccurred())
@@ -344,7 +346,7 @@ var _ = Describe("RedisTimeseries commands", Label("timeseries"), func() {
344346
Expect(result).To(BeEquivalentTo([]int64{1, 2, 3}))
345347
})
346348

347-
It("should TSMGet and TSMGetWithArgs", Label("timeseries", "tsmget", "tsmgetWithArgs"), func() {
349+
It("should TSMGet and TSMGetWithArgs", Label("timeseries", "tsmget", "tsmgetWithArgs", "NonRedisEnterprise"), func() {
348350
opt := &redis.TSOptions{Labels: map[string]string{"Test": "This"}}
349351
resultCreate, err := client.TSCreateWithArgs(ctx, "a", opt).Result()
350352
Expect(err).NotTo(HaveOccurred())
@@ -429,7 +431,7 @@ var _ = Describe("RedisTimeseries commands", Label("timeseries"), func() {
429431
Expect(resultRange[0]).To(BeEquivalentTo(redis.TSTimestampValue{Timestamp: 22, Value: 1}))
430432
})
431433

432-
It("should TSRange, TSRangeWithArgs", Label("timeseries", "tsrange", "tsrangeWithArgs"), func() {
434+
It("should TSRange, TSRangeWithArgs", Label("timeseries", "tsrange", "tsrangeWithArgs", "NonRedisEnterprise"), func() {
433435
for i := 0; i < 100; i++ {
434436
_, err := client.TSAdd(ctx, "a", i, float64(i%7)).Result()
435437
Expect(err).NotTo(HaveOccurred())
@@ -541,7 +543,7 @@ var _ = Describe("RedisTimeseries commands", Label("timeseries"), func() {
541543
Expect(len(resultRange)).To(BeEquivalentTo(7))
542544
})
543545

544-
It("should TSRevRange, TSRevRangeWithArgs", Label("timeseries", "tsrevrange", "tsrevrangeWithArgs"), func() {
546+
It("should TSRevRange, TSRevRangeWithArgs", Label("timeseries", "tsrevrange", "tsrevrangeWithArgs", "NonRedisEnterprise"), func() {
545547
for i := 0; i < 100; i++ {
546548
_, err := client.TSAdd(ctx, "a", i, float64(i%7)).Result()
547549
Expect(err).NotTo(HaveOccurred())
@@ -755,7 +757,7 @@ var _ = Describe("RedisTimeseries commands", Label("timeseries"), func() {
755757
Expect(result["a"][2]).To(BeEquivalentTo([]interface{}{[]interface{}{int64(0), 5.0}, []interface{}{int64(5), 6.0}}))
756758
})
757759

758-
It("should TSMRangeWithArgs Latest", Label("timeseries", "tsmrangeWithArgs", "tsmrangelatest"), func() {
760+
It("should TSMRangeWithArgs Latest", Label("timeseries", "tsmrangeWithArgs", "tsmrangelatest", "NonRedisEnterprise"), func() {
759761
resultCreate, err := client.TSCreate(ctx, "a").Result()
760762
Expect(err).NotTo(HaveOccurred())
761763
Expect(resultCreate).To(BeEquivalentTo("OK"))
@@ -888,7 +890,7 @@ var _ = Describe("RedisTimeseries commands", Label("timeseries"), func() {
888890
Expect(result["a"][2]).To(BeEquivalentTo([]interface{}{[]interface{}{int64(1), 10.0}, []interface{}{int64(0), 1.0}}))
889891
})
890892

891-
It("should TSMRevRangeWithArgs Latest", Label("timeseries", "tsmrevrangeWithArgs", "tsmrevrangelatest"), func() {
893+
It("should TSMRevRangeWithArgs Latest", Label("timeseries", "tsmrevrangeWithArgs", "tsmrevrangelatest", "NonRedisEnterprise"), func() {
892894
resultCreate, err := client.TSCreate(ctx, "a").Result()
893895
Expect(err).NotTo(HaveOccurred())
894896
Expect(resultCreate).To(BeEquivalentTo("OK"))

‎tx_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ var _ = Describe("Tx", func() {
6464
Expect(n).To(Equal(int64(100)))
6565
})
6666

67-
It("should discard", func() {
67+
It("should discard", Label("NonRedisEnterprise"), func() {
6868
err := client.Watch(ctx, func(tx *redis.Tx) error {
6969
cmds, err := tx.TxPipelined(ctx, func(pipe redis.Pipeliner) error {
7070
pipe.Set(ctx, "key1", "hello1", 0)

‎universal_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ var _ = Describe("UniversalClient", func() {
3232
Expect(client.Ping(ctx).Err()).NotTo(HaveOccurred())
3333
})
3434

35-
It("should connect to clusters", func() {
35+
It("should connect to clusters", Label("NonRedisEnterprise"), func() {
3636
client = redis.NewUniversalClient(&redis.UniversalOptions{
3737
Addrs: cluster.addrs(),
3838
})

0 commit comments

Comments
 (0)
Please sign in to comment.