Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/integration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# this speeds up coverage with Python 3.12: https://github.com/nedbat/coveragepy/issues/1665
COVERAGE_CORE: sysmon
# patch releases get included in the base version image when they are published
# for example after 8.2.1 is published, 8.2 image contains 8.2.1 content
CURRENT_CLIENT_LIBS_TEST_STACK_IMAGE_TAG: '8.2'
CURRENT_REDIS_VERSION: '8.2'

Expand Down Expand Up @@ -74,7 +76,7 @@ jobs:
max-parallel: 15
fail-fast: false
matrix:
redis-version: ['8.2.1-pre', '${{ needs.redis_version.outputs.CURRENT }}', '8.0.2' ,'7.4.4', '7.2.9']
redis-version: ['8.4-M01-pre', '${{ needs.redis_version.outputs.CURRENT }}', '8.0.2' ,'7.4.4', '7.2.9']
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we shouldn't change 8.2 to 8.4 and instead support both. 8.4 is another version to support so instead we have to remove 7.4 and 7.2 as soon as they EOL

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found that into the image version that is marked as CURRENT, once a patch is released, the base version image gets updated/rebuilt. For example, when 8.2.1 has been released, the 8.2 image gets rebuilt to contain Redis server with version 8.2.1. So now when 8.2.2 is release the used CURRENT(which is 8.2) will automatically start using it for the tests.
I was wondering if it is time to remove at least 7.2, but decided to add this removal in an additional PR after discussing this internally ...

python-version: ['3.9', '3.13']
parser-backend: ['plain']
event-loop: ['asyncio']
Expand Down
23 changes: 23 additions & 0 deletions tests/test_asyncio/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -3158,6 +3158,7 @@ async def test_xgroup_destroy(self, r: redis.Redis):
assert await r.xgroup_destroy(stream, group)

@skip_if_server_version_lt("7.0.0")
@skip_if_server_version_gte("8.2.2")
async def test_xgroup_setid(self, r: redis.Redis):
stream = "stream"
group = "group"
Expand All @@ -3178,6 +3179,28 @@ async def test_xgroup_setid(self, r: redis.Redis):
]
assert await r.xinfo_groups(stream) == expected

@skip_if_server_version_lt("8.2.2")
async def test_xgroup_setid_fixed_max_entries_read(self, r):
stream = "stream"
group = "group"
message_id = await r.xadd(stream, {"foo": "bar"})
await r.xadd(stream, {"foo1": "bar1"})

await r.xgroup_create(stream, group, 0)
# advance the last_delivered_id to the message_id
await r.xgroup_setid(stream, group, message_id, entries_read=2)
expected = [
{
"name": group.encode(),
"consumers": 0,
"pending": 0,
"last-delivered-id": message_id,
"entries-read": 2,
"lag": 0,
}
]
assert await r.xinfo_groups(stream) == expected

@skip_if_server_version_lt("7.2.0")
async def test_xinfo_consumers(self, r: redis.Redis):
stream = "stream"
Expand Down
4 changes: 2 additions & 2 deletions tests/test_asyncio/test_vsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -502,8 +502,8 @@ async def test_vsim_epsilon(d_client):
await d_client.vset().vadd("myset", [2, 1, 1], "a")
await d_client.vset().vadd("myset", [2, 0, 1], "b")
await d_client.vset().vadd("myset", [2, 0, 0], "c")
await d_client.vset().vadd("myset", [2, 0, -1], "d")
await d_client.vset().vadd("myset", [2, -1, -1], "e")
await d_client.vset().vadd("myset", [2, 0, 2], "d")
await d_client.vset().vadd("myset", [-2, -1, -1], "e")

res1 = await d_client.vset().vsim("myset", [2, 1, 1])
assert 5 == len(res1)
Expand Down
51 changes: 51 additions & 0 deletions tests/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -4607,6 +4607,7 @@ def test_xgroup_create_mkstream(self, r):
assert r.xinfo_groups(stream) == expected

@skip_if_server_version_lt("7.0.0")
@skip_if_server_version_gte("8.2.2")
def test_xgroup_create_entriesread(self, r: redis.Redis):
stream = "stream"
group = "group"
Expand All @@ -4628,6 +4629,33 @@ def test_xgroup_create_entriesread(self, r: redis.Redis):
]
assert r.xinfo_groups(stream) == expected

@skip_if_server_version_lt("8.2.2")
def test_xgroup_create_entriesread_fixed_max_entries_read(self, r: redis.Redis):
stream = "stream"
group = "group"
r.xadd(stream, {"foo": "bar"})
r.xadd(stream, {"foo1": "bar1"})
r.xadd(stream, {"foo2": "bar2"})

# no group is setup yet, no info to obtain
assert r.xinfo_groups(stream) == []

assert r.xgroup_create(stream, group, 0, entries_read=7)
# validate the entries-read is max the number of entries
# in the stream and lag shows the entries between
# last_delivered_id and entries_added
expected = [
{
"name": group.encode(),
"consumers": 0,
"pending": 0,
"last-delivered-id": b"0-0",
"entries-read": 3,
"lag": 3,
}
]
assert r.xinfo_groups(stream) == expected

@skip_if_server_version_lt("5.0.0")
def test_xgroup_delconsumer(self, r):
stream = "stream"
Expand Down Expand Up @@ -4675,6 +4703,7 @@ def test_xgroup_destroy(self, r):
assert r.xgroup_destroy(stream, group)

@skip_if_server_version_lt("7.0.0")
@skip_if_server_version_gte("8.2.2")
def test_xgroup_setid(self, r):
stream = "stream"
group = "group"
Expand All @@ -4695,6 +4724,28 @@ def test_xgroup_setid(self, r):
]
assert r.xinfo_groups(stream) == expected

@skip_if_server_version_lt("8.2.2")
def test_xgroup_setid_fixed_max_entries_read(self, r):
stream = "stream"
group = "group"
message_id = r.xadd(stream, {"foo": "bar"})
r.xadd(stream, {"foo1": "bar1"})

r.xgroup_create(stream, group, 0)
# advance the last_delivered_id to the message_id
r.xgroup_setid(stream, group, message_id, entries_read=5)
expected = [
{
"name": group.encode(),
"consumers": 0,
"pending": 0,
"last-delivered-id": message_id,
"entries-read": 2,
"lag": 0,
}
]
assert r.xinfo_groups(stream) == expected

@skip_if_server_version_lt("7.2.0")
def test_xinfo_consumers(self, r):
stream = "stream"
Expand Down
4 changes: 2 additions & 2 deletions tests/test_vsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -504,8 +504,8 @@ def test_vsim_epsilon(d_client):
d_client.vset().vadd("myset", [2, 1, 1], "a")
d_client.vset().vadd("myset", [2, 0, 1], "b")
d_client.vset().vadd("myset", [2, 0, 0], "c")
d_client.vset().vadd("myset", [2, 0, -1], "d")
d_client.vset().vadd("myset", [2, -1, -1], "e")
d_client.vset().vadd("myset", [2, 0, 2], "d")
d_client.vset().vadd("myset", [-2, -1, -1], "e")

res1 = d_client.vset().vsim("myset", [2, 1, 1])
assert 5 == len(res1)
Expand Down