Skip to content

Commit f9ccef5

Browse files
committed
mix of makefile and action
1 parent f8f0dd5 commit f9ccef5

File tree

4 files changed

+66
-76
lines changed

4 files changed

+66
-76
lines changed

.github/actions/run-tests/action.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,5 @@ runs:
4747
RCE_DOCKER: "true"
4848
RE_CLUSTER: "false"
4949
run: |
50-
go test ./... -short -race && \
51-
go test -coverprofile=coverage.txt -covermode=atomic ./... && \
50+
make test.ci
5251
shell: bash

Makefile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ redisstackdocker.stop:
99

1010
test: testdeps
1111
$(MAKE) redisstackdocker.start
12+
$(MAKE) test.ci
13+
$(MAKE) redisstackdocker.stop
14+
15+
testdeps: testdata/redis/src/redis-server
16+
17+
test.ci:
1218
$(eval GO_VERSION := $(shell go version | cut -d " " -f 3 | cut -d. -f2))
1319
set -e; for dir in $(GO_MOD_DIRS); do \
1420
if echo "$${dir}" | grep -q "./example" && [ "$(GO_VERSION)" = "19" ]; then \
@@ -26,9 +32,6 @@ test: testdeps
2632
done
2733
cd internal/customvet && go build .
2834
go vet -vettool ./internal/customvet/customvet
29-
$(MAKE) redisstackdocker.stop
30-
31-
testdeps: testdata/redis/src/redis-server
3235

3336
bench:
3437
go test ./... -test.run=NONE -test.bench=. -test.benchmem

docker-compose.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,24 @@ services:
8282
- all-stack
8383
- all
8484

85+
sentinel-cluster:
86+
image: ${CLIENT_LIBS_TEST_IMAGE:-redislabs/client-libs-test:7.4.1}
87+
container_name: redis-sentinel-cluster
88+
environment:
89+
- NODES=3
90+
- TLS_ENABLED=yes
91+
- REDIS_CLUSTER=no
92+
- PORT=9121
93+
command: ${REDIS_EXTRA_ARGS:---enable-debug-command yes --enable-module-command yes --tls-auth-clients optional --save ""}
94+
ports:
95+
- "9121-9123:9121-9123"
96+
volumes:
97+
- "./dockers/sentinel-cluster:/redis/work"
98+
profiles:
99+
- sentinel
100+
- all-stack
101+
- all
102+
85103
redisRing1:
86104
image: ${CLIENT_LIBS_TEST_IMAGE:-redislabs/client-libs-test:7.4.1}
87105
container_name: redis-ring-1

main_test.go

