def test_get_periodic_stats_closed(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_closed_call(self.session, 'callid%s' % minute_increment, time, queue_name)

        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]['closed'], 1)
        self.assertEqual(stats_quarter_hour[start + datetime.timedelta(minutes=15)][queue_id]['closed'], 2)
        self.assertEqual(stats_quarter_hour[start + datetime.timedelta(minutes=30)][queue_id]['closed'], 1)

        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]['closed'], 4)
示例#2
0
def insert_periodic_stat(dao_sess, start, end):
    periodic_stats = stat_call_on_queue_dao.get_periodic_stats_hour(
        dao_sess, start, end)
    dao_sess.flush()

    for period, stats in periodic_stats.items():
        stat_queue_periodic_dao.insert_stats(dao_sess, stats, period)
    dao_sess.flush()
示例#3
0
文件: queue.py 项目: jaunis/xivo-stat
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()
示例#4
0
文件: queue.py 项目: jaunis/xivo-stat
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_periodic_stats_total(self):
        start = dt(2012, 1, 1, 0, 0, 0, tzinfo=UTC)
        end = dt(2012, 1, 31, 23, 59, 59, 999999, tzinfo=UTC)

        queue_name, queue_id = self._insert_queue_to_stat_queue()

        for minute_increment in [-5, 5, 15, 22, 35, 65, 120]:
            delta = 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 = 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.stat_queue_id = queue_id
        other_call.status = 'abandoned'

        self.add_me(other_call)

        stats_quarter_hour = stat_call_on_queue_dao.get_periodic_stats_quarter_hour(
            self.session, start, end)

        self.assertTrue(dt(2012, 1, 1, tzinfo=UTC) in stats_quarter_hour)
        self.assertTrue(dt(2012, 1, 1, 1, tzinfo=UTC) in stats_quarter_hour)
        self.assertTrue(dt(2012, 1, 1, 2, tzinfo=UTC) in stats_quarter_hour)

        self.assertEqual(stats_quarter_hour[start][queue_id]['total'], 3)
        self.assertEqual(
            stats_quarter_hour[start +
                               timedelta(minutes=15)][queue_id]['total'], 4)
        self.assertEqual(
            stats_quarter_hour[start +
                               timedelta(minutes=30)][queue_id]['total'], 2)

        stats_hour = stat_call_on_queue_dao.get_periodic_stats_hour(
            self.session, start, end)

        self.assertTrue(dt(2012, 1, 1, tzinfo=UTC) in stats_hour)
        self.assertTrue(dt(2012, 1, 1, 1, tzinfo=UTC) in stats_hour)
        self.assertTrue(dt(2012, 1, 1, 2, tzinfo=UTC) in stats_hour)

        self.assertEqual(stats_hour[start][queue_id]['total'], 9)
    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)
    def test_get_periodic_stats_full(self):
        start = dt(2012, 1, 1, 0, 0, 0, tzinfo=UTC)
        end = dt(2012, 1, 1, 3, 0, 0, tzinfo=UTC)

        queue_name, queue_id = self._insert_queue_to_stat_queue()

        for minute_increment in [-5, 5, 15, 22, 35, 65, 120]:
            delta = timedelta(minutes=minute_increment)
            time = start + delta
            stat_call_on_queue_dao.add_full_call(self.session,
                                                 'callid%s' % minute_increment,
                                                 time, queue_name)

        stats_quarter_hour = stat_call_on_queue_dao.get_periodic_stats_quarter_hour(
            self.session, start, end)

        self.assertTrue(dt(2012, 1, 1, tzinfo=UTC) in stats_quarter_hour)
        self.assertTrue(dt(2012, 1, 1, 1, tzinfo=UTC) in stats_quarter_hour)
        self.assertTrue(dt(2012, 1, 1, 2, tzinfo=UTC) in stats_quarter_hour)

        self.assertEqual(stats_quarter_hour[start][queue_id]['full'], 1)
        self.assertEqual(
            stats_quarter_hour[start +
                               timedelta(minutes=15)][queue_id]['full'], 2)
        self.assertEqual(
            stats_quarter_hour[start +
                               timedelta(minutes=30)][queue_id]['full'], 1)

        stats_hour = stat_call_on_queue_dao.get_periodic_stats_hour(
            self.session, start, end)

        self.assertTrue(dt(2012, 1, 1, tzinfo=UTC) in stats_hour)
        self.assertTrue(dt(2012, 1, 1, 1, tzinfo=UTC) in stats_hour)
        self.assertTrue(dt(2012, 1, 1, 2, tzinfo=UTC) in stats_hour)

        self.assertEqual(stats_hour[start][queue_id]['full'], 4)