|
@@ -962,3 +962,40 @@ class HTTPPusherTests(HomeserverTestCase):
|
|
|
channel.json_body["pushers"][0]["org.matrix.msc3881.device_id"],
|
|
|
lookup_result.device_id,
|
|
|
)
|
|
|
+
|
|
|
+ @override_config({"push": {"jitter_delay": "10s"}})
|
|
|
+ def test_jitter(self) -> None:
|
|
|
+ """Tests that enabling jitter actually delays sending push."""
|
|
|
+ user_id, access_token = self._make_user_with_pusher("user")
|
|
|
+ other_user_id, other_access_token = self._make_user_with_pusher("otheruser")
|
|
|
+
|
|
|
+ room = self.helper.create_room_as(user_id, tok=access_token)
|
|
|
+ self.helper.join(room=room, user=other_user_id, tok=other_access_token)
|
|
|
+
|
|
|
+ # Send a message and check that it did not generate a push, as it should
|
|
|
+ # be delayed.
|
|
|
+ self.helper.send(room, body="Hi!", tok=other_access_token)
|
|
|
+ self.assertEqual(len(self.push_attempts), 0)
|
|
|
+
|
|
|
+ # Now advance time past the max jitter, and assert the message was sent.
|
|
|
+ self.reactor.advance(15)
|
|
|
+ self.assertEqual(len(self.push_attempts), 1)
|
|
|
+
|
|
|
+ self.push_attempts[0][0].callback({})
|
|
|
+
|
|
|
+ # Now we send a bunch of messages and assert that they were all sent
|
|
|
+ # within the 10s max delay.
|
|
|
+ for _ in range(10):
|
|
|
+ self.helper.send(room, body="Hi!", tok=other_access_token)
|
|
|
+
|
|
|
+ index = 1
|
|
|
+ for _ in range(11):
|
|
|
+ while len(self.push_attempts) > index:
|
|
|
+ self.push_attempts[index][0].callback({})
|
|
|
+ self.pump()
|
|
|
+ index += 1
|
|
|
+
|
|
|
+ self.reactor.advance(1)
|
|
|
+ self.pump()
|
|
|
+
|
|
|
+ self.assertEqual(len(self.push_attempts), 11)
|