1
0
mirror of https://github.com/redis/go-redis.git synced 2025-07-29 17:41:15 +03:00

fix(tests): enable testing with Redis CE 8.0-M4 in CI (#3247)

* introduce github workflow for ci similar to the one in redis-py

use prerelease for 8.0-M4

* Enable osscluster tests in CI

* Add redis major version env

Enable filtering test per redis major version
Fix test for FT.SEARCH WITHSCORE, the default scorer
has changed.

fix Makefile syntax

remove filter from github action

fix makefile

use the container name in Makefile

* remove 1.20 from doctests

* self review, cleanup, add comments

* add comments, reorder prints, add default value for REDIS_MAJOR_VERSION
This commit is contained in:
Nedyalko Dyakov
2025-01-31 16:14:11 +02:00
committed by GitHub
parent 9f9fa221a8
commit 1139bc3aa9
16 changed files with 445 additions and 160 deletions

View File

@ -13,7 +13,6 @@ import (
. "github.com/bsm/ginkgo/v2"
. "github.com/bsm/gomega"
"github.com/redis/go-redis/v9"
)
@ -28,7 +27,7 @@ const (
)
const (
sentinelName = "mymaster"
sentinelName = "go-redis-test"
sentinelMasterPort = "9123"
sentinelSlave1Port = "9124"
sentinelSlave2Port = "9125"
@ -43,8 +42,8 @@ var (
)
var (
rediStackPort = "6379"
rediStackAddr = ":" + rediStackPort
redisStackPort = "6379"
redisStackAddr = ":" + redisStackPort
)
var (
@ -59,14 +58,22 @@ var (
)
var cluster = &clusterScenario{
ports: []string{"8220", "8221", "8222", "8223", "8224", "8225"},
ports: []string{"16600", "16601", "16602", "16603", "16604", "16605"},
nodeIDs: make([]string, 6),
processes: make(map[string]*redisProcess, 6),
clients: make(map[string]*redis.Client, 6),
}
// Redis Software Cluster
var RECluster = false
var USE_CONTAINERIZED_REDIS = false
// Redis Community Edition Docker
var RCEDocker = false
// Notes the major version of redis we are executing tests.
// This can be used before we change the bsm fork of ginkgo for one,
// which have support for label sets, so we can filter tests per redis major version.
var REDIS_MAJOR_VERSION = 7
func registerProcess(port string, p *redisProcess) {
if processes == nil {
@ -83,8 +90,19 @@ var _ = BeforeSuite(func() {
}
var err error
RECluster, _ = strconv.ParseBool(os.Getenv("RE_CLUSTER"))
USE_CONTAINERIZED_REDIS, _ = strconv.ParseBool(os.Getenv("USE_CONTAINERIZED_REDIS"))
if !RECluster || !USE_CONTAINERIZED_REDIS {
RCEDocker, _ = strconv.ParseBool(os.Getenv("RCE_DOCKER"))
REDIS_MAJOR_VERSION, _ = strconv.Atoi(os.Getenv("REDIS_MAJOR_VERSION"))
if REDIS_MAJOR_VERSION == 0 {
REDIS_MAJOR_VERSION = 7
}
Expect(REDIS_MAJOR_VERSION).To(BeNumerically(">=", 6))
Expect(REDIS_MAJOR_VERSION).To(BeNumerically("<=", 8))
fmt.Printf("RECluster: %v\n", RECluster)
fmt.Printf("RCEDocker: %v\n", RCEDocker)
fmt.Printf("REDIS_MAJOR_VERSION: %v\n", REDIS_MAJOR_VERSION)
if !RECluster && !RCEDocker {
redisMain, err = startRedis(redisPort)
Expect(err).NotTo(HaveOccurred())
@ -121,18 +139,24 @@ var _ = BeforeSuite(func() {
err = startCluster(ctx, cluster)
Expect(err).NotTo(HaveOccurred())
} else {
redisPort = rediStackPort
redisAddr = rediStackAddr
redisPort = redisStackPort
redisAddr = redisStackAddr
if !RECluster {
// populate cluster node information
Expect(configureClusterTopology(ctx, cluster)).NotTo(HaveOccurred())
}
}
})
var _ = AfterSuite(func() {
if !RECluster {
Expect(cluster.Close()).NotTo(HaveOccurred())
}
for _, p := range processes {
Expect(p.Close()).NotTo(HaveOccurred())
}
// NOOP if there are no processes registered
for _, p := range processes {
Expect(p.Close()).NotTo(HaveOccurred())
}
processes = nil
})
@ -156,8 +180,8 @@ func redisOptions() *redis.Options {
ContextTimeoutEnabled: true,
MaxRetries: -1,
PoolSize: 10,
PoolSize: 10,
PoolTimeout: 30 * time.Second,
ConnMaxIdleTime: time.Minute,
}