mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Implement .call_later() in MockClock
This commit is contained in:
parent
be9a8d68e0
commit
38da9884e7
@ -28,3 +28,25 @@ class MockClockTestCase(unittest.TestCase):
|
|||||||
self.clock.advance_time(20)
|
self.clock.advance_time(20)
|
||||||
|
|
||||||
self.assertEquals(20, self.clock.time() - start_time)
|
self.assertEquals(20, self.clock.time() - start_time)
|
||||||
|
|
||||||
|
def test_later(self):
|
||||||
|
invoked = [0, 0]
|
||||||
|
|
||||||
|
def _cb0():
|
||||||
|
invoked[0] = 1
|
||||||
|
self.clock.call_later(10, _cb0)
|
||||||
|
|
||||||
|
def _cb1():
|
||||||
|
invoked[1] = 1
|
||||||
|
self.clock.call_later(20, _cb1)
|
||||||
|
|
||||||
|
self.assertFalse(invoked[0])
|
||||||
|
|
||||||
|
self.clock.advance_time(15)
|
||||||
|
|
||||||
|
self.assertTrue(invoked[0])
|
||||||
|
self.assertFalse(invoked[1])
|
||||||
|
|
||||||
|
self.clock.advance_time(5)
|
||||||
|
|
||||||
|
self.assertTrue(invoked[1])
|
||||||
|
@ -18,6 +18,8 @@ from synapse.api.errors import cs_error, CodeMessageException, StoreError
|
|||||||
from synapse.api.constants import Membership
|
from synapse.api.constants import Membership
|
||||||
from synapse.storage import prepare_database
|
from synapse.storage import prepare_database
|
||||||
|
|
||||||
|
from synapse.util.logcontext import LoggingContext
|
||||||
|
|
||||||
from synapse.api.events.room import (
|
from synapse.api.events.room import (
|
||||||
RoomMemberEvent, MessageEvent
|
RoomMemberEvent, MessageEvent
|
||||||
)
|
)
|
||||||
@ -134,16 +136,40 @@ class MockKey(object):
|
|||||||
class MockClock(object):
|
class MockClock(object):
|
||||||
now = 1000
|
now = 1000
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
# list of tuples of (absolute_time, callback) in no particular order
|
||||||
|
self.timers = []
|
||||||
|
|
||||||
def time(self):
|
def time(self):
|
||||||
return self.now
|
return self.now
|
||||||
|
|
||||||
def time_msec(self):
|
def time_msec(self):
|
||||||
return self.time() * 1000
|
return self.time() * 1000
|
||||||
|
|
||||||
|
def call_later(self, delay, callback):
|
||||||
|
current_context = LoggingContext.current_context()
|
||||||
|
|
||||||
|
def wrapped_callback():
|
||||||
|
LoggingContext.thread_local.current_context = current_context
|
||||||
|
callback()
|
||||||
|
self.timers.append((self.now + delay, wrapped_callback))
|
||||||
|
|
||||||
|
def cancel_call_later(self, timer):
|
||||||
|
raise NotImplementedError("Oopsie")
|
||||||
|
|
||||||
# For unit testing
|
# For unit testing
|
||||||
def advance_time(self, secs):
|
def advance_time(self, secs):
|
||||||
self.now += secs
|
self.now += secs
|
||||||
|
|
||||||
|
timers = self.timers
|
||||||
|
self.timers = []
|
||||||
|
|
||||||
|
for time, callback in timers:
|
||||||
|
if self.now >= time:
|
||||||
|
callback()
|
||||||
|
else:
|
||||||
|
self.timers.append((time, callback))
|
||||||
|
|
||||||
|
|
||||||
class SQLiteMemoryDbPool(ConnectionPool, object):
|
class SQLiteMemoryDbPool(ConnectionPool, object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user