1
0
Fork 0
iredis/tests/unittests/command_parse/test_base_token.py
Daniel Baumann 7865f9a813
Merging upstream version 1.12.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-09 17:09:15 +01:00

80 lines
2.5 KiB
Python

def test_ip_match(judge_command):
def ip_valid(ip, valid):
if valid:
judge_command(
f"cluster meet {ip} 6379",
{"command": "cluster meet", "ip": ip, "port": "6379"},
)
else:
judge_command(f"cluster meet {ip} 6379", None)
ip_valid("192.168.0.1", True)
ip_valid("255.255.255.255", True)
ip_valid("192.168.0.256", False)
ip_valid("192.256.0.26", False)
ip_valid("192.255.256.26", False)
ip_valid("0.0.0.0", True)
ip_valid("99.999.100.1", False)
ip_valid("300.168.0.1", False)
def test_port_match(judge_command):
def port_valid(port, valid):
if valid:
judge_command(
f"cluster meet 192.168.0.1 {port}",
{"command": "cluster meet", "ip": "192.168.0.1", "port": port},
)
else:
judge_command(f"cluster meet 192.168.0.1 {port}", None)
port_valid("65535", True)
port_valid("0", False)
port_valid("1", True)
port_valid("192.168.0.256", False)
port_valid("65536", False)
port_valid("65545", False)
port_valid("65635", False)
port_valid("66535", False)
port_valid("75535", False)
port_valid("1024", True)
port_valid("6553", True)
port_valid("99999", False)
port_valid("99999999", False)
def test_command_with_key_in_quotes(judge_command):
judge_command(
'cluster keyslot "mykey"', {"command": "cluster keyslot", "key": '"mykey"'}
)
judge_command(
'cluster keyslot "\\"mykey"',
{"command": "cluster keyslot", "key": '"\\"mykey"'},
)
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")