def test_get_pause_intervals_in_range_multiple_pauseall(self): _, agent_id_1 = self._insert_agent('Agent/1') start = dt(2012, 7, 1, tzinfo=UTC) end = dt(2012, 7, 31, 23, 59, 59, 999999, tzinfo=UTC) queue_log_data = '''\ | time | callid | queuename | agent | event | data1 | data2 | data3 | data4 | data5 | | 2012-07-21 09:54:09.999999+00 | NONE | NONE | Agent/1 | PAUSEALL | | | | | | | 2012-07-21 09:59:09.999999+00 | NONE | NONE | Agent/1 | PAUSEALL | | | | | | | 2012-07-21 10:54:09.999999+00 | NONE | NONE | Agent/1 | UNPAUSEALL | | | | | | | 2012-07-21 23:59:19.999999+00 | NONE | NONE | Agent/1 | PAUSEALL | | | | | | | 2012-07-22 02:02:19.999999+00 | NONE | NONE | Agent/1 | UNPAUSEALL | | | | | | ''' self._insert_queue_log_data(queue_log_data) result = stat_dao.get_pause_intervals_in_range(self.session, start, end) for agent, logins in six.iteritems(result): result[agent] = sorted(logins, key=lambda login: login[0]) expected = { agent_id_1: [( dt(2012, 7, 21, 9, 54, 9, 999999, tzinfo=UTC), dt(2012, 7, 21, 10, 54, 9, 999999, tzinfo=UTC), ), ( dt(2012, 7, 21, 23, 59, 19, 999999, tzinfo=UTC), dt(2012, 7, 22, 2, 2, 19, 999999, tzinfo=UTC), )] } self.assertEqual(result, expected)
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()
def test_get_pause_intervals_in_range_multiple_pauseall(self): _, agent_id_1 = self._insert_agent('Agent/1') start = dt(2012, 07, 01) end = dt(2012, 07, 31, 23, 59, 59, 999999) queue_log_data = '''\ | time | callid | queuename | agent | event | data1 | data2 | data3 | data4 | data5 | | 2012-07-21 09:54:09.999999 | NONE | NONE | Agent/1 | PAUSEALL | | | | | | | 2012-07-21 09:59:09.999999 | NONE | NONE | Agent/1 | PAUSEALL | | | | | | | 2012-07-21 10:54:09.999999 | NONE | NONE | Agent/1 | UNPAUSEALL | | | | | | | 2012-07-21 23:59:19.999999 | NONE | NONE | Agent/1 | PAUSEALL | | | | | | | 2012-07-22 02:02:19.999999 | NONE | NONE | Agent/1 | UNPAUSEALL | | | | | | ''' self._insert_queue_log_data(queue_log_data) result = stat_dao.get_pause_intervals_in_range(self.session, start, end) for agent, logins in result.iteritems(): result[agent] = sorted(logins, key=lambda login: login[0]) expected = { agent_id_1: [ (dt(2012, 7, 21, 9, 54, 9, 999999), dt(2012, 7, 21, 10, 54, 9, 999999)), (dt(2012, 7, 21, 23, 59, 19, 999999), dt(2012, 7, 22, 2, 2, 19, 999999)) ] } self.assertEqual(result, expected)
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()