Example #1
0
 def insert_stat_call_on_queue(self, **kwargs):
     session = self.Session()
     call = StatCallOnQueue(**kwargs)
     session.add(call)
     session.flush()
     # NOTE(fblackburn) Avoid BEGIN new session after commit
     call_id = call.id
     session.commit()
     return call_id
    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)
Example #3
0
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 = 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_that_find_all_callid_between_date_includes_calls_started_before_start(
            self):
        callid = '234235435'
        _, queue_id = self._insert_queue_to_stat_queue()
        _, agent_id = self._insert_agent_to_stat_agent()
        call = StatCallOnQueue(
            callid=callid,
            time=dt(2014, 1, 1, 10, 59, 59, tzinfo=UTC),
            ringtime=1,
            talktime=1,
            waittime=1,
            status='answered',
            stat_queue_id=queue_id,
            stat_agent_id=agent_id,
        )

        self.add_me(call)

        result = stat_call_on_queue_dao.find_all_callid_between_date(
            self.session, dt(2014, 1, 1, 11, 0, 0, tzinfo=UTC),
            dt(2014, 1, 1, 11, 59, 59, tzinfo=UTC))

        assert_that(result, contains(callid))