Esempio n. 1
0
    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)
Esempio n. 2
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')
Esempio n. 3
0
	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 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()
Esempio n. 5
0
    def httpapi(self, arg, opts):
        sc = HttpAPIStatsCollector()
        headers = ["#Item", "Value"]

        table = []
        for k, v in sc.get()._stats.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'))
Esempio n. 6
0
    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'))
Esempio n. 7
0
	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'),
						 )
Esempio n. 8
0
    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))
Esempio n. 9
0
	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)
Esempio n. 10
0
	def test_stats_set(self):
		stats = HttpAPIStatsCollector().get()

		stats.set('success_count', 1000)
		self.assertEqual(stats.get('success_count'), 1000)
Esempio n. 11
0
    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)
Esempio n. 12
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)
Esempio n. 13
0
    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)
Esempio n. 14
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)