summaryrefslogtreecommitdiffstats
path: root/tests/unittests/command_parse
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2022-07-04 07:59:01 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2022-07-04 07:59:09 +0000
commit51cc817f8e2bab01ee028fbc1a0029a3f314d576 (patch)
tree8a78c6318a6d1b513e41deb0e3b020e59dd55d6c /tests/unittests/command_parse
parentReleasing debian version 1.11.1-2. (diff)
downloadiredis-51cc817f8e2bab01ee028fbc1a0029a3f314d576.tar.xz
iredis-51cc817f8e2bab01ee028fbc1a0029a3f314d576.zip
Merging upstream version 1.12.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/unittests/command_parse')
-rw-r--r--tests/unittests/command_parse/test_base_token.py24
-rw-r--r--tests/unittests/command_parse/test_connection.py25
-rw-r--r--tests/unittests/command_parse/test_generic_parse.py39
-rw-r--r--tests/unittests/command_parse/test_geo.py36
-rw-r--r--tests/unittests/command_parse/test_list_parse.py35
-rw-r--r--tests/unittests/command_parse/test_server.py71
6 files changed, 212 insertions, 18 deletions
diff --git a/tests/unittests/command_parse/test_base_token.py b/tests/unittests/command_parse/test_base_token.py
index b04722e..545bc92 100644
--- a/tests/unittests/command_parse/test_base_token.py
+++ b/tests/unittests/command_parse/test_base_token.py
@@ -54,3 +54,27 @@ def test_command_with_key_in_quotes(judge_command):
judge_command(
'cluster keyslot "mykey "', {"command": "cluster keyslot", "key": '"mykey "'}
)
+
+
+def test_timeout(token_should_match, token_should_not_match):
+ from iredis.redis_grammar import TIMEOUT
+
+ token_should_match(TIMEOUT, "1.1")
+ token_should_match(TIMEOUT, "1.0")
+ token_should_match(TIMEOUT, ".1")
+ token_should_match(TIMEOUT, "123123.1123")
+ token_should_not_match(TIMEOUT, "1.")
+ token_should_not_match(TIMEOUT, ".")
+ token_should_not_match(TIMEOUT, ".a")
+
+
+def test_lr_const(token_should_match, token_should_not_match):
+ from iredis.redis_grammar import LR_CONST
+
+ token_should_match(LR_CONST, "left")
+ token_should_match(LR_CONST, "right")
+ token_should_match(LR_CONST, "LEFT")
+ token_should_match(LR_CONST, "RIGHT")
+ token_should_not_match(LR_CONST, "righ")
+ token_should_not_match(LR_CONST, "ab")
+ token_should_not_match(LR_CONST, "123")
diff --git a/tests/unittests/command_parse/test_connection.py b/tests/unittests/command_parse/test_connection.py
index 8952e53..2a1de26 100644
--- a/tests/unittests/command_parse/test_connection.py
+++ b/tests/unittests/command_parse/test_connection.py
@@ -71,7 +71,7 @@ def test_client_tracking(judge_command):
"command": "CLIENT TRACKING",
"on_off": "ON",
"prefix_const": "PREFIX",
- "prefix": "foo",
+ "prefixes": "foo",
},
)
judge_command(
@@ -80,7 +80,7 @@ def test_client_tracking(judge_command):
"command": "CLIENT TRACKING",
"on_off": "ON",
"prefix_const": "PREFIX",
- "prefix": "foo",
+ "prefixes": "foo",
},
)
judge_command(
@@ -89,9 +89,28 @@ def test_client_tracking(judge_command):
"command": "CLIENT TRACKING",
"on_off": "ON",
"prefix_const": "PREFIX",
- "prefix": "foo",
+ "prefixes": "foo",
"bcast_const": "BCAST",
"noloop_const": "NOLOOP",
"optin_const": "OPTIN",
},
)
+ judge_command(
+ "CLIENT TRACKING ON PREFIX foo bar ok BCAST NOLOOP OPTIN",
+ {
+ "command": "CLIENT TRACKING",
+ "on_off": "ON",
+ "prefix_const": "PREFIX",
+ "prefixes": "foo bar ok",
+ "bcast_const": "BCAST",
+ "noloop_const": "NOLOOP",
+ "optin_const": "OPTIN",
+ },
+ )
+
+
+def test_client_pause(judge_command):
+ judge_command(
+ "CLIENT PAUSE 20 WRITE",
+ {"command": "CLIENT PAUSE", "timeout": "20", "pause_type": "WRITE"},
+ )
diff --git a/tests/unittests/command_parse/test_generic_parse.py b/tests/unittests/command_parse/test_generic_parse.py
index f41d887..6c4b0f3 100644
--- a/tests/unittests/command_parse/test_generic_parse.py
+++ b/tests/unittests/command_parse/test_generic_parse.py
@@ -177,3 +177,42 @@ def test_restore(judge_command):
"value": '"\n\x17\x17\x00\x00\x00\x12\x00\x00\x00\x03\x00\x00\xc0\x01\x00\x04\xc0\x02\x00\x04\xc0\x03\x00\xff\x04\x00u#<\xc0;.\xe9\xdd"', # noqa
},
)
+
+
+def test_copy(judge_command):
+ judge_command(
+ "COPY foo bar DB 3 REPLACE",
+ {
+ "command": "COPY",
+ "key": ["foo", "bar"],
+ "db_const": "DB",
+ "index": "3",
+ "replace_const": "REPLACE",
+ },
+ )
+ judge_command(
+ "COPY foo bar REPLACE",
+ {"command": "COPY", "key": ["foo", "bar"], "replace_const": "REPLACE"},
+ )
+ judge_command("COPY foo bar", {"command": "COPY", "key": ["foo", "bar"]})
+
+
+def test_getex(judge_command):
+ judge_command("GETEX foo", {"command": "GETEX", "key": "foo"})
+ judge_command(
+ "GETEX bar ex 5",
+ {"command": "GETEX", "key": "bar", "expiration": "ex", "millisecond": "5"},
+ )
+ judge_command(
+ "GETEX bar px 5",
+ {"command": "GETEX", "key": "bar", "expiration": "px", "millisecond": "5"},
+ )
+ judge_command(
+ "GETEX bar pxat 5",
+ {"command": "GETEX", "key": "bar", "pxat_const": "pxat", "timestampms": "5"},
+ )
+ judge_command(
+ "GETEX bar exat 5",
+ {"command": "GETEX", "key": "bar", "exat_const": "exat", "timestamp": "5"},
+ )
+ judge_command("GETEX bar ex 5 exat 5", None)
diff --git a/tests/unittests/command_parse/test_geo.py b/tests/unittests/command_parse/test_geo.py
index 8a8d4c7..8502696 100644
--- a/tests/unittests/command_parse/test_geo.py
+++ b/tests/unittests/command_parse/test_geo.py
@@ -9,31 +9,37 @@ def test_geoadd(judge_command):
"member": '"Catania"',
},
)
+ judge_command(
+ 'GEOADD Sicily NX CH 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"',
+ {
+ "command": "GEOADD",
+ "condition": "NX",
+ "changed": "CH",
+ "key": "Sicily",
+ "longitude": "15.087269",
+ "latitude": "37.502669",
+ "member": '"Catania"',
+ },
+ )
-def test_georadiusbymember(judge_command):
+def test_geosearch(judge_command):
judge_command(
- "GEORADIUSBYMEMBER Sicily Agrigento 100 km",
+ "GEOSEARCH Sicily FROMLONLAT 15 37 BYBOX 400 400 km ASC WITHCOORD WITHDIST",
{
- "command": "GEORADIUSBYMEMBER",
+ "command": "GEOSEARCH",
"key": "Sicily",
- "member": "Agrigento",
- "float": "100",
- "distunit": "km",
+ "any": "FROMLONLAT 15 37 BYBOX 400 400 km ASC WITHCOORD WITHDIST",
},
)
-def test_georadius(judge_command):
+def test_geosearchstore(judge_command):
judge_command(
- "GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD ",
+ "GEOSEARCHSTORE key2 Sicily FROMLONLAT 15 37 BYBOX 400 400 km ASC COUNT 3 STOREDIST",
{
- "command": "GEORADIUS",
- "key": "Sicily",
- "longitude": "15",
- "latitude": "37",
- "float": "200",
- "distunit": "km",
- "geochoice": "WITHCOORD",
+ "command": "GEOSEARCHSTORE",
+ "key": ["Sicily", "key2"],
+ "any": "FROMLONLAT 15 37 BYBOX 400 400 km ASC COUNT 3 STOREDIST",
},
)
diff --git a/tests/unittests/command_parse/test_list_parse.py b/tests/unittests/command_parse/test_list_parse.py
index e60d7a2..69a294e 100644
--- a/tests/unittests/command_parse/test_list_parse.py
+++ b/tests/unittests/command_parse/test_list_parse.py
@@ -41,6 +41,18 @@ def test_brpoplpush(judge_command):
judge_command("BRPOPLPUSH list1 list2 -1", None)
+def test_brpoplpush_with_double_timeout(judge_command):
+ judge_command(
+ "BRPOPLPUSH list1 list2 10.0",
+ {"command": "BRPOPLPUSH", "key": "list1", "newkey": "list2", "timeout": "10.0"},
+ )
+ judge_command(
+ "BRPOPLPUSH list1 list2 .2",
+ {"command": "BRPOPLPUSH", "key": "list1", "newkey": "list2", "timeout": ".2"},
+ )
+ judge_command("BRPOPLPUSH list1 list2 12.", None)
+
+
def test_linsert(judge_command):
judge_command(
'LINSERT mylist BEFORE "World" "There"',
@@ -106,3 +118,26 @@ def test_lpos(judge_command):
"rank": "-1",
},
)
+
+
+def test_blmove(judge_command):
+ judge_command(
+ "blmove list1 list2 left right 1.2",
+ {
+ "command": "blmove",
+ "key": ["list1", "list2"],
+ "lr_const": ["left", "right"],
+ "timeout": "1.2",
+ },
+ )
+ judge_command(
+ "blmove list1 list2 right right .2",
+ {
+ "command": "blmove",
+ "key": ["list1", "list2"],
+ "lr_const": ["right", "right"],
+ "timeout": ".2",
+ },
+ )
+ judge_command("blmove list1 list2 right right", None)
+ judge_command("blmove list1 right right 1", None)
diff --git a/tests/unittests/command_parse/test_server.py b/tests/unittests/command_parse/test_server.py
index 5129e5f..5ecccbf 100644
--- a/tests/unittests/command_parse/test_server.py
+++ b/tests/unittests/command_parse/test_server.py
@@ -31,6 +31,20 @@ def test_client_list(judge_command):
{"command": "client list", "type_const": "TYPE", "conntype": "REPLICA"},
)
+ judge_command(
+ "client list TYPE REPLICA id 1 2 3",
+ {
+ "command": "client list",
+ "type_const": "TYPE",
+ "conntype": "REPLICA",
+ "clientids": "1 2 3",
+ },
+ )
+ judge_command(
+ "client list ID 1 2 3",
+ {"command": "client list", "clientids": "1 2 3"},
+ )
+
def test_configset(judge_command):
judge_command(
@@ -72,6 +86,18 @@ def test_client_kill(judge_command):
{"command": "CLIENT KILL", "ip_port": "127.0.0.1:12345"},
)
judge_command(
+ "CLIENT KILL ADDR 127.0.0.1:12345 ",
+ {"command": "CLIENT KILL", "ip_port": "127.0.0.1:12345", "addr": "ADDR"},
+ )
+ judge_command(
+ "CLIENT KILL LADDR 127.0.0.1:12345 ",
+ {"command": "CLIENT KILL", "ip_port": "127.0.0.1:12345", "laddr": "LADDR"},
+ )
+ judge_command(
+ "CLIENT KILL USER myuser",
+ {"command": "CLIENT KILL", "const_user": "USER", "username": "myuser"},
+ )
+ judge_command(
"CLIENT KILL id 123455 type pubsub skipme no",
{
"command": "CLIENT KILL",
@@ -199,3 +225,48 @@ def test_acl_setuser(judge_command):
def test_acl_getuser(judge_command):
judge_command("acl getuser alan", {"command": "acl getuser", "username": "alan"})
judge_command("acl getuser", None)
+
+
+def test_failover(judge_command):
+ judge_command(
+ "failover to 10.0.0.5 7379 abort timeout 101",
+ {
+ "command": "failover",
+ "to_const": "to",
+ "host": "10.0.0.5",
+ "port": "7379",
+ "abort_const": "abort",
+ "timeout_const": "timeout",
+ "millisecond": "101",
+ },
+ )
+ judge_command(
+ "failover abort timeout 101",
+ {
+ "command": "failover",
+ "abort_const": "abort",
+ "timeout_const": "timeout",
+ "millisecond": "101",
+ },
+ )
+ judge_command(
+ "failover timeout 101",
+ {
+ "command": "failover",
+ "timeout_const": "timeout",
+ "millisecond": "101",
+ },
+ )
+ judge_command(
+ "failover to 10.0.0.5 7379 force abort timeout 101",
+ {
+ "command": "failover",
+ "to_const": "to",
+ "force": "force",
+ "host": "10.0.0.5",
+ "port": "7379",
+ "abort_const": "abort",
+ "timeout_const": "timeout",
+ "millisecond": "101",
+ },
+ )