def _on_connected(self):
     """Helper handler that is called upon an iothub pipeline connect"""
     logger.info("Connection State - Connected")
     client_event_inbox = self._inbox_manager.get_client_event_inbox()
     event = client_event.ClientEvent(client_event.CONNECTION_STATE_CHANGE)
     client_event_inbox.put(event)
     # Ensure that all handlers are running now that connection is re-established.
     self._handler_manager.ensure_running()
 def _on_background_exception(self, e):
     """Helper handler that is called upon an iothub pipeline background exception"""
     handle_exceptions.handle_background_exception(e)
     client_event_inbox = self._inbox_manager.get_client_event_inbox()
     # Only add a ClientEvent to the inbox if the Handler Manager is capable of dealing with it
     if self._handler_manager.handling_client_events:
         event = client_event.ClientEvent(client_event.BACKGROUND_EXCEPTION,
                                          e)
         client_event_inbox.put(event)
 def _on_new_sastoken_required(self):
     """Helper handler that is called upon the iothub pipeline needing new SAS token"""
     logger.info("New SasToken required from user")
     client_event_inbox = self._inbox_manager.get_client_event_inbox()
     # Only add a ClientEvent to the inbox if the Handler Manager is capable of dealing with it
     if self._handler_manager.handling_client_events:
         event = client_event.ClientEvent(
             client_event.NEW_SASTOKEN_REQUIRED)
         client_event_inbox.put(event)
 def _on_disconnected(self):
     """Helper handler that is called upon an iothub pipeline disconnect"""
     logger.info("Connection State - Disconnected")
     client_event_inbox = self._inbox_manager.get_client_event_inbox()
     event = client_event.ClientEvent(client_event.CONNECTION_STATE_CHANGE)
     client_event_inbox.put(event)
     # Locally stored method requests on client are cleared.
     # They will be resent by IoTHub on reconnect.
     self._inbox_manager.clear_all_method_requests()
     logger.info("Cleared all pending method requests due to disconnect")
    async def test_handler_invoked(self, mocker, handler_name, handler_manager,
                                   handler_checker, handler, inbox, event):
        # Set the handler
        setattr(handler_manager, handler_name, handler)
        # Handler has not been called
        assert handler_checker.handler_called is False

        # Add the event to the client inbox
        inbox.put(event)
        await asyncio.sleep(0.1)

        # Handler has been called with the arguments from the event
        assert handler_checker.handler_call_count == 1
        assert handler_checker.handler_call_args == event.args_for_user

        # Add a non-matching event ot the client event inbox
        non_matching_event = client_event.ClientEvent("NON_MATCHING_EVENT")
        inbox.put(non_matching_event)
        await asyncio.sleep(0.1)

        # Handler has not been called again
        assert handler_checker.handler_call_count == 1
    def test_handler_invoked(self, mocker, handler_name, handler_manager,
                             inbox, event):
        # Set the handler
        mock_handler = mocker.MagicMock()
        setattr(handler_manager, handler_name, mock_handler)
        # Handler has not been called
        assert mock_handler.call_count == 0

        # Add the event to the client event inbox
        inbox.put(event)
        time.sleep(0.1)

        # Handler has been called with the arguments from the event
        assert mock_handler.call_count == 1
        assert mock_handler.call_args == mocker.call(*event.args_for_user)

        # Add non-matching event to the client event inbox
        non_matching_event = client_event.ClientEvent("NON_MATCHING_EVENT")
        inbox.put(non_matching_event)
        time.sleep(0.1)

        # Handler has not been called again
        assert mock_handler.call_count == 1
 def event(self, arbitrary_exception):
     return client_event.ClientEvent(client_event.BACKGROUND_EXCEPTION,
                                     arbitrary_exception)
 def event(self):
     return client_event.ClientEvent(client_event.NEW_SASTOKEN_REQUIRED)
 def event(self):
     return client_event.ClientEvent(client_event.CONNECTION_STATE_CHANGE)
示例#10
0
 def _on_new_sastoken_required(self):
     logger.info("New SasToken required from user")
     client_event_inbox = self._inbox_manager.get_client_event_inbox()
     event = client_event.ClientEvent(client_event.NEW_SASTOKEN_REQUIRED)
     client_event_inbox.put(event)