diff --git a/zerver/tests/test_event_queue.py b/zerver/tests/test_event_queue.py index 474eb59e6d..391e3021f4 100644 --- a/zerver/tests/test_event_queue.py +++ b/zerver/tests/test_event_queue.py @@ -10,7 +10,7 @@ from zerver.lib.test_classes import ZulipTestCase from zerver.lib.test_helpers import POSTRequestMock from zerver.models import Recipient, Stream, Subscription, UserProfile, get_stream from zerver.tornado.event_queue import maybe_enqueue_notifications, \ - allocate_client_descriptor, \ + allocate_client_descriptor, EventQueue, \ get_client_descriptor, missedmessage_hook, persistent_queue_filename from zerver.tornado.views import get_events @@ -341,3 +341,132 @@ class FileReloadLogicTest(ZulipTestCase): "/home/zulip/tornado/event_queues.9993.json") self.assertEqual(persistent_queue_filename(9993, last=True), "/home/zulip/tornado/event_queues.9993.last.json") + +class EventQueueTest(ZulipTestCase): + def test_one_event(self) -> None: + queue = EventQueue("1") + queue.push({"type": "pointer", + "pointer": 1, + "timestamp": "1"}) + self.assertFalse(queue.empty()) + self.assertEqual(queue.contents(), + [{'id': 0, + 'type': 'pointer', + "pointer": 1, + "timestamp": "1"}]) + + def test_event_collapsing(self) -> None: + queue = EventQueue("1") + for pointer_val in range(1, 10): + queue.push({"type": "pointer", + "pointer": pointer_val, + "timestamp": str(pointer_val)}) + self.assertEqual(queue.contents(), + [{'id': 8, + 'type': 'pointer', + "pointer": 9, + "timestamp": "9"}]) + + queue = EventQueue("2") + for pointer_val in range(1, 10): + queue.push({"type": "pointer", + "pointer": pointer_val, + "timestamp": str(pointer_val)}) + queue.push({"type": "unknown"}) + queue.push({"type": "restart", "server_generation": "1"}) + for pointer_val in range(11, 20): + queue.push({"type": "pointer", + "pointer": pointer_val, + "timestamp": str(pointer_val)}) + queue.push({"type": "restart", "server_generation": "2"}) + self.assertEqual(queue.contents(), + [{"type": "unknown", + "id": 9}, + {'id': 19, + 'type': 'pointer', + "pointer": 19, + "timestamp": "19"}, + {"id": 20, + "type": "restart", + "server_generation": "2"}]) + for pointer_val in range(21, 23): + queue.push({"type": "pointer", + "pointer": pointer_val, + "timestamp": str(pointer_val)}) + self.assertEqual(queue.contents(), + [{"type": "unknown", + "id": 9}, + {'id': 19, + 'type': 'pointer', + "pointer": 19, + "timestamp": "19"}, + {"id": 20, + "type": "restart", + "server_generation": "2"}, + {'id': 22, + 'type': 'pointer', + "pointer": 22, + "timestamp": "22"}, + ]) + + def test_flag_add_collapsing(self) -> None: + queue = EventQueue("1") + queue.push({"type": "update_message_flags", + "flag": "read", + "operation": "add", + "all": False, + "messages": [1, 2, 3, 4], + "timestamp": "1"}) + queue.push({"type": "update_message_flags", + "flag": "read", + "all": False, + "operation": "add", + "messages": [5, 6], + "timestamp": "1"}) + self.assertEqual(queue.contents(), + [{'id': 1, + 'type': 'update_message_flags', + "all": False, + "flag": "read", + "operation": "add", + "messages": [1, 2, 3, 4, 5, 6], + "timestamp": "1"}]) + + def test_flag_remove_collapsing(self) -> None: + queue = EventQueue("1") + queue.push({"type": "update_message_flags", + "flag": "collapsed", + "operation": "remove", + "all": False, + "messages": [1, 2, 3, 4], + "timestamp": "1"}) + queue.push({"type": "update_message_flags", + "flag": "collapsed", + "all": False, + "operation": "remove", + "messages": [5, 6], + "timestamp": "1"}) + self.assertEqual(queue.contents(), + [{'id': 1, + 'type': 'update_message_flags', + "all": False, + "flag": "collapsed", + "operation": "remove", + "messages": [1, 2, 3, 4, 5, 6], + "timestamp": "1"}]) + + def test_collapse_event(self) -> None: + queue = EventQueue("1") + queue.push({"type": "pointer", + "pointer": 1, + "timestamp": "1"}) + queue.push({"type": "unknown", + "timestamp": "1"}) + self.assertEqual(queue.contents(), + [{'id': 0, + 'type': 'pointer', + "pointer": 1, + "timestamp": "1"}, + {'id': 1, + 'type': 'unknown', + "timestamp": "1"}]) diff --git a/zerver/tests/test_events.py b/zerver/tests/test_events.py index 88e0e5bac5..0d26b3770b 100644 --- a/zerver/tests/test_events.py +++ b/zerver/tests/test_events.py @@ -9,7 +9,6 @@ import sys from django.conf import settings from django.http import HttpRequest, HttpResponse -from django.test import TestCase from django.utils.timezone import now as timezone_now from io import StringIO @@ -144,7 +143,6 @@ from zerver.tornado.event_queue import ( clear_client_event_queues_for_testing, get_client_info_for_message_event, process_message_event, - EventQueue, ) from zerver.tornado.views import get_events @@ -3061,135 +3059,6 @@ class GetUnreadMsgsTest(ZulipTestCase): result = get_unread_data() self.assertEqual(result['mentions'], [stream_message_id]) -class EventQueueTest(TestCase): - def test_one_event(self) -> None: - queue = EventQueue("1") - queue.push({"type": "pointer", - "pointer": 1, - "timestamp": "1"}) - self.assertFalse(queue.empty()) - self.assertEqual(queue.contents(), - [{'id': 0, - 'type': 'pointer', - "pointer": 1, - "timestamp": "1"}]) - - def test_event_collapsing(self) -> None: - queue = EventQueue("1") - for pointer_val in range(1, 10): - queue.push({"type": "pointer", - "pointer": pointer_val, - "timestamp": str(pointer_val)}) - self.assertEqual(queue.contents(), - [{'id': 8, - 'type': 'pointer', - "pointer": 9, - "timestamp": "9"}]) - - queue = EventQueue("2") - for pointer_val in range(1, 10): - queue.push({"type": "pointer", - "pointer": pointer_val, - "timestamp": str(pointer_val)}) - queue.push({"type": "unknown"}) - queue.push({"type": "restart", "server_generation": "1"}) - for pointer_val in range(11, 20): - queue.push({"type": "pointer", - "pointer": pointer_val, - "timestamp": str(pointer_val)}) - queue.push({"type": "restart", "server_generation": "2"}) - self.assertEqual(queue.contents(), - [{"type": "unknown", - "id": 9}, - {'id': 19, - 'type': 'pointer', - "pointer": 19, - "timestamp": "19"}, - {"id": 20, - "type": "restart", - "server_generation": "2"}]) - for pointer_val in range(21, 23): - queue.push({"type": "pointer", - "pointer": pointer_val, - "timestamp": str(pointer_val)}) - self.assertEqual(queue.contents(), - [{"type": "unknown", - "id": 9}, - {'id': 19, - 'type': 'pointer', - "pointer": 19, - "timestamp": "19"}, - {"id": 20, - "type": "restart", - "server_generation": "2"}, - {'id': 22, - 'type': 'pointer', - "pointer": 22, - "timestamp": "22"}, - ]) - - def test_flag_add_collapsing(self) -> None: - queue = EventQueue("1") - queue.push({"type": "update_message_flags", - "flag": "read", - "operation": "add", - "all": False, - "messages": [1, 2, 3, 4], - "timestamp": "1"}) - queue.push({"type": "update_message_flags", - "flag": "read", - "all": False, - "operation": "add", - "messages": [5, 6], - "timestamp": "1"}) - self.assertEqual(queue.contents(), - [{'id': 1, - 'type': 'update_message_flags', - "all": False, - "flag": "read", - "operation": "add", - "messages": [1, 2, 3, 4, 5, 6], - "timestamp": "1"}]) - - def test_flag_remove_collapsing(self) -> None: - queue = EventQueue("1") - queue.push({"type": "update_message_flags", - "flag": "collapsed", - "operation": "remove", - "all": False, - "messages": [1, 2, 3, 4], - "timestamp": "1"}) - queue.push({"type": "update_message_flags", - "flag": "collapsed", - "all": False, - "operation": "remove", - "messages": [5, 6], - "timestamp": "1"}) - self.assertEqual(queue.contents(), - [{'id': 1, - 'type': 'update_message_flags', - "all": False, - "flag": "collapsed", - "operation": "remove", - "messages": [1, 2, 3, 4, 5, 6], - "timestamp": "1"}]) - - def test_collapse_event(self) -> None: - queue = EventQueue("1") - queue.push({"type": "pointer", - "pointer": 1, - "timestamp": "1"}) - queue.push({"type": "unknown", - "timestamp": "1"}) - self.assertEqual(queue.contents(), - [{'id': 0, - 'type': 'pointer', - "pointer": 1, - "timestamp": "1"}, - {'id': 1, - 'type': 'unknown', - "timestamp": "1"}]) - class ClientDescriptorsTest(ZulipTestCase): def test_get_client_info_for_all_public_streams(self) -> None: hamlet = self.example_user('hamlet')