def test_delivery_failover_route(self): """#467: Will ensure a failover route will deliver the message""" yield self.connect('127.0.0.1', self.pbPort) route = FailoverMORoute([TransparentFilter()], [ SmppServerSystemIdConnector(system_id='wrong_username1'), SmppServerSystemIdConnector( system_id=self.smppc_factory.config.username) ]) yield self.prepareRoutingsAndStartConnector(route) # Bind yield self.smppc_factory.connectAndBind() # Install mocks self.smppc_factory.lastProto.PDUDataRequestReceived = mock.Mock( wraps=self.smppc_factory.lastProto.PDUDataRequestReceived) # Send a data_sm from the SMSC yield self.triggerDataSmFromSMSC([self.DataSmPDU]) # Run tests self.assertEqual( self.smppc_factory.lastProto.PDUDataRequestReceived.call_count, 1) # the received pdu must be our self.DataSmPDU received_pdu_1 = self.smppc_factory.lastProto.PDUDataRequestReceived.call_args_list[ 0][0][0] self.assertEqual(received_pdu_1.id, pdu_types.CommandId.data_sm) # Unbind and disconnect yield self.smppc_factory.smpp.unbindAndDisconnect() yield self.stopSmppClientConnectors()
def test_delivery_failover_route(self): """#467: Will ensure a failover route will deliver the message""" yield self.connect('127.0.0.1', self.pbPort) # Connect to SMSC source_connector = Connector(id_generator()) wrong_port = self.AckServer.getHost().port + 1000 route = FailoverMORoute([TransparentFilter()], [ HttpConnector(id_generator(), 'http://127.0.0.1:%s/send' % wrong_port), HttpConnector( id_generator(), 'http://127.0.0.1:%s/send' % self.AckServer.getHost().port) ]) yield self.prepareRoutingsAndStartConnector(source_connector, route) # Send a data_sm from the SMSC pdu = DataSM( source_addr='1234', destination_addr='4567', message_payload='any content', ) yield self.triggerDataSmFromSMSC([pdu]) # Run tests # Test callback in router self.assertEquals(self.pbRoot_f.deliver_sm_callback.call_count, 1) # Destination connector must receive the message one time (no retries) self.assertEqual(self.AckServerResource.render_GET.call_count, 1) # Disconnector from SMSC yield self.stopConnector(source_connector)