mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 16:34:49 -04:00
Fix limit logic for EventsStream (#7358)
* Factor out functions for injecting events into database I want to add some more flexibility to the tools for injecting events into the database, and I don't want to clutter up HomeserverTestCase with them, so let's factor them out to a new file. * Rework TestReplicationDataHandler This wasn't very easy to work with: the mock wrapping was largely superfluous, and it's useful to be able to inspect the received rows, and clear out the received list. * Fix AssertionErrors being thrown by EventsStream Part of the problem was that there was an off-by-one error in the assertion, but also the limit logic was too simple. Fix it all up and add some tests.
This commit is contained in:
parent
eeef9633af
commit
c2e1a2110f
14 changed files with 658 additions and 67 deletions
|
@ -1,5 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2019 New Vector Ltd
|
||||
# Copyright 2020 The Matrix.org Foundation C.I.C
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
@ -16,3 +17,22 @@
|
|||
"""
|
||||
Utilities for running the unit tests
|
||||
"""
|
||||
from typing import Awaitable, TypeVar
|
||||
|
||||
TV = TypeVar("TV")
|
||||
|
||||
|
||||
def get_awaitable_result(awaitable: Awaitable[TV]) -> TV:
|
||||
"""Get the result from an Awaitable which should have completed
|
||||
|
||||
Asserts that the given awaitable has a result ready, and returns its value
|
||||
"""
|
||||
i = awaitable.__await__()
|
||||
try:
|
||||
next(i)
|
||||
except StopIteration as e:
|
||||
# awaitable returned a result
|
||||
return e.value
|
||||
|
||||
# if next didn't raise, the awaitable hasn't completed.
|
||||
raise Exception("awaitable has not yet completed")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue