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 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)
def __init__(self, config, SMPPClientFactory, amqpBroker, redisClient, RouterPB=None, interceptorpb_client=None): self.config = config self.SMPPClientFactory = SMPPClientFactory self.SMPPOperationFactory = SMPPOperationFactory(self.SMPPClientFactory.config) self.amqpBroker = amqpBroker self.redisClient = redisClient self.RouterPB = RouterPB self.interceptorpb_client = interceptorpb_client self.submit_sm_q = None self.qos_last_submit_sm_at = None self.rejectTimers = {} self.submit_retrials = {} self.qosTimer = None # Set pickleProtocol self.pickleProtocol = SMPPClientPBConfig(self.config.config_file).pickle_protocol # Set up a dedicated logger self.log = logging.getLogger(LOG_CATEGORY) if len(self.log.handlers) != 1: self.log.setLevel(self.config.log_level) handler = TimedRotatingFileHandler(filename=self.config.log_file, when=self.config.log_rotate) formatter = logging.Formatter(self.config.log_format, self.config.log_date_format) handler.setFormatter(formatter) self.log.addHandler(handler) self.log.propagate = False
def startSMPPClientManagerPBService(self): "Start SMPP Client Manager PB server" SMPPClientPBConfigInstance = SMPPClientPBConfig(self.options['config']) self.components['smppcm-pb-factory'] = SMPPClientManagerPB() self.components['smppcm-pb-factory'].setConfig( SMPPClientPBConfigInstance) # Set authentication portal p = portal.Portal(JasminPBRealm(self.components['smppcm-pb-factory'])) if SMPPClientPBConfigInstance.authentication: c = InMemoryUsernamePasswordDatabaseDontUse() c.addUser(SMPPClientPBConfigInstance.admin_username, SMPPClientPBConfigInstance.admin_password) p.registerChecker(c) else: p.registerChecker(AllowAnonymousAccess()) jPBPortalRoot = JasminPBPortalRoot(p) # Add service self.components['smppcm-pb-server'] = reactor.listenTCP( SMPPClientPBConfigInstance.port, pb.PBServerFactory(jPBPortalRoot), interface=SMPPClientPBConfigInstance.bind) # AMQP Broker is used to listen to submit_sm queues and publish to deliver_sm/dlr queues self.components['smppcm-pb-factory'].addAmqpBroker( self.components['amqp-broker-factory']) self.components['smppcm-pb-factory'].addRedisClient( self.components['rc'])
def __init__(self, SMPPClientSMListenerConfig, SMPPClientFactory, amqpBroker, redisClient): self.config = SMPPClientSMListenerConfig self.SMPPClientFactory = SMPPClientFactory self.SMPPOperationFactory = SMPPOperationFactory( self.SMPPClientFactory.config) self.amqpBroker = amqpBroker self.redisClient = redisClient self.submit_sm_q = None self.qos_last_submit_sm_at = None self.rejectTimers = {} self.qosTimer = None # Set pickleProtocol self.pickleProtocol = SMPPClientPBConfig( self.config.config_file).pickle_protocol # Set up a dedicated logger self.log = logging.getLogger(LOG_CATEGORY) if len(self.log.handlers) != 1: self.log.setLevel(self.config.log_level) handler = logging.FileHandler(filename=self.config.log_file) formatter = logging.Formatter(self.config.log_format, self.config.log_date_format) handler.setFormatter(formatter) self.log.addHandler(handler) self.log.propagate = False
def setUp(self): RouterPBTestCase.setUp(self) # Initiating config objects without any filename # will lead to setting defaults and that's what we # need to run the tests httpApiConfigInstance = HTTPApiConfig() SMPPClientPBConfigInstance = SMPPClientPBConfig() SMPPClientPBConfigInstance.authentication = False # Smpp client manager is required for HTTPApi instanciation self.clientManager_f = SMPPClientManagerPB() self.clientManager_f.setConfig(SMPPClientPBConfigInstance) # Launch the http server httpApi = HTTPApi(self.pbRoot_f, self.clientManager_f, httpApiConfigInstance) self.httpServer = reactor.listenTCP(httpApiConfigInstance.port, server.Site(httpApi)) self.httpPort = httpApiConfigInstance.port
def setUp(self): # Instanciate a RouterPB (a requirement for HTTPApi) RouterPBConfigInstance = RouterPBConfig() self.RouterPB_f = RouterPB() self.RouterPB_f.setConfig(RouterPBConfigInstance) # Provision Router with User and Route self.RouterPB_f.users.append(User(1, Group(1), 'fourat', 'correct')) self.RouterPB_f.mt_routing_table.add(DefaultRoute(SmppClientConnector('abc')), 0) # Instanciate a SMPPClientManagerPB (a requirement for HTTPApi) SMPPClientPBConfigInstance = SMPPClientPBConfig() SMPPClientPBConfigInstance.authentication = False clientManager_f = SMPPClientManagerPB() clientManager_f.setConfig(SMPPClientPBConfigInstance) httpApiConfigInstance = HTTPApiConfig() self.web = DummySite(HTTPApi(self.RouterPB_f, clientManager_f, httpApiConfigInstance))
def setUp(self): # Instanciate a RouterPB (a requirement for HTTPApi) RouterPBConfigInstance = RouterPBConfig() self.RouterPB_f = RouterPB() self.RouterPB_f.setConfig(RouterPBConfigInstance) # Provision Router with User and Route self.u1 = User(1, Group(1), 'fourat', 'correct') self.RouterPB_f.users.append(self.u1) self.RouterPB_f.mt_routing_table.add(DefaultRoute(SmppClientConnector('abc')), 0) # Instanciate a SMPPClientManagerPB (a requirement for HTTPApi) SMPPClientPBConfigInstance = SMPPClientPBConfig() SMPPClientPBConfigInstance.authentication = False clientManager_f = SMPPClientManagerPB() clientManager_f.setConfig(SMPPClientPBConfigInstance) httpApiConfigInstance = HTTPApiConfig() self.web = DummySite(HTTPApi(self.RouterPB_f, clientManager_f, httpApiConfigInstance))
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, )