Skip to content

Commit dcb0711

Browse files
committed
Added Sets alignment for RESP2 and RESP3
1 parent ca85e6e commit dcb0711

File tree

5 files changed

+24
-215
lines changed

5 files changed

+24
-215
lines changed

redis/_parsers/helpers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,9 @@ def string_keys_to_dict(key_string, callback):
832832

833833

834834
_RedisCallbacksRESP3 = {
835+
**string_keys_to_dict(
836+
"SDIFF SINTER SMEMBERS SUNION", lambda r: r and set(r) or set()
837+
),
835838
**string_keys_to_dict(
836839
"ZRANGE ZINTER ZPOPMAX ZPOPMIN ZRANGEBYSCORE ZREVRANGE ZREVRANGEBYSCORE "
837840
"ZUNION HGETALL XREADGROUP",

tests/test_asyncio/test_cluster.py

Lines changed: 4 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
assert_resp_response,
3434
is_resp2_connection,
3535
skip_if_redis_enterprise,
36-
skip_if_resp_version,
3736
skip_if_server_version_gte,
3837
skip_if_server_version_lt,
3938
skip_unless_arch_bits,
@@ -1751,85 +1750,40 @@ async def test_cluster_rpoplpush(self, r: RedisCluster) -> None:
17511750
assert await r.lrange("{foo}a", 0, -1) == [b"a1", b"a2"]
17521751
assert await r.lrange("{foo}b", 0, -1) == [b"a3", b"b1", b"b2", b"b3"]
17531752

1754-
@skip_if_resp_version(3)
17551753
async def test_cluster_sdiff(self, r: RedisCluster) -> None:
17561754
await r.sadd("{foo}a", "1", "2", "3")
17571755
assert await r.sdiff("{foo}a", "{foo}b") == {b"1", b"2", b"3"}
17581756
await r.sadd("{foo}b", "2", "3")
17591757
assert await r.sdiff("{foo}a", "{foo}b") == {b"1"}
17601758

1761-
@skip_if_resp_version(2)
1762-
async def test_cluster_sdiff_resp3(self, r: RedisCluster) -> None:
1763-
await r.sadd("{foo}a", "1", "2", "3")
1764-
assert await r.sdiff("{foo}a", "{foo}b") == [b"1", b"2", b"3"]
1765-
await r.sadd("{foo}b", "2", "3")
1766-
assert await r.sdiff("{foo}a", "{foo}b") == [b"1"]
1767-
1768-
@skip_if_resp_version(3)
17691759
async def test_cluster_sdiffstore(self, r: RedisCluster) -> None:
17701760
await r.sadd("{foo}a", "1", "2", "3")
17711761
assert await r.sdiffstore("{foo}c", "{foo}a", "{foo}b") == 3
1772-
assert set(await r.smembers("{foo}c")) == {b"1", b"2", b"3"}
1762+
assert await r.smembers("{foo}c") == {b"1", b"2", b"3"}
17731763
await r.sadd("{foo}b", "2", "3")
17741764
assert await r.sdiffstore("{foo}c", "{foo}a", "{foo}b") == 1
17751765
assert await r.smembers("{foo}c") == {b"1"}
17761766

1777-
@skip_if_resp_version(2)
1778-
async def test_cluster_sdiffstore_resp3(self, r: RedisCluster) -> None:
1779-
await r.sadd("{foo}a", "1", "2", "3")
1780-
assert await r.sdiffstore("{foo}c", "{foo}a", "{foo}b") == 3
1781-
assert await r.smembers("{foo}c") == [b"1", b"2", b"3"]
1782-
await r.sadd("{foo}b", "2", "3")
1783-
assert await r.sdiffstore("{foo}c", "{foo}a", "{foo}b") == 1
1784-
assert await r.smembers("{foo}c") == [b"1"]
1785-
1786-
@skip_if_resp_version(3)
17871767
async def test_cluster_sinter(self, r: RedisCluster) -> None:
17881768
await r.sadd("{foo}a", "1", "2", "3")
17891769
assert await r.sinter("{foo}a", "{foo}b") == set()
17901770
await r.sadd("{foo}b", "2", "3")
1791-
assert set(await r.sinter("{foo}a", "{foo}b")) == {b"2", b"3"}
1771+
assert await r.sinter("{foo}a", "{foo}b") == {b"2", b"3"}
17921772

1793-
@skip_if_resp_version(2)
1794-
async def test_cluster_sinter_resp3(self, r: RedisCluster) -> None:
1795-
await r.sadd("{foo}a", "1", "2", "3")
1796-
assert await r.sinter("{foo}a", "{foo}b") == []
1797-
await r.sadd("{foo}b", "2", "3")
1798-
assert await r.sinter("{foo}a", "{foo}b") == [b"2", b"3"]
1799-
1800-
@skip_if_resp_version(3)
18011773
async def test_cluster_sinterstore(self, r: RedisCluster) -> None:
18021774
await r.sadd("{foo}a", "1", "2", "3")
18031775
assert await r.sinterstore("{foo}c", "{foo}a", "{foo}b") == 0
18041776
assert await r.smembers("{foo}c") == set()
18051777
await r.sadd("{foo}b", "2", "3")
18061778
assert await r.sinterstore("{foo}c", "{foo}a", "{foo}b") == 2
1807-
assert set(await r.smembers("{foo}c")) == {b"2", b"3"}
1808-
1809-
@skip_if_resp_version(2)
1810-
async def test_cluster_sinterstore_resp3(self, r: RedisCluster) -> None:
1811-
await r.sadd("{foo}a", "1", "2", "3")
1812-
assert await r.sinterstore("{foo}c", "{foo}a", "{foo}b") == 0
1813-
assert await r.smembers("{foo}c") == []
1814-
await r.sadd("{foo}b", "2", "3")
1815-
assert await r.sinterstore("{foo}c", "{foo}a", "{foo}b") == 2
1816-
assert await r.smembers("{foo}c") == [b"2", b"3"]
1779+
assert await r.smembers("{foo}c") == {b"2", b"3"}
18171780

1818-
@skip_if_resp_version(3)
18191781
async def test_cluster_smove(self, r: RedisCluster) -> None:
18201782
await r.sadd("{foo}a", "a1", "a2")
18211783
await r.sadd("{foo}b", "b1", "b2")
18221784
assert await r.smove("{foo}a", "{foo}b", "a1")
18231785
assert await r.smembers("{foo}a") == {b"a2"}
1824-
assert set(await r.smembers("{foo}b")) == {b"b1", b"b2", b"a1"}
1825-
1826-
@skip_if_resp_version(2)
1827-
async def test_cluster_smove_resp3(self, r: RedisCluster) -> None:
1828-
await r.sadd("{foo}a", "a1", "a2")
1829-
await r.sadd("{foo}b", "b1", "b2")
1830-
assert await r.smove("{foo}a", "{foo}b", "a1")
1831-
assert await r.smembers("{foo}a") == [b"a2"]
1832-
assert await r.smembers("{foo}b") == [b"b1", b"b2", b"a1"]
1786+
assert await r.smembers("{foo}b") == {b"b1", b"b2", b"a1"}
18331787

18341788
async def test_cluster_sunion(self, r: RedisCluster) -> None:
18351789
await r.sadd("{foo}a", "1", "2")

tests/test_asyncio/test_commands.py

Lines changed: 5 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
assert_resp_response,
2525
assert_resp_response_in,
2626
is_resp2_connection,
27-
skip_if_resp_version,
2827
skip_if_server_version_gte,
2928
skip_if_server_version_lt,
3029
skip_unless_arch_bits,
@@ -1413,77 +1412,37 @@ async def test_scard(self, r: redis.Redis):
14131412
await r.sadd("a", "1", "2", "3")
14141413
assert await r.scard("a") == 3
14151414

1416-
@skip_if_resp_version(3)
14171415
@pytest.mark.onlynoncluster
14181416
async def test_sdiff(self, r: redis.Redis):
14191417
await r.sadd("a", "1", "2", "3")
1420-
assert set(await r.sdiff("a", "b")) == {b"1", b"2", b"3"}
1418+
assert await r.sdiff("a", "b") == {b"1", b"2", b"3"}
14211419
await r.sadd("b", "2", "3")
14221420
assert await r.sdiff("a", "b") == {b"1"}
14231421

1424-
@skip_if_resp_version(2)
1425-
@pytest.mark.onlynoncluster
1426-
async def test_sdiff_resp3(self, r: redis.Redis):
1427-
await r.sadd("a", "1", "2", "3")
1428-
assert set(await r.sdiff("a", "b")) == {b"1", b"2", b"3"}
1429-
await r.sadd("b", "2", "3")
1430-
assert await r.sdiff("a", "b") == [b"1"]
1431-
1432-
@skip_if_resp_version(3)
14331422
@pytest.mark.onlynoncluster
14341423
async def test_sdiffstore(self, r: redis.Redis):
14351424
await r.sadd("a", "1", "2", "3")
14361425
assert await r.sdiffstore("c", "a", "b") == 3
1437-
assert set(await r.smembers("c")) == {b"1", b"2", b"3"}
1426+
assert await r.smembers("c") == {b"1", b"2", b"3"}
14381427
await r.sadd("b", "2", "3")
14391428
assert await r.sdiffstore("c", "a", "b") == 1
14401429
assert await r.smembers("c") == {b"1"}
14411430

1442-
@skip_if_resp_version(2)
1443-
@pytest.mark.onlynoncluster
1444-
async def test_sdiffstore_resp3(self, r: redis.Redis):
1445-
await r.sadd("a", "1", "2", "3")
1446-
assert await r.sdiffstore("c", "a", "b") == 3
1447-
assert set(await r.smembers("c")) == {b"1", b"2", b"3"}
1448-
await r.sadd("b", "2", "3")
1449-
assert await r.sdiffstore("c", "a", "b") == 1
1450-
assert await r.smembers("c") == [b"1"]
1451-
1452-
@skip_if_resp_version(3)
14531431
@pytest.mark.onlynoncluster
14541432
async def test_sinter(self, r: redis.Redis):
14551433
await r.sadd("a", "1", "2", "3")
14561434
assert await r.sinter("a", "b") == set()
14571435
await r.sadd("b", "2", "3")
1458-
assert set(await r.sinter("a", "b")) == {b"2", b"3"}
1436+
assert await r.sinter("a", "b") == {b"2", b"3"}
14591437

1460-
@skip_if_resp_version(2)
1461-
@pytest.mark.onlynoncluster
1462-
async def test_sinter_resp3(self, r: redis.Redis):
1463-
await r.sadd("a", "1", "2", "3")
1464-
assert await r.sinter("a", "b") == []
1465-
await r.sadd("b", "2", "3")
1466-
assert await r.sinter("a", "b") == [b"2", b"3"]
1467-
1468-
@skip_if_resp_version(3)
14691438
@pytest.mark.onlynoncluster
14701439
async def test_sinterstore(self, r: redis.Redis):
14711440
await r.sadd("a", "1", "2", "3")
14721441
assert await r.sinterstore("c", "a", "b") == 0
14731442
assert await r.smembers("c") == set()
14741443
await r.sadd("b", "2", "3")
14751444
assert await r.sinterstore("c", "a", "b") == 2
1476-
assert set(await r.smembers("c")) == {b"2", b"3"}
1477-
1478-
@skip_if_resp_version(2)
1479-
@pytest.mark.onlynoncluster
1480-
async def test_sinterstore_resp3(self, r: redis.Redis):
1481-
await r.sadd("a", "1", "2", "3")
1482-
assert await r.sinterstore("c", "a", "b") == 0
1483-
assert await r.smembers("c") == []
1484-
await r.sadd("b", "2", "3")
1485-
assert await r.sinterstore("c", "a", "b") == 2
1486-
assert set(await r.smembers("c")) == {b"2", b"3"}
1445+
assert await r.smembers("c") == {b"2", b"3"}
14871446

14881447
async def test_sismember(self, r: redis.Redis):
14891448
await r.sadd("a", "1", "2", "3")
@@ -1496,23 +1455,13 @@ async def test_smembers(self, r: redis.Redis):
14961455
await r.sadd("a", "1", "2", "3")
14971456
assert set(await r.smembers("a")) == {b"1", b"2", b"3"}
14981457

1499-
@skip_if_resp_version(3)
15001458
@pytest.mark.onlynoncluster
15011459
async def test_smove(self, r: redis.Redis):
15021460
await r.sadd("a", "a1", "a2")
15031461
await r.sadd("b", "b1", "b2")
15041462
assert await r.smove("a", "b", "a1")
15051463
assert await r.smembers("a") == {b"a2"}
1506-
assert set(await r.smembers("b")) == {b"b1", b"b2", b"a1"}
1507-
1508-
@skip_if_resp_version(2)
1509-
@pytest.mark.onlynoncluster
1510-
async def test_smove_resp3(self, r: redis.Redis):
1511-
await r.sadd("a", "a1", "a2")
1512-
await r.sadd("b", "b1", "b2")
1513-
assert await r.smove("a", "b", "a1")
1514-
assert await r.smembers("a") == [b"a2"]
1515-
assert set(await r.smembers("b")) == {b"b1", b"b2", b"a1"}
1464+
assert await r.smembers("b") == {b"b1", b"b2", b"a1"}
15161465

15171466
async def test_spop(self, r: redis.Redis):
15181467
s = [b"1", b"2", b"3"]

tests/test_cluster.py

Lines changed: 7 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
assert_resp_response,
4747
is_resp2_connection,
4848
skip_if_redis_enterprise,
49-
skip_if_resp_version,
5049
skip_if_server_version_lt,
5150
skip_unless_arch_bits,
5251
wait_for_command,
@@ -1864,96 +1863,51 @@ def test_cluster_rpoplpush(self, r):
18641863
assert r.lrange("{foo}a", 0, -1) == [b"a1", b"a2"]
18651864
assert r.lrange("{foo}b", 0, -1) == [b"a3", b"b1", b"b2", b"b3"]
18661865

1867-
@skip_if_resp_version(3)
18681866
def test_cluster_sdiff(self, r):
18691867
r.sadd("{foo}a", "1", "2", "3")
1870-
assert set(r.sdiff("{foo}a", "{foo}b")) == {b"1", b"2", b"3"}
1868+
assert r.sdiff("{foo}a", "{foo}b") == {b"1", b"2", b"3"}
18711869
r.sadd("{foo}b", "2", "3")
18721870
assert r.sdiff("{foo}a", "{foo}b") == {b"1"}
18731871

1874-
@skip_if_resp_version(2)
1875-
def test_cluster_sdiff_resp3(self, r):
1876-
r.sadd("{foo}a", "1", "2", "3")
1877-
assert set(r.sdiff("{foo}a", "{foo}b")) == {b"1", b"2", b"3"}
1878-
r.sadd("{foo}b", "2", "3")
1879-
assert r.sdiff("{foo}a", "{foo}b") == [b"1"]
1880-
1881-
@skip_if_resp_version(3)
18821872
def test_cluster_sdiffstore(self, r):
18831873
r.sadd("{foo}a", "1", "2", "3")
18841874
assert r.sdiffstore("{foo}c", "{foo}a", "{foo}b") == 3
1885-
assert set(r.smembers("{foo}c")) == {b"1", b"2", b"3"}
1875+
assert r.smembers("{foo}c") == {b"1", b"2", b"3"}
18861876
r.sadd("{foo}b", "2", "3")
18871877
assert r.sdiffstore("{foo}c", "{foo}a", "{foo}b") == 1
18881878
assert r.smembers("{foo}c") == {b"1"}
18891879

1890-
@skip_if_resp_version(2)
1891-
def test_cluster_sdiffstore_resp3(self, r):
1892-
r.sadd("{foo}a", "1", "2", "3")
1893-
assert r.sdiffstore("{foo}c", "{foo}a", "{foo}b") == 3
1894-
assert set(r.smembers("{foo}c")) == {b"1", b"2", b"3"}
1895-
r.sadd("{foo}b", "2", "3")
1896-
assert r.sdiffstore("{foo}c", "{foo}a", "{foo}b") == 1
1897-
assert r.smembers("{foo}c") == [b"1"]
1898-
1899-
@skip_if_resp_version(3)
19001880
def test_cluster_sinter(self, r):
19011881
r.sadd("{foo}a", "1", "2", "3")
19021882
assert r.sinter("{foo}a", "{foo}b") == set()
19031883
r.sadd("{foo}b", "2", "3")
1904-
assert set(r.sinter("{foo}a", "{foo}b")) == {b"2", b"3"}
1905-
1906-
@skip_if_resp_version(2)
1907-
def test_cluster_sinter_resp3(self, r):
1908-
r.sadd("{foo}a", "1", "2", "3")
1909-
assert r.sinter("{foo}a", "{foo}b") == []
1910-
r.sadd("{foo}b", "2", "3")
1911-
assert set(r.sinter("{foo}a", "{foo}b")) == {b"2", b"3"}
1884+
assert r.sinter("{foo}a", "{foo}b") == {b"2", b"3"}
19121885

1913-
@skip_if_resp_version(3)
19141886
def test_cluster_sinterstore(self, r):
19151887
r.sadd("{foo}a", "1", "2", "3")
19161888
assert r.sinterstore("{foo}c", "{foo}a", "{foo}b") == 0
19171889
assert r.smembers("{foo}c") == set()
19181890
r.sadd("{foo}b", "2", "3")
19191891
assert r.sinterstore("{foo}c", "{foo}a", "{foo}b") == 2
1920-
assert set(r.smembers("{foo}c")) == {b"2", b"3"}
1921-
1922-
@skip_if_resp_version(2)
1923-
def test_cluster_sinterstore_resp3(self, r):
1924-
r.sadd("{foo}a", "1", "2", "3")
1925-
assert r.sinterstore("{foo}c", "{foo}a", "{foo}b") == 0
1926-
assert r.smembers("{foo}c") == []
1927-
r.sadd("{foo}b", "2", "3")
1928-
assert r.sinterstore("{foo}c", "{foo}a", "{foo}b") == 2
1929-
assert set(r.smembers("{foo}c")) == {b"2", b"3"}
1892+
assert r.smembers("{foo}c") == {b"2", b"3"}
19301893

1931-
@skip_if_resp_version(3)
19321894
def test_cluster_smove(self, r):
19331895
r.sadd("{foo}a", "a1", "a2")
19341896
r.sadd("{foo}b", "b1", "b2")
19351897
assert r.smove("{foo}a", "{foo}b", "a1")
19361898
assert r.smembers("{foo}a") == {b"a2"}
1937-
assert set(r.smembers("{foo}b")) == {b"b1", b"b2", b"a1"}
1938-
1939-
@skip_if_resp_version(2)
1940-
def test_cluster_smove_resp3(self, r):
1941-
r.sadd("{foo}a", "a1", "a2")
1942-
r.sadd("{foo}b", "b1", "b2")
1943-
assert r.smove("{foo}a", "{foo}b", "a1")
1944-
assert r.smembers("{foo}a") == [b"a2"]
1945-
assert set(r.smembers("{foo}b")) == {b"b1", b"b2", b"a1"}
1899+
assert r.smembers("{foo}b") == {b"b1", b"b2", b"a1"}
19461900

19471901
def test_cluster_sunion(self, r):
19481902
r.sadd("{foo}a", "1", "2")
19491903
r.sadd("{foo}b", "2", "3")
1950-
assert set(r.sunion("{foo}a", "{foo}b")) == {b"1", b"2", b"3"}
1904+
assert r.sunion("{foo}a", "{foo}b") == {b"1", b"2", b"3"}
19511905

19521906
def test_cluster_sunionstore(self, r):
19531907
r.sadd("{foo}a", "1", "2")
19541908
r.sadd("{foo}b", "2", "3")
19551909
assert r.sunionstore("{foo}c", "{foo}a", "{foo}b") == 3
1956-
assert set(r.smembers("{foo}c")) == {b"1", b"2", b"3"}
1910+
assert r.smembers("{foo}c") == {b"1", b"2", b"3"}
19571911

19581912
@skip_if_server_version_lt("6.2.0")
19591913
def test_cluster_zdiff(self, r):

0 commit comments

Comments
 (0)