def setUp(self): SMPPClientTestCases.setUp(self) # Re-init stats singleton collector created_at = SMPPServerStatsCollector().get(cid=self.smpps_config.id).get('created_at') SMPPServerStatsCollector().get(cid=self.smpps_config.id).init() SMPPServerStatsCollector().get(cid=self.smpps_config.id).set('created_at', created_at)
def test_is_singleton(self): i1 = SMPPServerStatsCollector() i2 = SMPPServerStatsCollector() self.assertEqual(i1, i2) i1.get(cid = 'testing').set('bind_rx_count', 100) self.assertEqual(i1.get(cid = 'testing').get('bind_rx_count'), i2.get(cid = 'testing').get('bind_rx_count'), )
def test_get_will_reuse_existent_connector(self): c = SMPPServerStatsCollector() self.assertTrue('test_get_will_reuse_existent_connector' not in c.connectors) i1 = c.get(cid = 'test_get_will_reuse_existent_connector') i2 = c.get(cid = 'test_get_will_reuse_existent_connector') self.assertEqual(i1, i2)
def test_stats(self): stats = SMPPServerStatsCollector().get(cid='test_stats') self.assertEqual( stats._stats, { 'bind_rx_count': 0, 'bind_trx_count': 0, 'bind_tx_count': 0, 'bound_rx_count': 0, 'bound_trx_count': 0, 'bound_tx_count': 0, 'connect_count': 0, 'connected_count': 0, 'created_at': 0, 'data_sm_count': 0, 'deliver_sm_count': 0, 'disconnect_count': 0, 'elink_count': 0, 'last_received_elink_at': 0, 'last_received_pdu_at': 0, 'last_sent_pdu_at': 0, 'other_submit_error_count': 0, 'submit_sm_count': 0, 'submit_sm_request_count': 0, 'throttling_error_count': 0, 'unbind_count': 0, 'interceptor_count': 0, 'interceptor_error_count': 0, })
def test_exceptions(self): stats = SMPPServerStatsCollector().get(cid = 'test_exceptions') self.assertRaises(KeyNotFound, stats.get, 'anything') self.assertRaises(KeyNotFound, stats.set, 'anything', 22) self.assertRaises(KeyNotFound, stats.inc, 'anything') stats.set('created_at', datetime.now()) self.assertRaises(KeyNotIncrementable, stats.inc, 'created_at')
def test_stats_inc(self): stats = SMPPServerStatsCollector().get(cid = 'test_stats_inc') self.assertEqual(stats.get('bound_tx_count'), 0) stats.inc('bound_tx_count') self.assertEqual(stats.get('bound_tx_count'), 1) stats.inc('bound_tx_count', 5) self.assertEqual(stats.get('bound_tx_count'), 6)
def test_01_smpps_basic(self): "A simple test of _some_ stats parameters" stats = SMPPServerStatsCollector().get(cid=self.smpps_config.id) self.assertTrue(type(stats.get('created_at')) == datetime) self.assertEqual(stats.get('last_received_pdu_at'), 0) self.assertEqual(stats.get('last_sent_pdu_at'), 0) self.assertEqual(stats.get('connected_count'), 0) self.assertEqual(stats.get('connect_count'), 0) self.assertEqual(stats.get('disconnect_count'), 0) self.assertEqual(stats.get('bound_trx_count'), 0) self.assertEqual(stats.get('bound_rx_count'), 0) self.assertEqual(stats.get('bound_tx_count'), 0) self.assertEqual(stats.get('bind_trx_count'), 0) self.assertEqual(stats.get('bind_rx_count'), 0) self.assertEqual(stats.get('bind_tx_count'), 0) self.assertEqual(stats.get('unbind_count'), 0) # Connect and bind yield self.smppc_factory.connectAndBind() self.assertEqual(self.smppc_factory.smpp.sessionState, SMPPSessionStates.BOUND_TRX) self.assertTrue(type(stats.get('created_at')) == datetime) self.assertTrue(type(stats.get('last_received_pdu_at')) == datetime) self.assertTrue(type(stats.get('last_sent_pdu_at')) == datetime) self.assertEqual(stats.get('connected_count'), 1) self.assertEqual(stats.get('connect_count'), 1) self.assertEqual(stats.get('disconnect_count'), 0) self.assertEqual(stats.get('bound_trx_count'), 1) self.assertEqual(stats.get('bound_rx_count'), 0) self.assertEqual(stats.get('bound_tx_count'), 0) self.assertEqual(stats.get('bind_trx_count'), 1) self.assertEqual(stats.get('bind_rx_count'), 0) self.assertEqual(stats.get('bind_tx_count'), 0) self.assertEqual(stats.get('unbind_count'), 0) # Unbind & Disconnect yield self.smppc_factory.smpp.unbindAndDisconnect() self.assertEqual(self.smppc_factory.smpp.sessionState, SMPPSessionStates.UNBOUND) self.assertTrue(type(stats.get('created_at')) == datetime) self.assertTrue(type(stats.get('last_received_pdu_at')) == datetime) self.assertTrue(type(stats.get('last_sent_pdu_at')) == datetime) self.assertEqual(stats.get('connected_count'), 0) self.assertEqual(stats.get('connect_count'), 1) self.assertEqual(stats.get('disconnect_count'), 1) self.assertEqual(stats.get('bound_trx_count'), 0) self.assertEqual(stats.get('bound_rx_count'), 0) self.assertEqual(stats.get('bound_tx_count'), 0) self.assertEqual(stats.get('bind_trx_count'), 1) self.assertEqual(stats.get('bind_rx_count'), 0) self.assertEqual(stats.get('bind_tx_count'), 0) self.assertEqual(stats.get('unbind_count'), 1)
def setUp(self): SMPPClientTestCases.setUp(self) # Provision a user and default route into RouterPB # Add throughput limit on user self.foo = User('u1', Group('test'), 'username', 'password') self.foo.mt_credential.setQuota('smpps_throughput', 2) self.c1 = SmppClientConnector(id_generator()) self.defaultroute = DefaultRoute(self.c1) self.provision_user_defaultroute(user=self.foo, defaultroute=self.defaultroute) self.stats = SMPPServerStatsCollector().get(cid=self.smpps_config.id)
def setUp(self): if hasattr(self, 'ipb_client'): yield SMPPClientTestCases.setUp(self, interceptorpb_client=self.ipb_client) else: yield SMPPClientTestCases.setUp(self) # Connect to RouterPB yield self.connect('127.0.0.1', self.pbPort) # Provision mt interceptor self.mt_interceptor = MTInterceptorScript(self.script) yield self.mtinterceptor_add(DefaultInterceptor(self.mt_interceptor), 0) # Disconnect from RouterPB self.disconnect() # Get stats singletons self.stats_smpps = SMPPServerStatsCollector().get(cid=self.smpps_config.id)
def test_02_enquire_link(self): self.smppc_config.enquireLinkTimerSecs = 1 stats = SMPPServerStatsCollector().get(cid=self.smpps_config.id) self.assertEqual(stats.get('last_received_elink_at'), 0) # Connect and bind yield self.smppc_factory.connectAndBind() self.assertEqual(self.smppc_factory.smpp.sessionState, SMPPSessionStates.BOUND_TRX) # Wait some secs in order to receive some elinks yield waitFor(6) # Unbind & Disconnect yield self.smppc_factory.smpp.unbindAndDisconnect() self.assertEqual(self.smppc_factory.smpp.sessionState, SMPPSessionStates.UNBOUND) self.assertTrue(type(stats.get('last_received_elink_at')) == datetime)
def test_stats(self): stats = SMPPServerStatsCollector().get(cid = 'test_stats') self.assertEqual(stats._stats, { 'created_at': 0, 'last_received_pdu_at': 0, 'last_sent_pdu_at': 0, 'last_received_elink_at': 0, 'connected_count': 0, 'connect_count': 0, 'disconnect_count': 0, 'bound_trx_count': 0, 'bound_rx_count': 0, 'bound_tx_count': 0, 'bind_trx_count': 0, 'bind_rx_count': 0, 'bind_tx_count': 0, 'unbind_count': 0, })
def smppsapi(self, arg, opts): """As of Jasmin's 0.6 version, there can be only one SMPPs API, the smpp server id is set for later evolution to handle multiple APIs, this is why the id is hard coded to 'smpps_01'. """ sc = SMPPServerStatsCollector() headers = ["#Item", "Value"] table = [] for k, v in sc.get('smpps_01').getStats().iteritems(): row = [] row.append('#%s' % k) if k[-3:] == '_at': row.append(formatDateTime(v)) else: row.append(v) table.append(row) self.protocol.sendData(tabulate(table, headers, tablefmt="plain", numalign="left").encode('ascii'))
def __init__(self, config, auth_portal, RouterPB=None, SMPPClientManagerPB=None, interceptorpb_client=None): self.config = config # A dict of protocol instances for each of the current connections, # indexed by system_id self.bound_connections = {} self._auth_portal = auth_portal self.RouterPB = RouterPB self.SMPPClientManagerPB = SMPPClientManagerPB self.interceptorpb_client = interceptorpb_client # Setup statistics collector self.stats = SMPPServerStatsCollector().get(cid=self.config.id) self.stats.set('created_at', datetime.now()) # Set up a dedicated logger self.log = logging.getLogger(LOG_CATEGORY_SERVER_BASE + ".%s" % config.id) if len(self.log.handlers) != 1: self.log.setLevel(config.log_level) if 'stdout' in self.config.log_file: handler = logging.StreamHandler(sys.stdout) else: handler = TimedRotatingFileHandler( filename=self.config.log_file, when=self.config.log_rotate) formatter = logging.Formatter(config.log_format, config.log_date_format) handler.setFormatter(formatter) self.log.addHandler(handler) self.log.propagate = False self.msgHandler = self.submit_sm_event_interceptor
def test_get_will_create_connector(self): c = SMPPServerStatsCollector() self.assertTrue('test_get_will_create_connector' not in c.connectors) c.get(cid = 'test_get_will_create_connector') self.assertTrue('test_get_will_create_connector' in c.connectors)
def test_stats_set(self): stats = SMPPServerStatsCollector().get(cid = 'test_stats_set') self.assertEqual(stats.get('bind_rx_count'), 0) stats.set('bind_rx_count', 2) self.assertEqual(stats.get('bind_rx_count'), 2)