1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
import pytest
from redis.commands import CommandsParser
class TestCommandsParser:
def test_init_commands(self, r):
commands_parser = CommandsParser(r)
assert commands_parser.commands is not None
assert "get" in commands_parser.commands
def test_get_keys_predetermined_key_location(self, r):
commands_parser = CommandsParser(r)
args1 = ["GET", "foo"]
args2 = ["OBJECT", "encoding", "foo"]
args3 = ["MGET", "foo", "bar", "foobar"]
assert commands_parser.get_keys(r, *args1) == ["foo"]
assert commands_parser.get_keys(r, *args2) == ["foo"]
assert commands_parser.get_keys(r, *args3) == ["foo", "bar", "foobar"]
@pytest.mark.filterwarnings("ignore:ResponseError")
def test_get_moveable_keys(self, r):
commands_parser = CommandsParser(r)
args1 = [
"EVAL",
"return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}",
2,
"key1",
"key2",
"first",
"second",
]
args2 = ["XREAD", "COUNT", 2, b"STREAMS", "mystream", "writers", 0, 0]
args3 = ["ZUNIONSTORE", "out", 2, "zset1", "zset2", "WEIGHTS", 2, 3]
args4 = ["GEORADIUS", "Sicily", 15, 37, 200, "km", "WITHCOORD", b"STORE", "out"]
args5 = ["MEMORY USAGE", "foo"]
args6 = [
"MIGRATE",
"192.168.1.34",
6379,
"",
0,
5000,
b"KEYS",
"key1",
"key2",
"key3",
]
args7 = ["MIGRATE", "192.168.1.34", 6379, "key1", 0, 5000]
args8 = ["STRALGO", "LCS", "STRINGS", "string_a", "string_b"]
args9 = ["STRALGO", "LCS", "KEYS", "key1", "key2"]
assert commands_parser.get_keys(r, *args1).sort() == ["key1", "key2"].sort()
assert (
commands_parser.get_keys(r, *args2).sort() == ["mystream", "writers"].sort()
)
assert (
commands_parser.get_keys(r, *args3).sort()
== ["out", "zset1", "zset2"].sort()
)
assert commands_parser.get_keys(r, *args4).sort() == ["Sicily", "out"].sort()
assert commands_parser.get_keys(r, *args5).sort() == ["foo"].sort()
assert (
commands_parser.get_keys(r, *args6).sort()
== ["key1", "key2", "key3"].sort()
)
assert commands_parser.get_keys(r, *args7).sort() == ["key1"].sort()
assert commands_parser.get_keys(r, *args8) is None
assert commands_parser.get_keys(r, *args9).sort() == ["key1", "key2"].sort()
def test_get_pubsub_keys(self, r):
commands_parser = CommandsParser(r)
args1 = ["PUBLISH", "foo", "bar"]
args2 = ["PUBSUB NUMSUB", "foo1", "foo2", "foo3"]
args3 = ["PUBSUB channels", "*"]
args4 = ["SUBSCRIBE", "foo1", "foo2", "foo3"]
assert commands_parser.get_keys(r, *args1) == ["foo"]
assert commands_parser.get_keys(r, *args2) == ["foo1", "foo2", "foo3"]
assert commands_parser.get_keys(r, *args3) == ["*"]
assert commands_parser.get_keys(r, *args4) == ["foo1", "foo2", "foo3"]
|