Skip to content

Commit 370d8c0

Browse files
feiazifeiazi王飞
and
王飞
authoredApr 10, 2024
根据keyspace获取databases num时,需要加1 (hhyo#2573)
Co-authored-by: 王飞 <fei.wang@xgo.one>
1 parent f8e1f4b commit 370d8c0

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed
 

‎.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
*.pyc
22
*.swp
3+
.vscode/*
34
*.lock
45
*.log
56
.idea/

‎sql/engines/redis.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def get_all_databases(self, **kwargs):
7070
for i in conn.info("Keyspace").keys()
7171
if len(i.split("db")) == 2
7272
]
73-
rows = max(dbs + [16])
73+
rows = max(dbs + [15]) + 1
7474

7575
db_list = [str(x) for x in range(int(rows))]
7676
result.rows = db_list

‎sql/engines/tests.py

+22
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,28 @@ def test_get_all_databases(self, _config_get):
304304
dbs = new_engine.get_all_databases()
305305
self.assertListEqual(dbs.rows, ["0", "1", "2", "3"])
306306

307+
@patch("redis.Redis.info")
308+
@patch("redis.Redis.config_get")
309+
def test_get_all_databases_exception_handling(self, mock_config_get, mock_info):
310+
# 模拟config_get方法抛出异常
311+
mock_config_get.side_effect = Exception("模拟config_get异常")
312+
# 模拟info方法返回特定的Keyspace信息
313+
mock_info.return_value = {
314+
"db0": "some_info",
315+
"db1": "some_info",
316+
"db18": "some_info",
317+
}
318+
# 实例化RedisEngine并调用get_all_databases方法
319+
new_engine = RedisEngine(instance=self.ins)
320+
result = new_engine.get_all_databases()
321+
# 验证返回的数据库列表是否符合预期.
322+
expected_dbs = [str(x) for x in range(int(19))]
323+
self.assertListEqual(result.rows, expected_dbs)
324+
# 验证config_get方法被调用
325+
mock_config_get.assert_called_once_with("databases")
326+
# 验证info方法被调用
327+
mock_info.assert_called_once_with("Keyspace")
328+
307329
def test_query_check_safe_cmd(self):
308330
safe_cmd = "keys 1*"
309331
new_engine = RedisEngine(instance=self.ins)

0 commit comments

Comments
 (0)
Please sign in to comment.