You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.4 KiB
57 lines
2.4 KiB
import pybbt
|
|
|
|
from helpers.commands.checker import Checker
|
|
from helpers.constant import REDIS_SERVER_MODULES_ENABLED
|
|
from helpers.redis import Redis
|
|
|
|
|
|
class TairHashChecker(Checker):
|
|
PREFIX = "tairHash"
|
|
|
|
def __init__(self):
|
|
self.cnt = 0
|
|
|
|
def add_data(self, r: Redis, cross_slots_cmd: bool):
|
|
if not REDIS_SERVER_MODULES_ENABLED:
|
|
return
|
|
|
|
p = r.pipeline()
|
|
# different parameters type
|
|
p.execute_command("EXHSET", f"{self.PREFIX}_{self.cnt}", "field", "value")
|
|
p.execute_command("EXHSET", f"{self.PREFIX}_{self.cnt}_ABS", "field_abs", "value_abs", "ABS", 2)
|
|
p.execute_command("EXHSET", f"{self.PREFIX}_{self.cnt}_EX", "field_ex", "value_ex", "EX", 20000)
|
|
|
|
# different key
|
|
# different field
|
|
p.execute_command("EXHSET", f"{self.PREFIX}_{self.cnt}_ALL_01", "field_all_01", "value_all_01", "EX", 20000, "ABS", 2)
|
|
p.execute_command("EXHSET", f"{self.PREFIX}_{self.cnt}_ALL_01", "field_all_02", "value_all_02", "EX", 20000, "ABS", 3)
|
|
|
|
p.execute_command("EXHSET", f"{self.PREFIX}_{self.cnt}_ALL_02", "field_all_01", "value_all_01", "EX", 20000, "ABS", 2)
|
|
p.execute_command("EXHSET", f"{self.PREFIX}_{self.cnt}_ALL_02", "field_all_02", "value_all_02", "EX", 20000, "ABS", 3)
|
|
|
|
ret = p.execute()
|
|
# pybbt.ASSERT_EQ(ret, [b"1", b"1", b"1", b"1",b"1", b"1",b"1"])
|
|
pybbt.ASSERT_EQ(ret, [1, 1, 1, 1, 1, 1, 1])
|
|
|
|
self.cnt += 1
|
|
|
|
def check_data(self, r: Redis, cross_slots_cmd: bool):
|
|
if not REDIS_SERVER_MODULES_ENABLED:
|
|
return
|
|
|
|
for i in range(self.cnt):
|
|
p = r.pipeline()
|
|
|
|
p.execute_command("EXHGET", f"{self.PREFIX}_{i}", "field")
|
|
p.execute_command("EXHGET", f"{self.PREFIX}_{i}_ABS", "field_abs")
|
|
p.execute_command("EXHGET", f"{self.PREFIX}_{i}_EX", "field_ex")
|
|
|
|
p.execute_command("EXHGET", f"{self.PREFIX}_{i}_ALL_01", "field_all_01")
|
|
p.execute_command("EXHGET", f"{self.PREFIX}_{i}_ALL_01", "field_all_02")
|
|
|
|
p.execute_command("EXHGET", f"{self.PREFIX}_{i}_ALL_02", "field_all_01")
|
|
p.execute_command("EXHGET", f"{self.PREFIX}_{i}_ALL_02", "field_all_02")
|
|
|
|
ret = p.execute()
|
|
# 需要确定一下如果一个命令返回多个值是如何封装的
|
|
pybbt.ASSERT_EQ(ret, [b"value", b"value_abs", b"value_ex", b"value_all_01", b"value_all_02", b"value_all_01", b"value_all_02", ])
|
|
|