예제 #1
0
    def test_get_wrapup_time(self):
        _, agent_id_1 = self._insert_agent('Agent/1')
        _, agent_id_2 = self._insert_agent('Agent/2')
        start = datetime(2012, 10, 1, 6)
        end = datetime(2012, 10, 1, 7, 59, 59, 999999)
        queue_log_data = '''\
| time                       | callid | queuename | agent   | event       | data1 | data2 | data3 | data4 | data5 |
| 2012-10-01 05:59:50.000000 | NONE   | NONE      | Agent/1 | WRAPUPSTART |    30 |       |       |       |       |
| 2012-10-01 06:00:10.000000 | NONE   | NONE      | Agent/1 | WRAPUPSTART |    15 |       |       |       |       |
| 2012-10-01 06:00:15.000000 | NONE   | NONE      | Agent/2 | WRAPUPSTART |    30 |       |       |       |       |
| 2012-10-01 06:59:50.000000 | NONE   | NONE      | Agent/1 | WRAPUPSTART |    15 |       |       |       |       |
| 2012-10-01 07:00:10.000000 | NONE   | NONE      | Agent/1 | WRAPUPSTART |    30 |       |       |       |       |
| 2012-10-01 08:00:10.000000 | NONE   | NONE      | Agent/1 | WRAPUPSTART |    30 |       |       |       |       |
| 2012-10-01 07:59:40.000000 | NONE   | NONE      | Agent/2 | WRAPUPSTART |    30 |       |       |       |       |
'''
        self._insert_queue_log_data(queue_log_data)

        result = queue_log_dao.get_wrapup_times(self.session, start, end, ONE_HOUR)

        expected = {
            datetime(2012, 10, 1, 6): {
                agent_id_1: {'wrapup_time': timedelta(seconds=45)},
                agent_id_2: {'wrapup_time': timedelta(seconds=30)},
            },
            datetime(2012, 10, 1, 7): {
                agent_id_1: {'wrapup_time': timedelta(seconds=35)},
                agent_id_2: {'wrapup_time': timedelta(seconds=20)},
            },
        }

        self.assertEqual(result, expected)
예제 #2
0
def insert_periodic_stat(dao_sess, start, end):
    time_computer = AgentTimeComputer(start, end, INTERVAL)

    login_intervals = stat_dao.get_login_intervals_in_range(
        dao_sess, start, end)
    pause_intervals = stat_dao.get_pause_intervals_in_range(
        dao_sess, start, end)

    periodic_stats_login = time_computer.compute_login_time_in_period(
        login_intervals)
    periodic_stats_pause = time_computer.compute_pause_time_in_period(
        pause_intervals)
    periodic_stats_wrapup = queue_log_dao.get_wrapup_times(
        dao_sess, start, end, INTERVAL)
    dao_sess.flush()

    periodic_stats = _merge_update_agent_statistics(
        periodic_stats_login,
        periodic_stats_pause,
        periodic_stats_wrapup,
    )

    for period, stats in periodic_stats.items():
        stat_agent_periodic_dao.insert_stats(dao_sess, stats, period)
    dao_sess.flush()
예제 #3
0
    def test_get_wrapup_time(self):
        _, agent_id_1 = self._insert_agent('Agent/1')
        _, agent_id_2 = self._insert_agent('Agent/2')
        start = datetime(2012, 10, 1, 6)
        end = datetime(2012, 10, 1, 7, 59, 59, 999999)
        queue_log_data = '''\
| time                       | callid | queuename | agent   | event       | data1 | data2 | data3 | data4 | data5 |
| 2012-10-01 05:59:50.000000 | NONE   | NONE      | Agent/1 | WRAPUPSTART |    30 |       |       |       |       |
| 2012-10-01 06:00:10.000000 | NONE   | NONE      | Agent/1 | WRAPUPSTART |    15 |       |       |       |       |
| 2012-10-01 06:00:15.000000 | NONE   | NONE      | Agent/2 | WRAPUPSTART |    30 |       |       |       |       |
| 2012-10-01 06:59:50.000000 | NONE   | NONE      | Agent/1 | WRAPUPSTART |    15 |       |       |       |       |
| 2012-10-01 07:00:10.000000 | NONE   | NONE      | Agent/1 | WRAPUPSTART |    30 |       |       |       |       |
| 2012-10-01 08:00:10.000000 | NONE   | NONE      | Agent/1 | WRAPUPSTART |    30 |       |       |       |       |
| 2012-10-01 07:59:40.000000 | NONE   | NONE      | Agent/2 | WRAPUPSTART |    30 |       |       |       |       |
'''
        self._insert_queue_log_data(queue_log_data)

        result = queue_log_dao.get_wrapup_times(self.session, start, end,
                                                ONE_HOUR)

        expected = {
            datetime(2012, 10, 1, 6): {
                agent_id_1: {
                    'wrapup_time': timedelta(seconds=45)
                },
                agent_id_2: {
                    'wrapup_time': timedelta(seconds=30)
                },
            },
            datetime(2012, 10, 1, 7): {
                agent_id_1: {
                    'wrapup_time': timedelta(seconds=35)
                },
                agent_id_2: {
                    'wrapup_time': timedelta(seconds=20)
                },
            },
        }

        self.assertEqual(result, expected)
예제 #4
0
파일: agent.py 프로젝트: jaunis/xivo-stat
def insert_periodic_stat(dao_sess, start, end):
    logger.info('Inserting agent periodic stat')
    time_computer = AgentTimeComputer(start, end, INTERVAL)

    dao_sess.begin()
    login_intervals = stat_dao.get_login_intervals_in_range(dao_sess, start, end)
    pause_intervals = stat_dao.get_pause_intervals_in_range(dao_sess, start, end)

    periodic_stats_login = time_computer.compute_login_time_in_period(login_intervals)
    periodic_stats_pause = time_computer.compute_pause_time_in_period(pause_intervals)
    periodic_stats_wrapup = queue_log_dao.get_wrapup_times(dao_sess, start, end, INTERVAL)
    dao_sess.commit()

    periodic_stats = _merge_update_agent_statistics(
        periodic_stats_login,
        periodic_stats_pause,
        periodic_stats_wrapup,
    )

    dao_sess.begin()
    for period, stats in periodic_stats.iteritems():
        stat_agent_periodic_dao.insert_stats(dao_sess, stats, period)
    dao_sess.commit()