def setUp(self): HTTPApiTestCases.setUp(self) # Re-init stats singleton collector created_at = HttpAPIStatsCollector().get().get('created_at') HttpAPIStatsCollector().get().init() HttpAPIStatsCollector().get().set('created_at', created_at)
def test_is_singleton(self): i1 = HttpAPIStatsCollector() i2 = HttpAPIStatsCollector() self.assertEqual(i1, i2) i1.get().set('auth_error_count', 100) self.assertEqual(i1.get().get('auth_error_count'), i2.get().get('auth_error_count'), )
def setUp(self): if hasattr(self, 'ipb_client'): yield HappySMSCTestCase.setUp(self, interceptorpb_client = self.ipb_client) else: yield HappySMSCTestCase.setUp(self) # Connect to RouterPB yield self.connect('127.0.0.1', self.pbPort) # Provision user, group, default mt route and # default mt interceptor self.g1 = Group(1) yield self.group_add(self.g1) self.c1 = SmppClientConnector(id_generator()) self.mt_interceptor = MTInterceptorScript(self.script) self.u1_password = '******' self.u1 = User(1, self.g1, 'username', self.u1_password) self.u2_password = '******' self.u2 = User(1, self.g1, 'username2', self.u2_password) yield self.user_add(self.u1) yield self.mtroute_add(DefaultRoute(self.c1), 0) yield self.mtinterceptor_add(DefaultInterceptor(self.mt_interceptor), 0) # Now we'll create the connector yield self.SMPPClientManagerPBProxy.connect('127.0.0.1', self.CManagerPort) c1Config = SMPPClientConfig(id=self.c1.cid, port = self.SMSCPort.getHost().port) yield self.SMPPClientManagerPBProxy.add(c1Config) # And start it ! yield self.SMPPClientManagerPBProxy.start(self.c1.cid) # Get stats singletons self.stats_http = HttpAPIStatsCollector().get()
def test_send_with_auth_success(self): stats = HttpAPIStatsCollector().get() response = yield self.web.get( "send", { 'username': self.username, 'password': '******', 'to': '98700177', 'content': 'anycontent' }) self.assertEqual(response.responseCode, 500) # This is a normal error since SMPPClientManagerPB is not really running self.assertEqual( response.value(), "Error \"Cannot send submit_sm, check SMPPClientManagerPB log file for details\"" ) self.assertTrue(type(stats.get('created_at')) == datetime) self.assertEqual(stats.get('request_count'), 1) self.assertTrue(type(stats.get('last_request_at')) == datetime) self.assertEqual(stats.get('auth_error_count'), 0) self.assertEqual(stats.get('route_error_count'), 0) self.assertEqual(stats.get('throughput_error_count'), 0) self.assertEqual(stats.get('charging_error_count'), 0) self.assertEqual(stats.get('server_error_count'), 1) self.assertEqual(stats.get('success_count'), 0) self.assertEqual(stats.get('last_success_at'), 0)
def test_send_with_auth_failure(self): stats = HttpAPIStatsCollector().get() self.assertTrue(type(stats.get('created_at')) == datetime) self.assertEqual(stats.get('request_count'), 0) self.assertEqual(stats.get('last_request_at'), 0) self.assertEqual(stats.get('auth_error_count'), 0) self.assertEqual(stats.get('route_error_count'), 0) self.assertEqual(stats.get('throughput_error_count'), 0) self.assertEqual(stats.get('charging_error_count'), 0) self.assertEqual(stats.get('server_error_count'), 0) self.assertEqual(stats.get('success_count'), 0) self.assertEqual(stats.get('last_success_at'), 0) response = yield self.web.get("send", {'username': self.username, 'password': '******', 'to': '98700177', 'content': 'anycontent'}) self.assertEqual(response.responseCode, 403) self.assertEqual(response.value(), "Error \"Authentication failure for username:%s\"" % self.username) self.assertTrue(type(stats.get('created_at')) == datetime) self.assertEqual(stats.get('request_count'), 1) self.assertTrue(type(stats.get('last_request_at')) == datetime) self.assertEqual(stats.get('auth_error_count'), 1) self.assertEqual(stats.get('route_error_count'), 0) self.assertEqual(stats.get('throughput_error_count'), 0) self.assertEqual(stats.get('charging_error_count'), 0) self.assertEqual(stats.get('server_error_count'), 0) self.assertEqual(stats.get('success_count'), 0) self.assertEqual(stats.get('last_success_at'), 0)
def test_exceptions(self): stats = HttpAPIStatsCollector().get() 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 = HttpAPIStatsCollector().get() current = stats.get('request_count') stats.inc('request_count', 1) self.assertEqual(stats.get('request_count'), current+1) stats.inc('request_count', 5) self.assertEqual(stats.get('request_count'), current+6)
def test_stats(self): stats = HttpAPIStatsCollector().get() self.assertEqual(len(stats._stats), 12) self.assertTrue('created_at' in stats._stats) self.assertTrue('request_count' in stats._stats) self.assertTrue('last_request_at' in stats._stats) self.assertTrue('auth_error_count' in stats._stats) self.assertTrue('route_error_count' in stats._stats) self.assertTrue('throughput_error_count' in stats._stats) self.assertTrue('charging_error_count' in stats._stats) self.assertTrue('server_error_count' in stats._stats) self.assertTrue('success_count' in stats._stats) self.assertTrue('last_success_at' in stats._stats) self.assertTrue('interceptor_count' in stats._stats) self.assertTrue('interceptor_error_count' in stats._stats)
def httpapi(self, arg, opts): sc = HttpAPIStatsCollector() headers = ["#Item", "Value"] table = [] for k, v in sc.get().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, RouterPB, SMPPClientManagerPB, config, interceptor=None): Resource.__init__(self) # Setup stats collector stats = HttpAPIStatsCollector().get() stats.set('created_at', datetime.now()) # Set up a dedicated logger log = logging.getLogger(LOG_CATEGORY) if len(log.handlers) != 1: log.setLevel(config.log_level) handler = TimedRotatingFileHandler(filename=config.log_file, when=config.log_rotate) formatter = logging.Formatter(config.log_format, config.log_date_format) handler.setFormatter(formatter) log.addHandler(handler) log.propagate = False self.log = log # Set http url routings log.debug("Setting http url routing for /send") self.putChild( b'send', Send(config, RouterPB, SMPPClientManagerPB, stats, log, interceptor)) log.debug("Setting http url routing for /rate") self.putChild(b'rate', Rate(config, RouterPB, stats, log, interceptor)) log.debug("Setting http url routing for /balance") self.putChild(b'balance', Balance(RouterPB, stats, log)) log.debug("Setting http url routing for /ping") self.putChild(b'ping', Ping(log))
def test_stats_set(self): stats = HttpAPIStatsCollector().get() stats.set('success_count', 1000) self.assertEqual(stats.get('success_count'), 1000)