def manager(): # mock event handlers manager = EventHandlerManager() manager._event_handler_map.clear() manager._add_event_handler(EventHandlerA1()) manager._add_event_handler(EventHandlerB1()) manager._add_event_handler(EventHandlerA2()) return manager
def test_event_manager_event_mapping_handlers(setup): """Test of event mapping handlers are properly created according to data in db.""" manager = EventHandlerManager() assert manager.get_handlers(0) == [] handlers_1 = manager.get_handlers(1) assert len(handlers_1) == 1 assert handlers_1[0].event_id == 1 assert set(handlers_1[0].message_ids) == set([1, 2]) handlers_2 = manager.get_handlers(2) assert len(handlers_2) == 1 assert handlers_2[0].event_id == 2 assert set(handlers_2[0].message_ids) == set([3])
def init(): context.setup_configuration(CONFIGURATION_FILENAME) database.init_db() context.log_queue = multiprocessing.Queue() context.request_processor = RequestProcessor() context.event_handler_manager = EventHandlerManager()
def test_build_messages_multiple_event_msg(setup): context.event_handler_manager = EventHandlerManager() single_request = EventRequestSingle(1, 1, {}, 1442502890000) request = EventRequestBatch([single_request]) messages = request.build_messages() print messages assert len(messages) == 2 assert set([message['message_id'] for message in messages]) == {1, 2}
def test_build_messages_single_event_msg(setup): context.event_handler_manager = EventHandlerManager() single_request = EventRequestSingle(1, 2, {}, 1442502890000) request = EventRequestBatch([single_request]) messages = request.build_messages() print messages assert len(messages) == 1 assert messages[0]['message_id'] == 3
def test_build_messages_missing_event(setup): context.event_handler_manager = EventHandlerManager() event_proto = EventMessage_pb2.Event() event_proto.user_id = 1 event_proto.event_id = 5 event_proto.event_type = 2 event_proto.timestamp = 1442502890000 request = EventRequestBatch([event_proto]) assert len(request.build_messages()) == 0
def test_login_event_persists_user_data(setup): '''Test that user data is persisted after login event is received''' context.event_handler_manager = EventHandlerManager() event_batch = create_batch_with_login_event( user_id=1338, platform_id=2, device_token='str_device_token') event_request = EventRequestBatch([event_batch]) event_request.process() device_tokens = list(database.get_device_tokens(1338)) assert device_tokens == [(2, 'str_device_token')]
def test_login_event_duplicate(setup): '''Tests that user data is persisted correctly for duplicated login events''' context.event_handler_manager = EventHandlerManager() event_batch = create_batch_with_login_event( user_id=1338, platform_id=1, device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch]) event_request_platform1.process() event_request_platform1.process() device_tokens = list(database.get_device_tokens(1338)) assert device_tokens == [(1, 'str_device_token_1')]
def test_build_messages_multiple_event_msg(setup): context.event_handler_manager = EventHandlerManager() event_proto = EventMessage_pb2.Event() event_proto.user_id = 1 event_proto.event_id = 1 event_proto.event_type = 2 event_proto.timestamp = 1442502890000 request = EventRequestBatch([event_proto]) messages = request.build_messages() print messages assert len(messages) == 2 assert set([message['message_id'] for message in messages]) == {1, 2}
def test_build_messages_single_event_msg(setup): context.event_handler_manager = EventHandlerManager() event_proto = EventMessage_pb2.Event() event_proto.user_id = 1 event_proto.event_id = 2 event_proto.event_type = 2 event_proto.timestamp = 1442502890000 request = EventRequestBatch([event_proto]) messages = request.build_messages() print messages assert len(messages) == 1 assert messages[0]['message_id'] == 3
def test_login_event_same_platform_different_device(setup): '''Tests that both devices are persisted if they have different tokens''' context.event_handler_manager = EventHandlerManager() event_batch_platform1 = create_batch_with_login_event( user_id=1338, platform_id=1, device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch_platform1]) event_request_platform1.process() event_batch_platform2 = create_batch_with_login_event( user_id=1338, platform_id=1, device_token='str_device_token_2') event_request_platform2 = EventRequestBatch([event_batch_platform2]) event_request_platform2.process() device_tokens = list(database.get_device_tokens(1338)) assert sorted(device_tokens) == [(1, 'str_device_token_1'), (1, 'str_device_token_2')]
def test_login_event_more_platforms(setup): '''Tests that user data is persisted for more platforms''' context.event_handler_manager = EventHandlerManager() event_batch_platform1 = create_batch_with_login_event( user_id=1338, platform_id=1, device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch_platform1]) event_request_platform1.process() event_batch_platform2 = create_batch_with_login_event( user_id=1338, platform_id=2, device_token='str_device_token_2') event_request_platform2 = EventRequestBatch([event_batch_platform2]) event_request_platform2.process() device_tokens = list(database.get_device_tokens(1338)) assert sorted(device_tokens) == [(1, 'str_device_token_1'), (2, 'str_device_token_2')]
def test_login_and_then_other_event(setup, mocker): '''Tests that both devices are persisted if they have different tokens''' context.event_handler_manager = EventHandlerManager() event_batch_platform1 = create_batch_with_login_event( user_id=1338, platform_id=1, device_id='str_device_id_1', device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch_platform1]) event_request_platform1.process() # test no message event3 = EventRequestSingle(1, -1, None, 1442502890000) event_request_other3 = EventRequestBatch([event3]) messages3 = event_request_other3.build_messages() assert len(messages3) == 0
def init(): database.init_db() current_revision = database.get_current_revision() head_revision = database.get_head_revision() if head_revision != current_revision: print( "Database is not up to date! " "To upgrade database run pushkin --configuration {cfg} --upgrade-db" .format(cfg=CONFIGURATION_FILENAME)) sys.exit(1) context.log_queue = multiprocessing.Queue() context.request_processor = RequestProcessor() context.event_handler_manager = EventHandlerManager() context.message_blacklist = { row.login_id: set(row.blacklist) for row in database.get_all_message_blacklist() }
def test_login_and_then_other_event(setup, mocker): '''Tests that both devices are persisted if they have different tokens''' context.event_handler_manager = EventHandlerManager() event_batch_platform1 = create_batch_with_login_event( user_id=1338, platform_id=1, device_token='str_device_token_1') event_request_platform1 = EventRequestBatch([event_batch_platform1]) event_request_platform1.process() # test no message event1 = EventRequestSingle(1, -1, None, 1442502890000) event_request_other1 = EventRequestBatch([event1]) messages1 = event_request_other1.build_messages() assert len(messages1) == 0 # test parameter from event params = {'title_param': 'param title', 'text_param': 'param content'} event2 = EventRequestSingle(user_id=1, event_id=3, pairs=params, timestamp=2442502890000) event_request_other2 = EventRequestBatch([event2]) messages2 = event_request_other2.build_messages() assert len(messages2) == 1 assert messages2[0]['message_id'] == 4 assert messages2[0]['content'] == 'text param content' assert messages2[0]['title'] == 'title param title' # test missing parameter which is required by localization event3 = EventRequestSingle(user_id=1, event_id=3, pairs=None, timestamp=1442502890000) event_request_other3 = EventRequestBatch([event3]) messages3 = event_request_other3.build_messages() assert len(messages3) == 0
def test_build_messages_missing_event(setup): context.event_handler_manager = EventHandlerManager() single_request = EventRequestSingle(1, 5, {}, 1442502890000) request = EventRequestBatch([single_request]) assert len(request.build_messages()) == 0