mirror of
https://github.com/matrix-org/pantalaimon.git
synced 2024-10-01 03:35:38 -04:00
tests: Add a test for history fetching resumption.
This commit is contained in:
parent
a1c206b8a6
commit
8c0b1f53df
@ -1,4 +1,5 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
|
|
||||||
import janus
|
import janus
|
||||||
@ -548,3 +549,115 @@ class TestClass(object):
|
|||||||
assert not tasks
|
assert not tasks
|
||||||
|
|
||||||
await client.loop_stop()
|
await client.loop_stop()
|
||||||
|
|
||||||
|
async def test_history_fetching_resume(self, client, aioresponse, loop):
|
||||||
|
if not INDEXING_ENABLED:
|
||||||
|
pytest.skip("Indexing needs to be enabled to test this")
|
||||||
|
|
||||||
|
sync_url = re.compile(
|
||||||
|
r'^https://example\.org/_matrix/client/r0/sync\?access_token=.*'
|
||||||
|
)
|
||||||
|
|
||||||
|
aioresponse.get(
|
||||||
|
sync_url,
|
||||||
|
status=200,
|
||||||
|
payload=self.initial_sync_response,
|
||||||
|
)
|
||||||
|
|
||||||
|
aioresponse.get(
|
||||||
|
sync_url,
|
||||||
|
status=200,
|
||||||
|
payload=self.empty_sync,
|
||||||
|
repeat=True
|
||||||
|
)
|
||||||
|
|
||||||
|
aioresponse.post(
|
||||||
|
"https://example.org/_matrix/client/r0/keys/upload?access_token=abc123",
|
||||||
|
status=200,
|
||||||
|
payload=self.keys_upload_response,
|
||||||
|
repeat=True
|
||||||
|
)
|
||||||
|
|
||||||
|
aioresponse.post(
|
||||||
|
"https://example.org/_matrix/client/r0/keys/query?access_token=abc123",
|
||||||
|
status=200,
|
||||||
|
payload=self.keys_query_response,
|
||||||
|
repeat=True
|
||||||
|
)
|
||||||
|
|
||||||
|
messages_url = re.compile(
|
||||||
|
r'^https://example\.org/_matrix/client/r0/rooms/{}/messages\?.*'.format(TEST_ROOM_ID)
|
||||||
|
)
|
||||||
|
|
||||||
|
aioresponse.get(
|
||||||
|
messages_url,
|
||||||
|
status=200,
|
||||||
|
payload=self.messages_response
|
||||||
|
)
|
||||||
|
|
||||||
|
aioresponse.get(
|
||||||
|
messages_url,
|
||||||
|
status=200,
|
||||||
|
payload=self.empty_messages,
|
||||||
|
repeat=True
|
||||||
|
)
|
||||||
|
|
||||||
|
await client.receive_response(self.login_response)
|
||||||
|
|
||||||
|
client.start_loop(100)
|
||||||
|
|
||||||
|
await client.new_fetch_task.wait()
|
||||||
|
await client.new_fetch_task.wait()
|
||||||
|
|
||||||
|
await client.loop_stop()
|
||||||
|
|
||||||
|
index_path = os.path.join(
|
||||||
|
client.store_path,
|
||||||
|
client.server_name,
|
||||||
|
client.user_id
|
||||||
|
)
|
||||||
|
|
||||||
|
# Remove the lock file since the GC won't do it for us
|
||||||
|
writer_lock = os.path.join(index_path, ".tantivy-writer.lock")
|
||||||
|
os.remove(writer_lock)
|
||||||
|
|
||||||
|
# Create a new client
|
||||||
|
client2 = PanClient(
|
||||||
|
client.server_name,
|
||||||
|
client.pan_store,
|
||||||
|
client.pan_conf,
|
||||||
|
client.homeserver,
|
||||||
|
client.queue,
|
||||||
|
client.user_id,
|
||||||
|
client.device_id,
|
||||||
|
client.store_path,
|
||||||
|
)
|
||||||
|
client2.user_id = client.user_id
|
||||||
|
client2.access_token = client.access_token
|
||||||
|
|
||||||
|
tasks = client2.pan_store.load_fetcher_tasks(
|
||||||
|
client2.server_name,
|
||||||
|
client2.user_id
|
||||||
|
)
|
||||||
|
assert len(tasks) == 1
|
||||||
|
|
||||||
|
# Check that the task is our end token from the messages resposne
|
||||||
|
assert tasks[0].room_id == TEST_ROOM_ID
|
||||||
|
assert tasks[0].token == "t47409-4357353_219380_26003_2265"
|
||||||
|
|
||||||
|
client2.start_loop(100)
|
||||||
|
|
||||||
|
# We wait for two events here because the event gets fired at the start
|
||||||
|
# of the loop
|
||||||
|
await client2.fetch_loop_event.wait()
|
||||||
|
await client2.fetch_loop_event.wait()
|
||||||
|
|
||||||
|
tasks = client2.pan_store.load_fetcher_tasks(
|
||||||
|
client2.server_name,
|
||||||
|
client2.user_id
|
||||||
|
)
|
||||||
|
# Check that there are no more tasks since we reached the start of the
|
||||||
|
# room timeline.
|
||||||
|
assert not tasks
|
||||||
|
|
||||||
|
await client2.loop_stop()
|
||||||
|
Loading…
Reference in New Issue
Block a user