def setUp(self): # Launch AMQP Broker AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) self.amqpBroker.preConnect() self.amqpClient = reactor.connectTCP(AMQPServiceConfigInstance.host, AMQPServiceConfigInstance.port, self.amqpBroker) # Wait for AMQP Broker connection to get ready yield self.amqpBroker.getChannelReadyDeferred() # Instanciate a RouterPB (a requirement for JCliFactory) self.RouterPBConfigInstance = RouterPBConfig() self.RouterPBConfigInstance.authentication = False self.RouterPB_f = RouterPB() self.RouterPB_f.setConfig(self.RouterPBConfigInstance) # Instanciate a SMPPClientManagerPB (a requirement for JCliFactory) SMPPClientPBConfigInstance = SMPPClientPBConfig() SMPPClientPBConfigInstance.authentication = False self.clientManager_f = SMPPClientManagerPB() self.clientManager_f.setConfig(SMPPClientPBConfigInstance) yield self.clientManager_f.addAmqpBroker(self.amqpBroker)
class jCliTestCases(ProtocolTestCases): @defer.inlineCallbacks def setUp(self): # Launch AMQP Broker AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) self.amqpBroker.preConnect() self.amqpClient = reactor.connectTCP(AMQPServiceConfigInstance.host, AMQPServiceConfigInstance.port, self.amqpBroker) # Wait for AMQP Broker connection to get ready yield self.amqpBroker.getChannelReadyDeferred() # Instanciate a RouterPB (a requirement for JCliFactory) self.RouterPBConfigInstance = RouterPBConfig() self.RouterPBConfigInstance.authentication = False self.RouterPB_f = RouterPB() self.RouterPB_f.setConfig(self.RouterPBConfigInstance) # Instanciate a SMPPClientManagerPB (a requirement for JCliFactory) SMPPClientPBConfigInstance = SMPPClientPBConfig() SMPPClientPBConfigInstance.authentication = False self.clientManager_f = SMPPClientManagerPB() self.clientManager_f.setConfig(SMPPClientPBConfigInstance) yield self.clientManager_f.addAmqpBroker(self.amqpBroker) def tearDown(self): self.amqpClient.disconnect() self.RouterPB_f.cancelPersistenceTimer()
class DLRThrowerTestCases(unittest.TestCase): @defer.inlineCallbacks def setUp(self): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) yield self.amqpBroker.connect() yield self.amqpBroker.getChannelReadyDeferred() # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests DLRThrowerConfigInstance = DLRThrowerConfig() # Lower the timeout config to pass the timeout tests quickly DLRThrowerConfigInstance.timeout = 2 DLRThrowerConfigInstance.retry_delay = 1 DLRThrowerConfigInstance.max_retries = 2 # Launch the DLRThrower self.DLRThrower = DLRThrower(DLRThrowerConfigInstance) # Add the broker to the DLRThrower yield self.DLRThrower.addAmqpBroker(self.amqpBroker) @defer.inlineCallbacks def tearDown(self): yield self.amqpBroker.disconnect() yield self.DLRThrower.stopService()
def setUp(self): # Launch AMQP Broker AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) self.amqpBroker.preConnect() self.amqpClient = reactor.connectTCP(AMQPServiceConfigInstance.host, AMQPServiceConfigInstance.port, self.amqpBroker) # Wait for AMQP Broker connection to get ready yield self.amqpBroker.getChannelReadyDeferred() # Instanciate a RouterPB (a requirement for JCliFactory) self.RouterPBConfigInstance = RouterPBConfig() self.RouterPBConfigInstance.authentication = False self.RouterPB_f = RouterPB(self.RouterPBConfigInstance) # Instanciate a SMPPClientManagerPB (a requirement for JCliFactory) SMPPClientPBConfigInstance = SMPPClientPBConfig() SMPPClientPBConfigInstance.authentication = False self.clientManager_f = SMPPClientManagerPB(SMPPClientPBConfigInstance) yield self.clientManager_f.addAmqpBroker(self.amqpBroker) # Instanciate a SMPPServerFactory (a requirement for JCliFactory) SMPPServerConfigInstance = SMPPServerConfig() # Portal init _portal = portal.Portal(SmppsRealm(SMPPServerConfigInstance.id, self.RouterPB_f)) _portal.registerChecker(RouterAuthChecker(self.RouterPB_f)) self.SMPPSFactory = SMPPServerFactory( config=SMPPServerConfigInstance, auth_portal=_portal, RouterPB=self.RouterPB_f, SMPPClientManagerPB=self.clientManager_f)
class DLRThrowerTestCases(TestCase): @defer.inlineCallbacks def setUp(self): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) yield self.amqpBroker.connect() yield self.amqpBroker.getChannelReadyDeferred() # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests DLRThrowerConfigInstance = DLRThrowerConfig() # Lower the timeout config to pass the timeout tests quickly DLRThrowerConfigInstance.timeout = 2 DLRThrowerConfigInstance.retry_delay = 1 DLRThrowerConfigInstance.max_retries = 2 # Launch the DLRThrower self.DLRThrower = DLRThrower(DLRThrowerConfigInstance) # Add the broker to the DLRThrower yield self.DLRThrower.addAmqpBroker(self.amqpBroker) @defer.inlineCallbacks def tearDown(self): for q in self.amqpBroker.queues: yield self.amqpBroker.chan.queue_delete(queue=q) yield self.amqpBroker.disconnect() yield self.DLRThrower.stopService()
def setUp(self): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) yield self.amqpBroker.connect() yield self.amqpBroker.getChannelReadyDeferred() # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests DLRThrowerConfigInstance = DLRThrowerConfig() # Lower the timeout config to pass the timeout tests quickly DLRThrowerConfigInstance.timeout = 2 DLRThrowerConfigInstance.retry_delay = 1 DLRThrowerConfigInstance.max_retries = 2 # Launch the DLRThrower self.DLRThrower = DLRThrower(DLRThrowerConfigInstance) # Add the broker to the DLRThrower yield self.DLRThrower.addAmqpBroker(self.amqpBroker)
def setUp(self): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) yield self.amqpBroker.connect() yield self.amqpBroker.getChannelReadyDeferred() # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests deliverSmThrowerConfigInstance = deliverSmThrowerConfig() # Lower the timeout config to pass the timeout tests quickly deliverSmThrowerConfigInstance.timeout = 2 deliverSmThrowerConfigInstance.retry_delay = 1 deliverSmThrowerConfigInstance.max_retries = 2 # Launch the deliverSmThrower self.deliverSmThrower = deliverSmThrower() self.deliverSmThrower.setConfig(deliverSmThrowerConfigInstance) # Add the broker to the deliverSmThrower yield self.deliverSmThrower.addAmqpBroker(self.amqpBroker) # Test vars: self.testDeliverSMPdu = DeliverSM( source_addr='1234', destination_addr='4567', short_message='hello !', )
class jCliTestCases(ProtocolTestCases): @defer.inlineCallbacks def setUp(self): # Launch AMQP Broker AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) self.amqpBroker.preConnect() self.amqpClient = reactor.connectTCP(AMQPServiceConfigInstance.host, AMQPServiceConfigInstance.port, self.amqpBroker) # Wait for AMQP Broker connection to get ready yield self.amqpBroker.getChannelReadyDeferred() # Instanciate a RouterPB (a requirement for JCliFactory) self.RouterPBConfigInstance = RouterPBConfig() self.RouterPBConfigInstance.authentication = False self.RouterPB_f = RouterPB(self.RouterPBConfigInstance) # Instanciate a SMPPClientManagerPB (a requirement for JCliFactory) SMPPClientPBConfigInstance = SMPPClientPBConfig() SMPPClientPBConfigInstance.authentication = False self.clientManager_f = SMPPClientManagerPB(SMPPClientPBConfigInstance) yield self.clientManager_f.addAmqpBroker(self.amqpBroker) # Instanciate a SMPPServerFactory (a requirement for JCliFactory) SMPPServerConfigInstance = SMPPServerConfig() # Portal init _portal = portal.Portal(SmppsRealm(SMPPServerConfigInstance.id, self.RouterPB_f)) _portal.registerChecker(RouterAuthChecker(self.RouterPB_f)) self.SMPPSFactory = SMPPServerFactory( config=SMPPServerConfigInstance, auth_portal=_portal, RouterPB=self.RouterPB_f, SMPPClientManagerPB=self.clientManager_f) @defer.inlineCallbacks def tearDown(self): # Delete any previously persisted configuration persistenceFolder = self.RouterPBConfigInstance.store_path for the_file in os.listdir(persistenceFolder): if the_file == '.gitignore': # Dont delete any hidden file continue file_path = os.path.join(persistenceFolder, the_file) if os.path.isfile(file_path): os.unlink(file_path) yield self.RouterPB_f.cancelPersistenceTimer() yield self.amqpClient.disconnect() for q in self.amqpBroker.queues: try: yield self.amqpBroker.chan.queue_delete(queue=q) except: # Likely the channel is closed so we can't clean up the queues pass yield self.amqpBroker.disconnect()
class SMPPClientManagerPBTestCase(HttpServerTestCase): @defer.inlineCallbacks def setUp(self): HttpServerTestCase.setUp(self) # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False # Launch AMQP Broker self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) self.amqpBroker.preConnect() self.amqpClient = reactor.connectTCP(AMQPServiceConfigInstance.host, AMQPServiceConfigInstance.port, self.amqpBroker) # Wait for AMQP Broker connection to get ready yield self.amqpBroker.getChannelReadyDeferred() # Add the broker to the RouterPB yield self.pbRoot_f.addAmqpBroker(self.amqpBroker) # Setup smpp client manager pb yield self.clientManager_f.addAmqpBroker(self.amqpBroker) p = portal.Portal(JasminPBRealm(self.clientManager_f)) p.registerChecker(AllowAnonymousAccess()) jPBPortalRoot = JasminPBPortalRoot(p) self.CManagerServer = reactor.listenTCP(0, pb.PBServerFactory(jPBPortalRoot)) self.CManagerPort = self.CManagerServer.getHost().port # Start DLRThrower DLRThrowerConfigInstance = DLRThrowerConfig() self.DLRThrower = DLRThrower() self.DLRThrower.setConfig(DLRThrowerConfigInstance) yield self.DLRThrower.addAmqpBroker(self.amqpBroker) # Connect to redis server RedisForJasminConfigInstance = RedisForJasminConfig() self.redisClient = yield ConnectionWithConfiguration(RedisForJasminConfigInstance) # Authenticate and select db if RedisForJasminConfigInstance.password is not None: yield self.redisClient.auth(RedisForJasminConfigInstance.password) yield self.redisClient.select(RedisForJasminConfigInstance.dbid) # Connect CM with RC: self.clientManager_f.addRedisClient(self.redisClient) # Set a smpp client manager proxy instance self.SMPPClientManagerPBProxy = SMPPClientManagerPBProxy() @defer.inlineCallbacks def tearDown(self): yield HttpServerTestCase.tearDown(self) if self.SMPPClientManagerPBProxy.isConnected: yield self.SMPPClientManagerPBProxy.disconnect() yield self.CManagerServer.stopListening() yield self.amqpClient.disconnect() yield self.redisClient.disconnect()
class SMPPClientPBTestCase(TestCase): @defer.inlineCallbacks def setUp(self, authentication=False): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests self.SMPPClientPBConfigInstance = SMPPClientPBConfig() self.SMPPClientPBConfigInstance.authentication = authentication AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False # Launch AMQP Broker self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) self.amqpBroker.preConnect() self.amqpClient = reactor.connectTCP(AMQPServiceConfigInstance.host, AMQPServiceConfigInstance.port, self.amqpBroker) # Wait for AMQP Broker connection to get ready yield self.amqpBroker.getChannelReadyDeferred() # Launch the client manager server pbRoot = SMPPClientManagerPB(self.SMPPClientPBConfigInstance) yield pbRoot.addAmqpBroker(self.amqpBroker) p = portal.Portal(JasminPBRealm(pbRoot)) if not authentication: p.registerChecker(AllowAnonymousAccess()) else: c = InMemoryUsernamePasswordDatabaseDontUse() c.addUser('test_user', md5('test_password'.encode('ascii')).digest()) p.registerChecker(c) jPBPortalRoot = JasminPBPortalRoot(p) self.PBServer = reactor.listenTCP(0, pb.PBServerFactory(jPBPortalRoot)) self.pbPort = self.PBServer.getHost().port # Launch the router server self.RouterPBInstance = RouterPB(RouterPBConfig()) pbRoot.addRouterPB(self.RouterPBInstance) # Default SMPPClientConfig defaultSMPPClientId = '001-testconnector' self.defaultConfig = SMPPClientConfig( id=defaultSMPPClientId, username='******', reconnectOnConnectionFailure=True, port=9002, ) @defer.inlineCallbacks def tearDown(self): yield self.RouterPBInstance.cancelPersistenceTimer() yield self.PBServer.stopListening() for q in self.amqpBroker.queues: yield self.amqpBroker.chan.queue_delete(queue=q) yield self.amqpClient.disconnect()
def connect(self): self.amqp = AmqpFactory(self.config) try: yield self.amqp.connect() except: self.requirement_disclaimer() raise yield self.amqp.getChannelReadyDeferred()
class SMPPClientPBTestCase(unittest.TestCase): @defer.inlineCallbacks def setUp(self, authentication = False): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests self.SMPPClientPBConfigInstance = SMPPClientPBConfig() self.SMPPClientPBConfigInstance.authentication = authentication AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False # Launch AMQP Broker self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) self.amqpBroker.preConnect() self.amqpClient = reactor.connectTCP(AMQPServiceConfigInstance.host, AMQPServiceConfigInstance.port, self.amqpBroker) # Wait for AMQP Broker connection to get ready yield self.amqpBroker.getChannelReadyDeferred() # Launch the client manager server pbRoot = SMPPClientManagerPB() pbRoot.setConfig(self.SMPPClientPBConfigInstance) yield pbRoot.addAmqpBroker(self.amqpBroker) p = portal.Portal(JasminPBRealm(pbRoot)) if not authentication: p.registerChecker(AllowAnonymousAccess()) else: c = InMemoryUsernamePasswordDatabaseDontUse() c.addUser('test_user', md5('test_password').digest()) p.registerChecker(c) jPBPortalRoot = JasminPBPortalRoot(p) self.PBServer = reactor.listenTCP(0, pb.PBServerFactory(jPBPortalRoot)) self.pbPort = self.PBServer.getHost().port # Launch the router server self.RouterPBInstance = RouterPB() self.RouterPBInstance.setConfig(RouterPBConfig()) pbRoot.addRouterPB(self.RouterPBInstance) # Default SMPPClientConfig defaultSMPPClientId = '001-testconnector' self.defaultConfig = SMPPClientConfig(id=defaultSMPPClientId, username='******', reconnectOnConnectionFailure=True, port=9002, ) @defer.inlineCallbacks def tearDown(self): yield self.RouterPBInstance.cancelPersistenceTimer() yield self.PBServer.stopListening() yield self.amqpClient.disconnect()
class deliverSmThrowerTestCase(TestCase): @defer.inlineCallbacks def setUp(self): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) yield self.amqpBroker.connect() yield self.amqpBroker.getChannelReadyDeferred() # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests deliverSmThrowerConfigInstance = deliverSmThrowerConfig() # Lower the timeout config to pass the timeout tests quickly deliverSmThrowerConfigInstance.timeout = 2 deliverSmThrowerConfigInstance.retry_delay = 1 deliverSmThrowerConfigInstance.max_retries = 2 # Launch the deliverSmThrower self.deliverSmThrower = deliverSmThrower( deliverSmThrowerConfigInstance) # Add the broker to the deliverSmThrower yield self.deliverSmThrower.addAmqpBroker(self.amqpBroker) # Test vars: self.testDeliverSMPdu = DeliverSM( source_addr='1234', destination_addr='4567', short_message='hello !', ) @defer.inlineCallbacks def publishRoutedDeliverSmContent(self, routing_key, DeliverSM, msgid, scid, routedConnector): content = RoutedDeliverSmContent(DeliverSM, msgid, scid, routedConnector) yield self.amqpBroker.publish(exchange='messaging', routing_key=routing_key, content=content) @defer.inlineCallbacks def tearDown(self): for q in self.amqpBroker.queues: yield self.amqpBroker.chan.queue_delete(queue=q) yield self.deliverSmThrower.stopService() yield self.amqpBroker.disconnect()
def setUp(self): HttpServerTestCase.setUp(self) # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False # Launch AMQP Broker self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) self.amqpBroker.preConnect() self.amqpClient = reactor.connectTCP(AMQPServiceConfigInstance.host, AMQPServiceConfigInstance.port, self.amqpBroker) # Wait for AMQP Broker connection to get ready yield self.amqpBroker.getChannelReadyDeferred() # Add the broker to the RouterPB yield self.pbRoot_f.addAmqpBroker(self.amqpBroker) # Setup smpp client manager pb yield self.clientManager_f.addAmqpBroker(self.amqpBroker) p = portal.Portal(JasminPBRealm(self.clientManager_f)) p.registerChecker(AllowAnonymousAccess()) jPBPortalRoot = JasminPBPortalRoot(p) self.CManagerServer = reactor.listenTCP( 0, pb.PBServerFactory(jPBPortalRoot)) self.CManagerPort = self.CManagerServer.getHost().port # Start DLRThrower DLRThrowerConfigInstance = DLRThrowerConfig() self.DLRThrower = DLRThrower() self.DLRThrower.setConfig(DLRThrowerConfigInstance) yield self.DLRThrower.addAmqpBroker(self.amqpBroker) # Connect to redis server RedisForJasminConfigInstance = RedisForJasminConfig() self.redisClient = yield ConnectionWithConfiguration( RedisForJasminConfigInstance) # Authenticate and select db if RedisForJasminConfigInstance.password is not None: yield self.redisClient.auth(RedisForJasminConfigInstance.password) yield self.redisClient.select(RedisForJasminConfigInstance.dbid) # Connect CM with RC: self.clientManager_f.addRedisClient(self.redisClient) # Set a smpp client manager proxy instance self.SMPPClientManagerPBProxy = SMPPClientManagerPBProxy()
def setUp(self): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) yield self.amqpBroker.connect() yield self.amqpBroker.getChannelReadyDeferred() # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests deliverSmThrowerConfigInstance = deliverSmThrowerConfig() # Lower the timeout config to pass the timeout tests quickly deliverSmThrowerConfigInstance.timeout = 2 deliverSmThrowerConfigInstance.retry_delay = 1 deliverSmThrowerConfigInstance.max_retries = 2 # Launch the deliverSmThrower self.deliverSmThrower = deliverSmThrower(deliverSmThrowerConfigInstance) # Add the broker to the deliverSmThrower yield self.deliverSmThrower.addAmqpBroker(self.amqpBroker) # Test vars: self.testDeliverSMPdu = DeliverSM( source_addr='1234', destination_addr='4567', short_message='hello !', )
class deliverSmThrowerTestCase(unittest.TestCase): @defer.inlineCallbacks def setUp(self): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) yield self.amqpBroker.connect() yield self.amqpBroker.getChannelReadyDeferred() # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests deliverSmThrowerConfigInstance = deliverSmThrowerConfig() # Lower the timeout config to pass the timeout tests quickly deliverSmThrowerConfigInstance.timeout = 2 deliverSmThrowerConfigInstance.retry_delay = 1 deliverSmThrowerConfigInstance.max_retries = 2 # Launch the deliverSmThrower self.deliverSmThrower = deliverSmThrower() self.deliverSmThrower.setConfig(deliverSmThrowerConfigInstance) # Add the broker to the deliverSmThrower yield self.deliverSmThrower.addAmqpBroker(self.amqpBroker) # Test vars: self.testDeliverSMPdu = DeliverSM( source_addr='1234', destination_addr='4567', short_message='hello !', ) @defer.inlineCallbacks def publishRoutedDeliverSmContent(self, routing_key, DeliverSM, msgid, scid, routedConnector): content = RoutedDeliverSmContent(DeliverSM, msgid, scid, routedConnector) yield self.amqpBroker.publish(exchange='messaging', routing_key=routing_key, content=content) @defer.inlineCallbacks def tearDown(self): yield self.amqpBroker.disconnect() yield self.deliverSmThrower.stopService()
def setUp(self, authentication=False): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests self.SMPPClientPBConfigInstance = SMPPClientPBConfig() self.SMPPClientPBConfigInstance.authentication = authentication AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False # Launch AMQP Broker self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) self.amqpBroker.preConnect() self.amqpClient = reactor.connectTCP(AMQPServiceConfigInstance.host, AMQPServiceConfigInstance.port, self.amqpBroker) # Wait for AMQP Broker connection to get ready yield self.amqpBroker.getChannelReadyDeferred() # Launch the client manager server pbRoot = SMPPClientManagerPB() pbRoot.setConfig(self.SMPPClientPBConfigInstance) yield pbRoot.addAmqpBroker(self.amqpBroker) p = portal.Portal(JasminPBRealm(pbRoot)) if not authentication: p.registerChecker(AllowAnonymousAccess()) else: c = InMemoryUsernamePasswordDatabaseDontUse() c.addUser('test_user', md5('test_password').digest()) p.registerChecker(c) jPBPortalRoot = JasminPBPortalRoot(p) self.PBServer = reactor.listenTCP(0, pb.PBServerFactory(jPBPortalRoot)) self.pbPort = self.PBServer.getHost().port # Default SMPPClientConfig defaultSMPPClientId = '001-testconnector' self.defaultConfig = SMPPClientConfig( id=defaultSMPPClientId, username='******', reconnectOnConnectionFailure=True, port=9002)
def startAMQPBrokerService(self): "Start AMQP Broker" AMQPServiceConfigInstance = AmqpConfig(self.options['config']) self.components['amqp-broker-factory'] = AmqpFactory(AMQPServiceConfigInstance) self.components['amqp-broker-factory'].preConnect() # Add service self.components['amqp-broker-client'] = reactor.connectTCP(AMQPServiceConfigInstance.host, AMQPServiceConfigInstance.port, self.components['amqp-broker-factory'])
class AmqpTestCase(TestCase): exchange_name = "CONNECTOR-00" message = "Any Message" configArgs = { 'reconnectOnConnectionFailure': False, 'reconnectOnConnectionLoss': False, } def setUp(self): self.config = AmqpConfig() self.config.host = self.configArgs.get('amqp_host', 'localhost') self.config.port = self.configArgs.get('amqp_port', 5672) self.config.username = self.configArgs.get('amqp_username', 'guest') self.config.password = self.configArgs.get('amqp_password', 'guest') self.config.log_level = self.configArgs.get('amqp_log_level', logging.DEBUG) self.config.reconnectOnConnectionFailure = self.configArgs.get( 'reconnectOnConnectionFailure', True) self.config.reconnectOnConnectionLoss = self.configArgs.get( 'reconnectOnConnectionLoss', True) self.amqp = None def requirement_disclaimer(self): print "failed to connect to an AMQP broker; These tests are designed" \ " to run against a running instance of a AMQP broker" @defer.inlineCallbacks def connect(self): self.amqp = AmqpFactory(self.config) try: yield self.amqp.connect() except: self.requirement_disclaimer() raise yield self.amqp.getChannelReadyDeferred()
class AmqpTestCase(TestCase): exchange_name = "CONNECTOR-00" message = "Any Message" configArgs = { 'reconnectOnConnectionFailure': False, 'reconnectOnConnectionLoss': False, } def setUp(self): self.config = AmqpConfig() self.config.host = self.configArgs.get('amqp_host', 'localhost') self.config.port = self.configArgs.get('amqp_port', 5672) self.config.username = self.configArgs.get('amqp_username', 'guest') self.config.password = self.configArgs.get('amqp_password', 'guest') self.config.log_level = self.configArgs.get('amqp_log_level', logging.DEBUG) self.config.reconnectOnConnectionFailure = self.configArgs.get('reconnectOnConnectionFailure', True) self.config.reconnectOnConnectionLoss = self.configArgs.get('reconnectOnConnectionLoss', True) self.amqp = None def requirement_disclaimer(self): print "failed to connect to an AMQP broker; These tests are designed" \ " to run against a running instance of a AMQP broker" @defer.inlineCallbacks def connect(self): self.amqp = AmqpFactory(self.config) try: yield self.amqp.connect() except: self.requirement_disclaimer() raise yield self.amqp.getChannelReadyDeferred()
def setUp(self): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) yield self.amqpBroker.connect() yield self.amqpBroker.getChannelReadyDeferred() # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests DLRThrowerConfigInstance = DLRThrowerConfig() # Lower the timeout config to pass the timeout tests quickly DLRThrowerConfigInstance.timeout = 2 DLRThrowerConfigInstance.retry_delay = 1 DLRThrowerConfigInstance.max_retries = 2 # Launch the deliverSmHttpThrower self.DLRThrower = DLRThrower() self.DLRThrower.setConfig(DLRThrowerConfigInstance) # Add the broker to the deliverSmHttpThrower yield self.DLRThrower.addAmqpBroker(self.amqpBroker) # Start http servers self.Error404ServerResource = Error404Server() self.Error404Server = reactor.listenTCP(0, server.Site(self.Error404ServerResource)) self.AckServerResource = AckServer() self.AckServer = reactor.listenTCP(0, server.Site(self.AckServerResource)) self.NoAckServerResource = NoAckServer() self.NoAckServer = reactor.listenTCP(0, server.Site(self.NoAckServerResource)) self.TimeoutLeafServerResource = TimeoutLeafServer() self.TimeoutLeafServerResource.hangTime = 3 self.TimeoutLeafServer = reactor.listenTCP(0, server.Site(self.TimeoutLeafServerResource))
class DLRThrowerTestCase(unittest.TestCase): @defer.inlineCallbacks def setUp(self): # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests AMQPServiceConfigInstance = AmqpConfig() AMQPServiceConfigInstance.reconnectOnConnectionLoss = False self.amqpBroker = AmqpFactory(AMQPServiceConfigInstance) yield self.amqpBroker.connect() yield self.amqpBroker.getChannelReadyDeferred() # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests DLRThrowerConfigInstance = DLRThrowerConfig() # Lower the timeout config to pass the timeout tests quickly DLRThrowerConfigInstance.timeout = 2 DLRThrowerConfigInstance.retry_delay = 1 DLRThrowerConfigInstance.max_retries = 2 # Launch the deliverSmHttpThrower self.DLRThrower = DLRThrower() self.DLRThrower.setConfig(DLRThrowerConfigInstance) # Add the broker to the deliverSmHttpThrower yield self.DLRThrower.addAmqpBroker(self.amqpBroker) # Start http servers self.Error404ServerResource = Error404Server() self.Error404Server = reactor.listenTCP(0, server.Site(self.Error404ServerResource)) self.AckServerResource = AckServer() self.AckServer = reactor.listenTCP(0, server.Site(self.AckServerResource)) self.NoAckServerResource = NoAckServer() self.NoAckServer = reactor.listenTCP(0, server.Site(self.NoAckServerResource)) self.TimeoutLeafServerResource = TimeoutLeafServer() self.TimeoutLeafServerResource.hangTime = 3 self.TimeoutLeafServer = reactor.listenTCP(0, server.Site(self.TimeoutLeafServerResource)) @defer.inlineCallbacks def publishDLRContent( self, message_status, msgid, dlr_url, dlr_level, id_smsc="", sub="", dlvrd="", subdate="", donedate="", err="", text="", method="POST", trycount=0, ): content = DLRContent( message_status, msgid, dlr_url, dlr_level, id_smsc, sub, dlvrd, subdate, donedate, err, text, method, trycount, ) yield self.amqpBroker.publish(exchange="messaging", routing_key="dlr_thrower.http", content=content) @defer.inlineCallbacks def tearDown(self): yield self.amqpBroker.disconnect() yield self.DLRThrower.stopService() yield self.Error404Server.stopListening() yield self.AckServer.stopListening() yield self.NoAckServer.stopListening() yield self.TimeoutLeafServer.stopListening() @defer.inlineCallbacks def test_throwing_http_connector_with_ack(self): self.AckServerResource.render_POST = mock.Mock(wraps=self.AckServerResource.render_POST) dlr_url = "http://127.0.0.1:%s/dlr" % self.AckServer.getHost().port dlr_level = 1 msgid = "anything" message_status = "DELIVRD" self.publishDLRContent(message_status, msgid, dlr_url, dlr_level) # Wait 3 seconds exitDeferred = defer.Deferred() reactor.callLater(3, exitDeferred.callback, None) yield exitDeferred # No message retries must be made since ACK was received self.assertEqual(self.AckServerResource.render_POST.call_count, 1) @defer.inlineCallbacks def test_throwing_http_connector_without_ack(self): self.NoAckServerResource.render_POST = mock.Mock(wraps=self.NoAckServerResource.render_POST) dlr_url = "http://127.0.0.1:%s/dlr" % self.NoAckServer.getHost().port dlr_level = 1 msgid = "anything" message_status = "DELIVRD" self.publishDLRContent(message_status, msgid, dlr_url, dlr_level) # Wait 3 seconds exitDeferred = defer.Deferred() reactor.callLater(3, exitDeferred.callback, None) yield exitDeferred # Retries must be made when ACK is not received self.assertTrue(self.NoAckServerResource.render_POST.call_count > 1) @defer.inlineCallbacks def test_throwing_http_connector_timeout_retry(self): self.TimeoutLeafServerResource.render_POST = mock.Mock(wraps=self.TimeoutLeafServerResource.render_POST) dlr_url = "http://127.0.0.1:%s/dlr" % self.TimeoutLeafServer.getHost().port dlr_level = 1 msgid = "anything" message_status = "DELIVRD" self.publishDLRContent(message_status, msgid, dlr_url, dlr_level) # Wait 9 seconds (timeout is set to 2 seconds in deliverSmHttpThrowerTestCase.setUp(self) exitDeferred = defer.Deferred() reactor.callLater(12, exitDeferred.callback, None) yield exitDeferred self.assertEqual(self.TimeoutLeafServerResource.render_POST.call_count, 3) @defer.inlineCallbacks def test_throwing_http_connector_404_error_noretry(self): """When receiving a 404 error, no further retries shall be made """ self.Error404ServerResource.render_POST = mock.Mock(wraps=self.Error404ServerResource.render_POST) dlr_url = "http://127.0.0.1:%s/dlr" % self.Error404Server.getHost().port dlr_level = 1 msgid = "anything" message_status = "DELIVRD" self.publishDLRContent(message_status, msgid, dlr_url, dlr_level) # Wait 3 seconds exitDeferred = defer.Deferred() reactor.callLater(3, exitDeferred.callback, None) yield exitDeferred self.assertEqual(self.Error404ServerResource.render_POST.call_count, 1) @defer.inlineCallbacks def test_throwing_http_connector_dlr_level1(self): self.AckServerResource.render_GET = mock.Mock(wraps=self.AckServerResource.render_GET) dlr_url = "http://127.0.0.1:%s/dlr" % self.AckServer.getHost().port dlr_level = 1 msgid = "anything" message_status = "DELIVRD" self.publishDLRContent(message_status, msgid, dlr_url, dlr_level, method="GET") # Wait 3 seconds exitDeferred = defer.Deferred() reactor.callLater(3, exitDeferred.callback, None) yield exitDeferred # No message retries must be made since ACK was received self.assertEqual(self.AckServerResource.render_GET.call_count, 1) callArgs = self.AckServerResource.render_GET.call_args_list[0][0][0].args self.assertEqual(callArgs["message_status"][0], message_status) self.assertEqual(callArgs["id"][0], msgid) self.assertEqual(callArgs["level"][0], str(dlr_level)) @defer.inlineCallbacks def test_throwing_http_connector_dlr_level2(self): self.AckServerResource.render_GET = mock.Mock(wraps=self.AckServerResource.render_GET) dlr_url = "http://127.0.0.1:%s/dlr" % self.AckServer.getHost().port dlr_level = 2 msgid = "anything" message_status = "DELIVRD" self.publishDLRContent( message_status, msgid, dlr_url, dlr_level, id_smsc="abc", sub="3", dlvrd="3", subdate="anydate", donedate="anydate", err="", text="Any text", method="GET", ) # Wait 3 seconds exitDeferred = defer.Deferred() reactor.callLater(3, exitDeferred.callback, None) yield exitDeferred # No message retries must be made since ACK was received self.assertEqual(self.AckServerResource.render_GET.call_count, 1) callArgs = self.AckServerResource.render_GET.call_args_list[0][0][0].args self.assertEqual(callArgs["message_status"][0], message_status) self.assertEqual(callArgs["id"][0], msgid) self.assertEqual(callArgs["level"][0], str(dlr_level)) self.assertEqual(callArgs["id_smsc"][0], "abc") self.assertEqual(callArgs["sub"][0], "3") self.assertEqual(callArgs["dlvrd"][0], "3") self.assertEqual(callArgs["subdate"][0], "anydate") self.assertEqual(callArgs["donedate"][0], "anydate") self.assertEqual(callArgs["err"][0], "") self.assertEqual(callArgs["text"][0], "Any text")