def test_timeout_event_on_broken_heartbeat(event_loop): ch = helper.gen_channel("heartbeat-test") pubnub = PubNubAsyncio(messenger_config, custom_event_loop=event_loop) pubnub_listener = PubNubAsyncio(listener_config, custom_event_loop=event_loop) pubnub.config.uuid = helper.gen_channel("messenger") pubnub_listener.config.uuid = helper.gen_channel("listener") # - connect to :ch-pnpres callback_presence = SubscribeListener() pubnub_listener.add_listener(callback_presence) pubnub_listener.subscribe().channels(ch).with_presence().execute() yield from callback_presence.wait_for_connect() envelope = yield from callback_presence.wait_for_presence_on(ch) assert ch == envelope.channel assert 'join' == envelope.event assert pubnub_listener.uuid == envelope.uuid # - connect to :ch callback_messages = SubscribeListener() pubnub.add_listener(callback_messages) pubnub.subscribe().channels(ch).execute() useless_connect_future = callback_messages.wait_for_connect() presence_future = asyncio.ensure_future( callback_presence.wait_for_presence_on(ch)) # - assert join event yield from asyncio.wait([useless_connect_future, presence_future]) prs_envelope = presence_future.result() assert ch == prs_envelope.channel assert 'join' == prs_envelope.event assert pubnub.uuid == prs_envelope.uuid # wait for one heartbeat call yield from asyncio.sleep(8) # - break messenger heartbeat loop pubnub._subscription_manager._stop_heartbeat_timer() # - assert for timeout envelope = yield from callback_presence.wait_for_presence_on(ch) assert ch == envelope.channel assert 'timeout' == envelope.event assert pubnub.uuid == envelope.uuid pubnub.unsubscribe().channels(ch).execute() yield from callback_messages.wait_for_disconnect() # - disconnect from :ch-pnpres pubnub_listener.unsubscribe().channels(ch).execute() yield from callback_presence.wait_for_disconnect() pubnub.stop() pubnub_listener.stop()
def test_timeout_event_on_broken_heartbeat(event_loop): ch = helper.gen_channel("heartbeat-test") pubnub = PubNubAsyncio(messenger_config, custom_event_loop=event_loop) pubnub_listener = PubNubAsyncio(listener_config, custom_event_loop=event_loop) pubnub.config.uuid = helper.gen_channel("messenger") pubnub_listener.config.uuid = helper.gen_channel("listener") # - connect to :ch-pnpres callback_presence = SubscribeListener() pubnub_listener.add_listener(callback_presence) pubnub_listener.subscribe().channels(ch).with_presence().execute() yield from callback_presence.wait_for_connect() envelope = yield from callback_presence.wait_for_presence_on(ch) assert ch == envelope.channel assert 'join' == envelope.event assert pubnub_listener.uuid == envelope.uuid # - connect to :ch callback_messages = SubscribeListener() pubnub.add_listener(callback_messages) pubnub.subscribe().channels(ch).execute() useless_connect_future = callback_messages.wait_for_connect() presence_future = asyncio.ensure_future(callback_presence.wait_for_presence_on(ch)) # - assert join event yield from asyncio.wait([useless_connect_future, presence_future]) prs_envelope = presence_future.result() assert ch == prs_envelope.channel assert 'join' == prs_envelope.event assert pubnub.uuid == prs_envelope.uuid # wait for one heartbeat call yield from asyncio.sleep(8) # - break messenger heartbeat loop pubnub._subscription_manager._stop_heartbeat_timer() # - assert for timeout envelope = yield from callback_presence.wait_for_presence_on(ch) assert ch == envelope.channel assert 'timeout' == envelope.event assert pubnub.uuid == envelope.uuid pubnub.unsubscribe().channels(ch).execute() yield from callback_messages.wait_for_disconnect() # - disconnect from :ch-pnpres pubnub_listener.unsubscribe().channels(ch).execute() yield from callback_presence.wait_for_disconnect() pubnub.stop() pubnub_listener.stop()
def test_join_leave(event_loop): channel = "test-subscribe-asyncio-join-leave-ch" pubnub = PubNubAsyncio(pnconf_sub_copy(), custom_event_loop=event_loop) pubnub_listener = PubNubAsyncio(pnconf_sub_copy(), custom_event_loop=event_loop) pubnub.config.uuid = "test-subscribe-asyncio-messenger" pubnub_listener.config.uuid = "test-subscribe-asyncio-listener" callback_presence = SubscribeListener() callback_messages = SubscribeListener() pubnub_listener.add_listener(callback_presence) pubnub_listener.subscribe().channels(channel).with_presence().execute() yield from callback_presence.wait_for_connect() envelope = yield from callback_presence.wait_for_presence_on(channel) assert envelope.channel == channel assert envelope.event == 'join' assert envelope.uuid == pubnub_listener.uuid pubnub.add_listener(callback_messages) pubnub.subscribe().channels(channel).execute() yield from callback_messages.wait_for_connect() envelope = yield from callback_presence.wait_for_presence_on(channel) assert envelope.channel == channel assert envelope.event == 'join' assert envelope.uuid == pubnub.uuid pubnub.unsubscribe().channels(channel).execute() yield from callback_messages.wait_for_disconnect() envelope = yield from callback_presence.wait_for_presence_on(channel) assert envelope.channel == channel assert envelope.event == 'leave' assert envelope.uuid == pubnub.uuid pubnub_listener.unsubscribe().channels(channel).execute() yield from callback_presence.wait_for_disconnect() pubnub.stop() pubnub_listener.stop()
def test_cg_join_leave(event_loop, sleeper=asyncio.sleep): pubnub = PubNubAsyncio(pnconf_sub_copy(), custom_event_loop=event_loop) pubnub_listener = PubNubAsyncio(pnconf_sub_copy(), custom_event_loop=event_loop) pubnub.config.uuid = "test-subscribe-asyncio-messenger" pubnub_listener.config.uuid = "test-subscribe-asyncio-listener" ch = "test-subscribe-asyncio-join-leave-cg-channel" gr = "test-subscribe-asyncio-join-leave-cg-group" envelope = yield from pubnub.add_channel_to_channel_group().channel_group(gr).channels(ch).future() assert envelope.status.original_response['status'] == 200 yield from sleeper(1) callback_messages = SubscribeListener() callback_presence = SubscribeListener() pubnub_listener.add_listener(callback_presence) pubnub_listener.subscribe().channel_groups(gr).with_presence().execute() yield from callback_presence.wait_for_connect() prs_envelope = yield from callback_presence.wait_for_presence_on(ch) assert prs_envelope.event == 'join' assert prs_envelope.uuid == pubnub_listener.uuid assert prs_envelope.channel == ch assert prs_envelope.subscription == gr pubnub.add_listener(callback_messages) pubnub.subscribe().channel_groups(gr).execute() callback_messages_future = asyncio.ensure_future(callback_messages.wait_for_connect()) presence_messages_future = asyncio.ensure_future(callback_presence.wait_for_presence_on(ch)) yield from asyncio.wait([callback_messages_future, presence_messages_future]) prs_envelope = presence_messages_future.result() assert prs_envelope.event == 'join' assert prs_envelope.uuid == pubnub.uuid assert prs_envelope.channel == ch assert prs_envelope.subscription == gr pubnub.unsubscribe().channel_groups(gr).execute() callback_messages_future = asyncio.ensure_future(callback_messages.wait_for_disconnect()) presence_messages_future = asyncio.ensure_future(callback_presence.wait_for_presence_on(ch)) yield from asyncio.wait([callback_messages_future, presence_messages_future]) prs_envelope = presence_messages_future.result() assert prs_envelope.event == 'leave' assert prs_envelope.uuid == pubnub.uuid assert prs_envelope.channel == ch assert prs_envelope.subscription == gr pubnub_listener.unsubscribe().channel_groups(gr).execute() yield from callback_presence.wait_for_disconnect() envelope = yield from pubnub.remove_channel_from_channel_group().channel_group(gr).channels(ch).future() assert envelope.status.original_response['status'] == 200 pubnub.stop() pubnub_listener.stop()