def insert_periodic_stat(dao_sess, start, end): dao_sess.begin() periodic_stats = stat_call_on_queue_dao.get_periodic_stats_hour(dao_sess, start, end) dao_sess.commit() dao_sess.begin() for period, stats in periodic_stats.iteritems(): logger.info('Inserting queue periodic stat %s', period) stat_queue_periodic_dao.insert_stats(dao_sess, stats, period) dao_sess.commit()
def test_get_most_recent_time(self): self.assertRaises(LookupError, stat_queue_periodic_dao.get_most_recent_time, self.session) stats = self._get_stats_for_queue() start = datetime.datetime(2012, 01, 01, 00, 00, 00) with flush_session(self.session): for minute_increment in [-5, 5, 15, 22, 35, 65, 120]: delta = datetime.timedelta(minutes=minute_increment) time = start + delta stat_queue_periodic_dao.insert_stats(self.session, stats, time) result = stat_queue_periodic_dao.get_most_recent_time(self.session) expected = start + datetime.timedelta(minutes=120) self.assertEqual(result, expected)
def test_clean_table(self): queue_name, queue_id = self._insert_queue_to_stat_queue() stats = { queue_id: { 'full': 4, 'total': 10 } } period_start = datetime.datetime(2012, 01, 01, 00, 00, 00) stat_queue_periodic_dao.insert_stats(self.session, stats, period_start) stat_queue_periodic_dao.clean_table(self.session) total = self.session.query(func.count(StatQueuePeriodic.time))[0][0] self.assertEqual(total, 0)
def test_insert_periodic_stat(self): stats = self._get_stats_for_queue() period_start = datetime.datetime(2012, 01, 01, 00, 00, 00) with flush_session(self.session): stat_queue_periodic_dao.insert_stats(self.session, stats, period_start) try: result = (self.session.query(StatQueuePeriodic) .filter(StatQueuePeriodic.time == period_start)[0]) self.assertEqual(result.abandoned, 7) self.assertEqual(result.answered, 27) self.assertEqual(result.closed, 5) self.assertEqual(result.full, 4) self.assertEqual(result.joinempty, 2) self.assertEqual(result.leaveempty, 11) self.assertEqual(result.timeout, 5) self.assertEqual(result.divert_ca_ratio, 22) self.assertEqual(result.divert_waittime, 15) self.assertEqual(result.total, 98) except LookupError: self.fail('Should have found a row')
def test_remove_after(self): queue_name, queue_id = self._insert_queue_to_stat_queue() stats = {queue_id: {'full': 4, 'total': 10}} self.session.begin() stat_queue_periodic_dao.insert_stats(self.session, stats, datetime.datetime(2012, 1, 1)) stat_queue_periodic_dao.insert_stats(self.session, stats, datetime.datetime(2012, 1, 2)) stat_queue_periodic_dao.insert_stats(self.session, stats, datetime.datetime(2012, 1, 3)) self.session.commit() stat_queue_periodic_dao.remove_after(self.session, datetime.datetime(2012, 1, 2)) res = self.session.query(StatQueuePeriodic.time) self.assertEqual(res.count(), 1) self.assertEqual(res[0].time, datetime.datetime(2012, 1, 1))
def test_remove_after(self): queue_name, queue_id = self._insert_queue_to_stat_queue() stats = { queue_id: { 'full': 4, 'total': 10 } } with flush_session(self.session): stat_queue_periodic_dao.insert_stats(self.session, stats, datetime.datetime(2012, 1, 1)) stat_queue_periodic_dao.insert_stats(self.session, stats, datetime.datetime(2012, 1, 2)) stat_queue_periodic_dao.insert_stats(self.session, stats, datetime.datetime(2012, 1, 3)) stat_queue_periodic_dao.remove_after(self.session, datetime.datetime(2012, 1, 2)) res = self.session.query(StatQueuePeriodic.time) self.assertEqual(res.count(), 1) self.assertEqual(res[0].time, datetime.datetime(2012, 1, 1))