def _add_call(session, callid, time, queue_name, event, waittime=None): queue_id = int(stat_queue_dao.id_from_name(queue_name)) call_on_queue = StatCallOnQueue() call_on_queue.time = time call_on_queue.callid = callid call_on_queue.queue_id = queue_id call_on_queue.status = event if waittime: call_on_queue.waittime = waittime session.add(call_on_queue) session.flush()
def test_get_periodic_stats_total(self): start = datetime.datetime(2012, 01, 01, 00, 00, 00) end = datetime.datetime(2012, 01, 31, 23, 59, 59, 999999) queue_name, queue_id = self._insert_queue_to_stat_queue() for minute_increment in [-5, 5, 15, 22, 35, 65, 120]: delta = datetime.timedelta(minutes=minute_increment) time = start + delta stat_call_on_queue_dao.add_full_call(self.session, 'callid%s-full' % minute_increment, time, queue_name) for minute_increment in [-5, 5, 15, 22, 35, 65, 120]: delta = datetime.timedelta(minutes=minute_increment) time = start + delta stat_call_on_queue_dao.add_closed_call(self.session, 'callid%s-closed' % minute_increment, time, queue_name) other_call = StatCallOnQueue() other_call.time = start other_call.callid = 'other type' other_call.queue_id = queue_id other_call.status = 'abandoned' self.session.begin() self.session.add(other_call) self.session.commit() stats_quarter_hour = stat_call_on_queue_dao.get_periodic_stats_quarter_hour(self.session, start, end) self.assertTrue(datetime.datetime(2012, 1, 1) in stats_quarter_hour) self.assertTrue(datetime.datetime(2012, 1, 1, 1) in stats_quarter_hour) self.assertTrue(datetime.datetime(2012, 1, 1, 2) in stats_quarter_hour) self.assertEqual(stats_quarter_hour[start][queue_id]['total'], 3) self.assertEqual(stats_quarter_hour[start + datetime.timedelta(minutes=15)][queue_id]['total'], 4) self.assertEqual(stats_quarter_hour[start + datetime.timedelta(minutes=30)][queue_id]['total'], 2) stats_hour = stat_call_on_queue_dao.get_periodic_stats_hour(self.session, start, end) self.assertTrue(datetime.datetime(2012, 1, 1) in stats_hour) self.assertTrue(datetime.datetime(2012, 1, 1, 1) in stats_hour) self.assertTrue(datetime.datetime(2012, 1, 1, 2) in stats_hour) self.assertEqual(stats_hour[start][queue_id]['total'], 9)