Lines changed: 41 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"fmt"
55
"net"
66
"os"
7-
"os/exec"
87
"path/filepath"
98
"strconv"
109
"sync"
@@ -28,12 +27,12 @@ const (
2827

2928
const (
3029
sentinelName = "go-redis-test"
31-
sentinelMasterPort = "9123"
32-
sentinelSlave1Port = "9124"
33-
sentinelSlave2Port = "9125"
34-
sentinelPort1 = "9126"
35-
sentinelPort2 = "9127"
36-
sentinelPort3 = "9128"
30+
sentinelMasterPort = "9121"
31+
sentinelSlave1Port = "9122"
32+
sentinelSlave2Port = "9123"
33+
sentinelPort1 = "26379"
34+
sentinelPort2 = "26380"
35+
sentinelPort3 = "26381"
3736
)
3837

3938
var (
@@ -52,8 +51,8 @@ var (
5251
processes map[string]*redisProcess
5352

5453
ringShard1, ringShard2, ringShard3 *redis.Client
55-
sentinelMaster, sentinelSlave1, sentinelSlave2 *redisProcess
56-
sentinel1, sentinel2, sentinel3 *redisProcess
54+
sentinelMaster, sentinelSlave1, sentinelSlave2 *redis.Client
55+
sentinel1, sentinel2, sentinel3 *redis.Client
5756
)
5857

5958
var cluster = &clusterScenario{
@@ -118,7 +117,7 @@ var _ = BeforeSuite(func() {
118117
}
119118

120119
if !RECluster && !RCEDocker {
121-
sentinelMaster, err = startRedis(sentinelMasterPort)
120+
sentinelMaster, err = connectTo(sentinelMasterPort)
122121
Expect(err).NotTo(HaveOccurred())
123122

124123
sentinel1, err = startSentinel(sentinelPort1, sentinelName, sentinelMasterPort)
@@ -130,12 +129,14 @@ var _ = BeforeSuite(func() {
130129
sentinel3, err = startSentinel(sentinelPort3, sentinelName, sentinelMasterPort)
131130
Expect(err).NotTo(HaveOccurred())
132131

133-
sentinelSlave1, err = startRedis(
134-
sentinelSlave1Port, "--slaveof", "127.0.0.1", sentinelMasterPort)
132+
sentinelSlave1, err = connectTo(sentinelSlave1Port)
133+
Expect(err).NotTo(HaveOccurred())
134+
err = sentinelSlave1.SlaveOf(ctx, "127.0.0.1", sentinelMasterPort).Err()
135135
Expect(err).NotTo(HaveOccurred())
136136

137-
sentinelSlave2, err = startRedis(
138-
sentinelSlave2Port, "--slaveof", "127.0.0.1", sentinelMasterPort)
137+
sentinelSlave2, err = connectTo(sentinelSlave2Port)
138+
Expect(err).NotTo(HaveOccurred())
139+
err = sentinelSlave2.SlaveOf(ctx, "127.0.0.1", sentinelMasterPort).Err()
139140
Expect(err).NotTo(HaveOccurred())
140141

141142
err = startCluster(ctx, cluster)
@@ -154,6 +155,30 @@ var _ = BeforeSuite(func() {
154155
ringShard3, err = connectTo(ringShard3Port)
155156
Expect(err).NotTo(HaveOccurred())
156157

158+
sentinelMaster, err = connectTo(sentinelMasterPort)
159+
Expect(err).NotTo(HaveOccurred())
160+
161+
sentinel1, err = startSentinel(sentinelPort1, sentinelName, sentinelMasterPort)
162+
Expect(err).NotTo(HaveOccurred())
163+
164+
sentinel2, err = startSentinel(sentinelPort2, sentinelName, sentinelMasterPort)
165+
Expect(err).NotTo(HaveOccurred())
166+
167+
sentinel3, err = startSentinel(sentinelPort3, sentinelName, sentinelMasterPort)
168+
Expect(err).NotTo(HaveOccurred())
169+
170+
sentinelSlave1, err = connectTo(sentinelSlave1Port)
171+
Expect(err).NotTo(HaveOccurred())
172+
err = sentinelSlave1.SlaveOf(ctx, "127.0.0.1", sentinelMasterPort).Err()
173+
Expect(err).NotTo(HaveOccurred())
174+
175+
sentinelSlave2, err = connectTo(sentinelSlave2Port)
176+
Expect(err).NotTo(HaveOccurred())
177+
err = sentinelSlave2.SlaveOf(ctx, "127.0.0.1", sentinelMasterPort).Err()
178+
Expect(err).NotTo(HaveOccurred())
179+
180+
err = startCluster(ctx, cluster)
181+
Expect(err).NotTo(HaveOccurred())
157182
// populate cluster node information
158183
Expect(configureClusterTopology(ctx, cluster)).NotTo(HaveOccurred())
159184
}
@@ -310,15 +335,6 @@ func eventually(fn func() error, timeout time.Duration) error {
310335
}
311336
}
312337

313-
func execCmd(name string, args ...string) (*os.Process, error) {
314-
cmd := exec.Command(name, args...)
315-
if testing.Verbose() {
316-
cmd.Stdout = os.Stdout
317-
cmd.Stderr = os.Stderr
318-
}
319-
return cmd.Process, cmd.Start()
320-
}
321-
322338
func connectTo(port string) (*redis.Client, error) {
323339
client := redis.NewClient(&redis.Options{
324340
Addr: ":" + port,
@@ -379,52 +395,9 @@ func redisDir(port string) (string, error) {
379395
return dir, nil
380396
}
381397

382-
func startRedis(port string, args ...string) (*redisProcess, error) {
383-
dir, err := redisDir(port)
384-
if err != nil {
385-
return nil, err
386-
}
387-
388-
if err := exec.Command("cp", "-f", redisServerConf, dir).Run(); err != nil {
389-
return nil, err
390-
}
391-
392-
baseArgs := []string{filepath.Join(dir, "redis.conf"), "--port", port, "--dir", dir, "--enable-module-command", "yes"}
393-
process, err := execCmd(redisServerBin, append(baseArgs, args...)...)
394-
if err != nil {
395-
return nil, err
396-
}
397-
398-
client, err := connectTo(port)
399-
if err != nil {
400-
process.Kill()
401-
return nil, err
402-
}
403-
404-
p := &redisProcess{process, client}
405-
registerProcess(port, p)
406-
return p, nil
407-
}
408-
409-
func startSentinel(port, masterName, masterPort string) (*redisProcess, error) {
410-
dir, err := redisDir(port)
411-
if err != nil {
412-
return nil, err
413-
}
414-
415-
sentinelConf := filepath.Join(dir, "sentinel.conf")
416-
if err := os.WriteFile(sentinelConf, nil, 0o644); err != nil {
417-
return nil, err
418-
}
419-
420-
process, err := execCmd(redisServerBin, sentinelConf, "--sentinel", "--port", port, "--dir", dir)
421-
if err != nil {
422-
return nil, err
423-
}
424-
398+
func startSentinel(port, masterName, masterPort string) (*redis.Client, error) {
425399
client, err := connectTo(port)
426400
if err != nil {
427-
process.Kill()
428401
return nil, err
429402
}
430403

@@ -438,14 +411,11 @@ func startSentinel(port, masterName, masterPort string) (*redisProcess, error) {
438411
} {
439412
client.Process(ctx, cmd)
440413
if err := cmd.Err(); err != nil {
441-
process.Kill()
442414
return nil, fmt.Errorf("%s failed: %w", cmd, err)
443415
}
444416
}
445417

446-
p := &redisProcess{process, client}
447-
registerProcess(port, p)
448-
return p, nil
418+
return client, nil
449419
}
450420

451421
//------------------------------------------------------------------------------

0 commit comments

Comments
 (0)