Skip to content

Commit 1abac3f

Browse files
author
DvirDukhan
authored
Merge pull request #121 from RedisLabsModules/cluster_node_timeout
added cluster node timeout config
2 parents 3986ff9 + 6e724f8 commit 1abac3f

File tree

6 files changed

+23
-4
lines changed

6 files changed

+23
-4
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ usage: RLTest [-h] [--version] [--module MODULE] [--module-args MODULE_ARGS]
3232
[--cluster_address CLUSTER_ADDRESS]
3333
[--oss_password OSS_PASSWORD]
3434
[--cluster_credentials CLUSTER_CREDENTIALS]
35+
[--cluster_node_timeout CLUSTER_NODE_TIMEOUT]
3536
[--internal_password INTERNAL_PASSWORD]
3637
[--oss-redis-path OSS_REDIS_PATH]
3738
[--enterprise-redis-path ENTERPRISE_REDIS_PATH]
@@ -83,6 +84,8 @@ optional arguments:
8384
enterprise cluster cluster_credentials
8485
"username:password", relevent only when running with
8586
cluster_existing-env (default: None)
87+
--cluster_node_timeout CLUSTER_NODE_TIMEOUT
88+
cluster node timeout in milliseconds
8689
--internal_password INTERNAL_PASSWORD
8790
Give an ability to execute commands on shards
8891
directly, relevent only when running with

RLTest/__main__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@ def do_normal_conn(self, line):
133133
'--oss_password', default=None,
134134
help='set redis password, relevant for oss and oss-cluster environment')
135135

136+
parser.add_argument(
137+
'--cluster_node_timeout', default=5000,
138+
help='sets the node timeout on cluster in milliseconds')
139+
136140
parser.add_argument(
137141
'--cluster_credentials',
138142
help='enterprise cluster cluster_credentials "username:password", relevent only when running with cluster_existing-env')
@@ -396,6 +400,7 @@ def __init__(self):
396400
Defaults.tls_key_file = self.args.tls_key_file
397401
Defaults.tls_ca_cert_file = self.args.tls_ca_cert_file
398402
Defaults.oss_password = self.args.oss_password
403+
Defaults.cluster_node_timeout = self.args.cluster_node_timeout
399404
if Defaults.use_unix and Defaults.use_slaves:
400405
raise Exception('Cannot use unix sockets with slaves')
401406

RLTest/env.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ class Defaults:
127127
use_unix = False
128128
randomize_ports = False
129129
oss_password = None
130+
cluster_node_timeout = None
130131

131132
def getKwargs(self):
132133
kwargs = {
@@ -165,7 +166,7 @@ def __init__(self, testName=None, testDescription=None, module=None,
165166
moduleArgs=None, env=None, useSlaves=None, shardsCount=None, decodeResponses=None,
166167
useAof=None, useRdbPreamble=None, forceTcp=False, useTLS=False, tlsCertFile=None, tlsKeyFile=None,
167168
tlsCaCertFile=None, logDir=None, redisBinaryPath=None, dmcBinaryPath=None,
168-
redisEnterpriseBinaryPath=None, noDefaultModuleArgs=False):
169+
redisEnterpriseBinaryPath=None, noDefaultModuleArgs=False, clusterNodeTimeout = None):
169170

170171
self.testName = testName if testName else '%s.%s' % (inspect.getmodule(inspect.currentframe().f_back).__name__, inspect.currentframe().f_back.f_code.co_name)
171172
self.testName = self.testName.replace(' ', '_')
@@ -196,6 +197,7 @@ def __init__(self, testName=None, testDescription=None, module=None,
196197
self.redisBinaryPath = expandBinary(redisBinaryPath) if redisBinaryPath else Defaults.binary
197198
self.dmcBinaryPath = expandBinary(dmcBinaryPath) if dmcBinaryPath else Defaults.proxy_binary
198199
self.redisEnterpriseBinaryPath = expandBinary(redisEnterpriseBinaryPath) if redisEnterpriseBinaryPath else Defaults.re_binary
200+
self.clusterNodeTimeout = clusterNodeTimeout if clusterNodeTimeout else Defaults.cluster_node_timeout
199201

200202
self.assertionFailedSummary = []
201203

@@ -291,6 +293,7 @@ def getEnvKwargs(self):
291293
'tlsCertFile': self.tlsCertFile,
292294
'tlsKeyFile': self.tlsKeyFile,
293295
'tlsCaCertFile': self.tlsCaCertFile,
296+
'clusterNodeTimeout': self.clusterNodeTimeout
294297
}
295298
return kwargs
296299

RLTest/redis_std.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class StandardEnv(object):
2121
def __init__(self, redisBinaryPath, port=6379, modulePath=None, moduleArgs=None, outputFilesFormat=None,
2222
dbDirPath=None, useSlaves=False, serverId=1, password=None, libPath=None, clusterEnabled=False, decodeResponses=False,
2323
useAof=False, useRdbPreamble=True, debugger=None, noCatch=False, unix=False, verbose=False, useTLS=False, tlsCertFile=None,
24-
tlsKeyFile=None, tlsCaCertFile=None):
24+
tlsKeyFile=None, tlsCaCertFile=None, clusterNodeTimeout = None):
2525
self.uuid = uuid.uuid4().hex
2626
self.redisBinaryPath = os.path.expanduser(redisBinaryPath) if redisBinaryPath.startswith(
2727
'~/') else redisBinaryPath
@@ -52,6 +52,7 @@ def __init__(self, redisBinaryPath, port=6379, modulePath=None, moduleArgs=None,
5252
self.tlsCertFile = tlsCertFile
5353
self.tlsKeyFile = tlsKeyFile
5454
self.tlsCaCertFile = tlsCaCertFile
55+
self.clusterNodeTimeout = clusterNodeTimeout
5556

5657
if port > 0:
5758
self.port = port
@@ -184,7 +185,7 @@ def createCmdArgs(self, role):
184185
if self.clusterEnabled and role is not SLAVE:
185186
# creating .cluster.conf in /tmp as lock fails on NFS
186187
cmdArgs += ['--cluster-enabled', 'yes', '--cluster-config-file', '/tmp/' + self._getFileName(role, '.cluster.conf'),
187-
'--cluster-node-timeout', '5000']
188+
'--cluster-node-timeout', '5000' if self.clusterNodeTimeout is None else str(self.clusterNodeTimeout)]
188189
if self.useTLS:
189190
cmdArgs += ['--tls-cluster', 'yes']
190191
if self.useAof:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "RLTest"
3-
version = "0.4.1"
3+
version = "0.4.2"
44
description="Redis Labs Test Framework, allow to run tests on redis and modules on a variety of environments"
55
authors = ["RedisLabs <[email protected]>"]
66
license = "BSD-3-Clause"

tests/unit/test_redis_std.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,4 +386,11 @@ def test_get_connection_by_key(self):
386386
key = 'x{%i}' % i
387387
con = std_env.getConnectionByKey(key, "set")
388388
assert(con.set(key, "1"))
389+
std_env.stopEnv()
390+
391+
def test_cluster_node_timeout(self):
392+
std_env = StandardEnv(redisBinaryPath=REDIS_BINARY, outputFilesFormat='%s-test', dbDirPath=self.test_dir, clusterNodeTimeout=60000)
393+
std_env.startEnv()
394+
con = std_env.getConnection()
395+
assert(con.execute_command("CONFIG", "GET", "cluster-node-timeout"), "60000")
389396
std_env.stopEnv()

0 commit comments

Comments
 (0)