13
13
assert_resp_response ,
14
14
is_resp2_connection ,
15
15
skip_if_server_version_gte ,
16
- skip_if_server_version_lt ,
17
16
skip_unless_arch_bits ,
18
17
)
19
18
from valkey ._parsers import AsyncCommandsParser
@@ -1052,7 +1051,6 @@ async def test_cluster_myid(self, r: ValkeyCluster) -> None:
1052
1051
myid = await r .cluster_myid (node )
1053
1052
assert len (myid ) == 40
1054
1053
1055
- @skip_if_server_version_lt ("7.2.0" )
1056
1054
async def test_cluster_myshardid (self , r : ValkeyCluster ) -> None :
1057
1055
node = r .get_random_node ()
1058
1056
myshardid = await r .cluster_myshardid (node )
@@ -1071,7 +1069,6 @@ async def test_cluster_addslots(self, r: ValkeyCluster) -> None:
1071
1069
mock_node_resp (node , "OK" )
1072
1070
assert await r .cluster_addslots (node , 1 , 2 , 3 ) is True
1073
1071
1074
- @skip_if_server_version_lt ("7.0.0" )
1075
1072
async def test_cluster_addslotsrange (self , r : ValkeyCluster ):
1076
1073
node = r .get_random_node ()
1077
1074
mock_node_resp (node , "OK" )
@@ -1103,7 +1100,6 @@ async def test_cluster_delslots(self) -> None:
1103
1100
1104
1101
await r .aclose ()
1105
1102
1106
- @skip_if_server_version_lt ("7.0.0" )
1107
1103
async def test_cluster_delslotsrange (self ):
1108
1104
r = await get_mocked_valkey_client (host = default_host , port = default_port )
1109
1105
mock_all_nodes_resp (r , "OK" )
@@ -1280,7 +1276,6 @@ async def test_cluster_replicas(self, r: ValkeyCluster) -> None:
1280
1276
== "r4xfga22229cf3c652b6fca0d09ff69f3e0d4d"
1281
1277
)
1282
1278
1283
- @skip_if_server_version_lt ("7.0.0" )
1284
1279
async def test_cluster_links (self , r : ValkeyCluster ):
1285
1280
node = r .get_random_node ()
1286
1281
res = await r .cluster_links (node )
@@ -1411,16 +1406,13 @@ async def test_time(self, r: ValkeyCluster) -> None:
1411
1406
assert isinstance (t [0 ], int )
1412
1407
assert isinstance (t [1 ], int )
1413
1408
1414
- @skip_if_server_version_lt ("4.0.0" )
1415
1409
async def test_memory_usage (self , r : ValkeyCluster ) -> None :
1416
1410
await r .set ("foo" , "bar" )
1417
1411
assert isinstance (await r .memory_usage ("foo" ), int )
1418
1412
1419
- @skip_if_server_version_lt ("4.0.0" )
1420
1413
async def test_memory_malloc_stats (self , r : ValkeyCluster ) -> None :
1421
1414
assert await r .memory_malloc_stats ()
1422
1415
1423
- @skip_if_server_version_lt ("4.0.0" )
1424
1416
async def test_memory_stats (self , r : ValkeyCluster ) -> None :
1425
1417
# put a key into the current db to make sure that "db.<current-db>"
1426
1418
# has data
@@ -1432,12 +1424,10 @@ async def test_memory_stats(self, r: ValkeyCluster) -> None:
1432
1424
if key .startswith ("db." ):
1433
1425
assert isinstance (value , dict )
1434
1426
1435
- @skip_if_server_version_lt ("4.0.0" )
1436
1427
async def test_memory_help (self , r : ValkeyCluster ) -> None :
1437
1428
with pytest .raises (NotImplementedError ):
1438
1429
await r .memory_help ()
1439
1430
1440
- @skip_if_server_version_lt ("4.0.0" )
1441
1431
async def test_memory_doctor (self , r : ValkeyCluster ) -> None :
1442
1432
with pytest .raises (NotImplementedError ):
1443
1433
await r .memory_doctor ()
@@ -1450,7 +1440,6 @@ async def test_cluster_echo(self, r: ValkeyCluster) -> None:
1450
1440
node = r .get_primaries ()[0 ]
1451
1441
assert await r .echo ("foo bar" , target_nodes = node ) == b"foo bar"
1452
1442
1453
- @skip_if_server_version_lt ("1.0.0" )
1454
1443
async def test_debug_segfault (self , r : ValkeyCluster ) -> None :
1455
1444
with pytest .raises (NotImplementedError ):
1456
1445
await r .debug_segfault ()
@@ -1468,52 +1457,44 @@ async def test_config_resetstat(self, r: ValkeyCluster) -> None:
1468
1457
)
1469
1458
assert reset_commands_processed < prior_commands_processed
1470
1459
1471
- @skip_if_server_version_lt ("6.2.0" )
1472
1460
async def test_client_trackinginfo (self , r : ValkeyCluster ) -> None :
1473
1461
node = r .get_primaries ()[0 ]
1474
1462
res = await r .client_trackinginfo (target_nodes = node )
1475
1463
assert len (res ) > 2
1476
1464
assert "prefixes" in res or b"prefixes" in res
1477
1465
1478
- @skip_if_server_version_lt ("2.9.50" )
1479
1466
async def test_client_pause (self , r : ValkeyCluster ) -> None :
1480
1467
node = r .get_primaries ()[0 ]
1481
1468
assert await r .client_pause (1 , target_nodes = node )
1482
1469
assert await r .client_pause (timeout = 1 , target_nodes = node )
1483
1470
with pytest .raises (ValkeyError ):
1484
1471
await r .client_pause (timeout = "not an integer" , target_nodes = node )
1485
1472
1486
- @skip_if_server_version_lt ("6.2.0" )
1487
1473
async def test_client_unpause (self , r : ValkeyCluster ) -> None :
1488
1474
assert await r .client_unpause ()
1489
1475
1490
- @skip_if_server_version_lt ("5.0.0" )
1491
1476
async def test_client_id (self , r : ValkeyCluster ) -> None :
1492
1477
node = r .get_primaries ()[0 ]
1493
1478
assert await r .client_id (target_nodes = node ) > 0
1494
1479
1495
- @skip_if_server_version_lt ("5.0.0" )
1496
1480
async def test_client_unblock (self , r : ValkeyCluster ) -> None :
1497
1481
node = r .get_primaries ()[0 ]
1498
1482
myid = await r .client_id (target_nodes = node )
1499
1483
assert not await r .client_unblock (myid , target_nodes = node )
1500
1484
assert not await r .client_unblock (myid , error = True , target_nodes = node )
1501
1485
assert not await r .client_unblock (myid , error = False , target_nodes = node )
1502
1486
1503
- @skip_if_server_version_lt ("6.0.0" )
1504
1487
async def test_client_getredir (self , r : ValkeyCluster ) -> None :
1505
1488
node = r .get_primaries ()[0 ]
1506
1489
assert isinstance (await r .client_getredir (target_nodes = node ), int )
1507
1490
assert await r .client_getredir (target_nodes = node ) == - 1
1508
1491
1509
- @skip_if_server_version_lt ("6.2.0" )
1510
1492
async def test_client_info (self , r : ValkeyCluster ) -> None :
1511
1493
node = r .get_primaries ()[0 ]
1512
1494
info = await r .client_info (target_nodes = node )
1513
1495
assert isinstance (info , dict )
1514
1496
assert "addr" in info
1515
1497
1516
- @skip_if_server_version_lt ("2.6.9" )
1517
1498
async def test_client_kill (
1518
1499
self , r : ValkeyCluster , create_valkey : Callable [..., ValkeyCluster ]
1519
1500
) -> None :
@@ -1541,29 +1522,25 @@ async def test_client_kill(
1541
1522
assert clients [0 ].get ("name" ) == "valkey-py-c1"
1542
1523
await r2 .aclose ()
1543
1524
1544
- @skip_if_server_version_lt ("2.6.0" )
1545
1525
async def test_cluster_bitop_not_empty_string (self , r : ValkeyCluster ) -> None :
1546
1526
await r .set ("{foo}a" , "" )
1547
1527
await r .bitop ("not" , "{foo}r" , "{foo}a" )
1548
1528
assert await r .get ("{foo}r" ) is None
1549
1529
1550
- @skip_if_server_version_lt ("2.6.0" )
1551
1530
async def test_cluster_bitop_not (self , r : ValkeyCluster ) -> None :
1552
1531
test_str = b"\xAA \x00 \xFF \x55 "
1553
1532
correct = ~ 0xAA00FF55 & 0xFFFFFFFF
1554
1533
await r .set ("{foo}a" , test_str )
1555
1534
await r .bitop ("not" , "{foo}r" , "{foo}a" )
1556
1535
assert int (binascii .hexlify (await r .get ("{foo}r" )), 16 ) == correct
1557
1536
1558
- @skip_if_server_version_lt ("2.6.0" )
1559
1537
async def test_cluster_bitop_not_in_place (self , r : ValkeyCluster ) -> None :
1560
1538
test_str = b"\xAA \x00 \xFF \x55 "
1561
1539
correct = ~ 0xAA00FF55 & 0xFFFFFFFF
1562
1540
await r .set ("{foo}a" , test_str )
1563
1541
await r .bitop ("not" , "{foo}a" , "{foo}a" )
1564
1542
assert int (binascii .hexlify (await r .get ("{foo}a" )), 16 ) == correct
1565
1543
1566
- @skip_if_server_version_lt ("2.6.0" )
1567
1544
async def test_cluster_bitop_single_string (self , r : ValkeyCluster ) -> None :
1568
1545
test_str = b"\x01 \x02 \xFF "
1569
1546
await r .set ("{foo}a" , test_str )
@@ -1574,7 +1551,6 @@ async def test_cluster_bitop_single_string(self, r: ValkeyCluster) -> None:
1574
1551
assert await r .get ("{foo}res2" ) == test_str
1575
1552
assert await r .get ("{foo}res3" ) == test_str
1576
1553
1577
- @skip_if_server_version_lt ("2.6.0" )
1578
1554
async def test_cluster_bitop_string_operands (self , r : ValkeyCluster ) -> None :
1579
1555
await r .set ("{foo}a" , b"\x01 \x02 \xFF \xFF " )
1580
1556
await r .set ("{foo}b" , b"\x01 \x02 \xFF " )
@@ -1585,28 +1561,24 @@ async def test_cluster_bitop_string_operands(self, r: ValkeyCluster) -> None:
1585
1561
assert int (binascii .hexlify (await r .get ("{foo}res2" )), 16 ) == 0x0102FFFF
1586
1562
assert int (binascii .hexlify (await r .get ("{foo}res3" )), 16 ) == 0x000000FF
1587
1563
1588
- @skip_if_server_version_lt ("6.2.0" )
1589
1564
async def test_cluster_copy (self , r : ValkeyCluster ) -> None :
1590
1565
assert await r .copy ("{foo}a" , "{foo}b" ) == 0
1591
1566
await r .set ("{foo}a" , "bar" )
1592
1567
assert await r .copy ("{foo}a" , "{foo}b" ) == 1
1593
1568
assert await r .get ("{foo}a" ) == b"bar"
1594
1569
assert await r .get ("{foo}b" ) == b"bar"
1595
1570
1596
- @skip_if_server_version_lt ("6.2.0" )
1597
1571
async def test_cluster_copy_and_replace (self , r : ValkeyCluster ) -> None :
1598
1572
await r .set ("{foo}a" , "foo1" )
1599
1573
await r .set ("{foo}b" , "foo2" )
1600
1574
assert await r .copy ("{foo}a" , "{foo}b" ) == 0
1601
1575
assert await r .copy ("{foo}a" , "{foo}b" , replace = True ) == 1
1602
1576
1603
- @skip_if_server_version_lt ("6.2.0" )
1604
1577
async def test_cluster_lmove (self , r : ValkeyCluster ) -> None :
1605
1578
await r .rpush ("{foo}a" , "one" , "two" , "three" , "four" )
1606
1579
assert await r .lmove ("{foo}a" , "{foo}b" )
1607
1580
assert await r .lmove ("{foo}a" , "{foo}b" , "right" , "left" )
1608
1581
1609
- @skip_if_server_version_lt ("6.2.0" )
1610
1582
async def test_cluster_blmove (self , r : ValkeyCluster ) -> None :
1611
1583
await r .rpush ("{foo}a" , "one" , "two" , "three" , "four" )
1612
1584
assert await r .blmove ("{foo}a" , "{foo}b" , 5 )
@@ -1767,15 +1739,13 @@ async def test_cluster_sunionstore(self, r: ValkeyCluster) -> None:
1767
1739
assert await r .sunionstore ("{foo}c" , "{foo}a" , "{foo}b" ) == 3
1768
1740
assert await r .smembers ("{foo}c" ) == {b"1" , b"2" , b"3" }
1769
1741
1770
- @skip_if_server_version_lt ("6.2.0" )
1771
1742
async def test_cluster_zdiff (self , r : ValkeyCluster ) -> None :
1772
1743
await r .zadd ("{foo}a" , {"a1" : 1 , "a2" : 2 , "a3" : 3 })
1773
1744
await r .zadd ("{foo}b" , {"a1" : 1 , "a2" : 2 })
1774
1745
assert await r .zdiff (["{foo}a" , "{foo}b" ]) == [b"a3" ]
1775
1746
response = await r .zdiff (["{foo}a" , "{foo}b" ], withscores = True )
1776
1747
assert_resp_response (r , response , [b"a3" , b"3" ], [[b"a3" , 3.0 ]])
1777
1748
1778
- @skip_if_server_version_lt ("6.2.0" )
1779
1749
async def test_cluster_zdiffstore (self , r : ValkeyCluster ) -> None :
1780
1750
await r .zadd ("{foo}a" , {"a1" : 1 , "a2" : 2 , "a3" : 3 })
1781
1751
await r .zadd ("{foo}b" , {"a1" : 1 , "a2" : 2 })
@@ -1784,7 +1754,6 @@ async def test_cluster_zdiffstore(self, r: ValkeyCluster) -> None:
1784
1754
response = await r .zrange ("{foo}out" , 0 , - 1 , withscores = True )
1785
1755
assert_resp_response (r , response , [(b"a3" , 3.0 )], [[b"a3" , 3.0 ]])
1786
1756
1787
- @skip_if_server_version_lt ("6.2.0" )
1788
1757
async def test_cluster_zinter (self , r : ValkeyCluster ) -> None :
1789
1758
await r .zadd ("{foo}a" , {"a1" : 1 , "a2" : 2 , "a3" : 1 })
1790
1759
await r .zadd ("{foo}b" , {"a1" : 2 , "a2" : 2 , "a3" : 2 })
@@ -1880,7 +1849,6 @@ async def test_cluster_zinterstore_with_weight(self, r: ValkeyCluster) -> None:
1880
1849
[[b"a3" , 20.0 ], [b"a1" , 23.0 ]],
1881
1850
)
1882
1851
1883
- @skip_if_server_version_lt ("4.9.0" )
1884
1852
async def test_cluster_bzpopmax (self , r : ValkeyCluster ) -> None :
1885
1853
await r .zadd ("{foo}a" , {"a1" : 1 , "a2" : 2 })
1886
1854
await r .zadd ("{foo}b" , {"b1" : 10 , "b2" : 20 })
@@ -1917,7 +1885,6 @@ async def test_cluster_bzpopmax(self, r: ValkeyCluster) -> None:
1917
1885
[b"{foo}c" , b"c1" , 100 ],
1918
1886
)
1919
1887
1920
- @skip_if_server_version_lt ("4.9.0" )
1921
1888
async def test_cluster_bzpopmin (self , r : ValkeyCluster ) -> None :
1922
1889
await r .zadd ("{foo}a" , {"a1" : 1 , "a2" : 2 })
1923
1890
await r .zadd ("{foo}b" , {"b1" : 10 , "b2" : 20 })
@@ -1954,7 +1921,6 @@ async def test_cluster_bzpopmin(self, r: ValkeyCluster) -> None:
1954
1921
[b"{foo}c" , b"c1" , 100 ],
1955
1922
)
1956
1923
1957
- @skip_if_server_version_lt ("6.2.0" )
1958
1924
async def test_cluster_zrangestore (self , r : ValkeyCluster ) -> None :
1959
1925
await r .zadd ("{foo}a" , {"a1" : 1 , "a2" : 2 , "a3" : 3 })
1960
1926
assert await r .zrangestore ("{foo}b" , "{foo}a" , 0 , 1 )
@@ -1981,7 +1947,6 @@ async def test_cluster_zrangestore(self, r: ValkeyCluster) -> None:
1981
1947
)
1982
1948
assert await r .zrange ("{foo}b" , 0 , - 1 ) == [b"a2" ]
1983
1949
1984
- @skip_if_server_version_lt ("6.2.0" )
1985
1950
async def test_cluster_zunion (self , r : ValkeyCluster ) -> None :
1986
1951
await r .zadd ("{foo}a" , {"a1" : 1 , "a2" : 1 , "a3" : 1 })
1987
1952
await r .zadd ("{foo}b" , {"a1" : 2 , "a2" : 2 , "a3" : 2 })
@@ -2085,7 +2050,6 @@ async def test_cluster_zunionstore_with_weight(self, r: ValkeyCluster) -> None:
2085
2050
[[b"a2" , 5.0 ], [b"a4" , 12.0 ], [b"a3" , 20.0 ], [b"a1" , 23.0 ]],
2086
2051
)
2087
2052
2088
- @skip_if_server_version_lt ("2.8.9" )
2089
2053
async def test_cluster_pfcount (self , r : ValkeyCluster ) -> None :
2090
2054
members = {b"1" , b"2" , b"3" }
2091
2055
await r .pfadd ("{foo}a" , * members )
@@ -2095,7 +2059,6 @@ async def test_cluster_pfcount(self, r: ValkeyCluster) -> None:
2095
2059
assert await r .pfcount ("{foo}b" ) == len (members_b )
2096
2060
assert await r .pfcount ("{foo}a" , "{foo}b" ) == len (members_b .union (members ))
2097
2061
2098
- @skip_if_server_version_lt ("2.8.9" )
2099
2062
async def test_cluster_pfmerge (self , r : ValkeyCluster ) -> None :
2100
2063
mema = {b"1" , b"2" , b"3" }
2101
2064
memb = {b"2" , b"3" , b"4" }
@@ -2114,7 +2077,6 @@ async def test_cluster_sort_store(self, r: ValkeyCluster) -> None:
2114
2077
assert await r .lrange ("{foo}sorted_values" , 0 , - 1 ) == [b"1" , b"2" , b"3" ]
2115
2078
2116
2079
# GEO COMMANDS
2117
- @skip_if_server_version_lt ("6.2.0" )
2118
2080
async def test_cluster_geosearchstore (self , r : ValkeyCluster ) -> None :
2119
2081
values = (2.1909389952632 , 41.433791470673 , "place1" ) + (
2120
2082
2.1873744593677 ,
@@ -2133,7 +2095,6 @@ async def test_cluster_geosearchstore(self, r: ValkeyCluster) -> None:
2133
2095
assert await r .zrange ("{foo}places_barcelona" , 0 , - 1 ) == [b"place1" ]
2134
2096
2135
2097
@skip_unless_arch_bits (64 )
2136
- @skip_if_server_version_lt ("6.2.0" )
2137
2098
async def test_geosearchstore_dist (self , r : ValkeyCluster ) -> None :
2138
2099
values = (2.1909389952632 , 41.433791470673 , "place1" ) + (
2139
2100
2.1873744593677 ,
@@ -2153,7 +2114,6 @@ async def test_geosearchstore_dist(self, r: ValkeyCluster) -> None:
2153
2114
# instead of save the geo score, the distance is saved.
2154
2115
assert await r .zscore ("{foo}places_barcelona" , "place1" ) == 88.05060698409301
2155
2116
2156
- @skip_if_server_version_lt ("3.2.0" )
2157
2117
async def test_cluster_georadius_store (self , r : ValkeyCluster ) -> None :
2158
2118
values = (2.1909389952632 , 41.433791470673 , "place1" ) + (
2159
2119
2.1873744593677 ,
@@ -2168,7 +2128,6 @@ async def test_cluster_georadius_store(self, r: ValkeyCluster) -> None:
2168
2128
assert await r .zrange ("{foo}places_barcelona" , 0 , - 1 ) == [b"place1" ]
2169
2129
2170
2130
@skip_unless_arch_bits (64 )
2171
- @skip_if_server_version_lt ("3.2.0" )
2172
2131
async def test_cluster_georadius_store_dist (self , r : ValkeyCluster ) -> None :
2173
2132
values = (2.1909389952632 , 41.433791470673 , "place1" ) + (
2174
2133
2.1873744593677 ,
@@ -2201,7 +2160,6 @@ async def test_cluster_keys(self, r: ValkeyCluster) -> None:
2201
2160
assert set (await r .keys (pattern = "test*" , target_nodes = "primaries" )) == keys
2202
2161
2203
2162
# SCAN COMMANDS
2204
- @skip_if_server_version_lt ("2.8.0" )
2205
2163
async def test_cluster_scan (self , r : ValkeyCluster ) -> None :
2206
2164
await r .set ("a" , 1 )
2207
2165
await r .set ("b" , 2 )
@@ -2220,7 +2178,6 @@ async def test_cluster_scan(self, r: ValkeyCluster) -> None:
2220
2178
assert sorted (cursors .keys ()) == sorted (node .name for node in nodes )
2221
2179
assert all (cursor == 0 for cursor in cursors .values ())
2222
2180
2223
- @skip_if_server_version_lt ("6.0.0" )
2224
2181
async def test_cluster_scan_type (self , r : ValkeyCluster ) -> None :
2225
2182
await r .sadd ("a-set" , 1 )
2226
2183
await r .sadd ("b-set" , 1 )
@@ -2243,7 +2200,6 @@ async def test_cluster_scan_type(self, r: ValkeyCluster) -> None:
2243
2200
assert sorted (cursors .keys ()) == sorted (node .name for node in nodes )
2244
2201
assert all (cursor == 0 for cursor in cursors .values ())
2245
2202
2246
- @skip_if_server_version_lt ("2.8.0" )
2247
2203
async def test_cluster_scan_iter (self , r : ValkeyCluster ) -> None :
2248
2204
keys_all = []
2249
2205
keys_1 = []
@@ -2272,7 +2228,6 @@ async def test_cluster_randomkey(self, r: ValkeyCluster) -> None:
2272
2228
await r .set (key , 1 )
2273
2229
assert await r .randomkey (target_nodes = node ) in (b"{foo}a" , b"{foo}b" , b"{foo}c" )
2274
2230
2275
- @skip_if_server_version_lt ("6.0.0" )
2276
2231
async def test_acl_log (
2277
2232
self , r : ValkeyCluster , create_valkey : Callable [..., ValkeyCluster ]
2278
2233
) -> None :
0 commit comments