def test_queue_peaks_no_lines_results(line_factory): """Test the QueuePeaks command. If there are no log lines processed, nothing should be returned. """ cmd = commands.QueuePeaks() assert cmd.raw_results() == []
def test_queue_peaks_output(line_factory, capsys, output, expected): """Test the QueuePeaks command. Peaks information are returned sorted by date. """ cmd = commands.QueuePeaks() for microseconds, queue in enumerate([0, 4, 0, 0, 19, 4, 0]): line = line_factory(queue_backend=queue, accept_date=f'15/Jan/2017:05:23:05.{microseconds}') cmd(line) check_output(cmd, output, expected, capsys)
def test_queue_peaks_generated_keys(line_factory, date, expected_key): """Test the QueuePeaks command. Check how the keys for the requests dictionary are generated. """ cmd = commands.QueuePeaks() cmd(line_factory(queue_backend=0, accept_date=date)) keys = list(cmd.requests.keys()) # account for a 1h difference, if UTC is used (as in travis) assert expected_key - 4000 <= keys[0] <= expected_key + 4000 # check that microseconds are exact though assert expected_key - int(expected_key) == keys[0] - int(keys[0])
def test_queue_peaks_no_queues(line_factory): """Test the QueuePeaks command. If there are no log lines processed, nothing should be returned. """ cmd = commands.QueuePeaks() now = datetime.now() for second in range(4): accept_date = now.replace( second=second).strftime('%d/%b/%Y:%H:%M:%S.%f') cmd(line_factory(queue_backend=0, accept_date=accept_date)) assert len(cmd.requests) == 4 assert cmd.raw_results() == []
def test_queue_peaks_multiple_sorted(line_factory): """Test the QueuePeaks command. Peaks information are returned sorted by date. """ cmd = commands.QueuePeaks() for microseconds, queue in enumerate([0, 4, 0, 0, 19, 4, 0]): line = line_factory(queue_backend=queue, accept_date=f'15/Jan/2017:05:23:05.{microseconds}') cmd(line) day = datetime(year=2017, month=1, day=15, hour=5, minute=23, second=5) results = cmd.raw_results() assert len(results) == 2 assert results[0]['peak'] == 4 assert results[0]['started'] == day.replace(microsecond=100000) assert results[1]['peak'] == 19 assert results[1]['started'] == day.replace(microsecond=400000)
def test_queue_peaks_did_not_finish(line_factory): """Test the QueuePeaks command. Check that QueuePeaks handles the corner case of a peak that does not finish. """ cmd = commands.QueuePeaks() for microseconds, queue in enumerate([4, 19, 12]): line = line_factory(queue_backend=queue, accept_date=f'15/Jan/2017:05:23:05.{microseconds}') cmd(line) day = datetime(year=2017, month=1, day=15, hour=5, minute=23, second=5) results = cmd.raw_results() assert len(results) == 1 peak_info = results[0] assert peak_info['peak'] == 19 assert peak_info['span'] == 3 assert peak_info['started'] == day assert peak_info['finished'] == day.replace(microsecond=200000)
def test_queue_peaks_details(line_factory): """Test the QueuePeaks command. Check the information returned for each peak. """ cmd = commands.QueuePeaks() for microseconds, queue in enumerate([0, 4, 7, 8, 19, 4, 0]): line = line_factory(queue_backend=queue, accept_date=f'15/Jan/2017:05:23:05.{microseconds}') cmd(line) day = datetime(year=2017, month=1, day=15, hour=5, minute=23, second=5) results = cmd.raw_results() assert len(results) == 1 peak_info = results[0] assert peak_info['peak'] == 19 assert peak_info['span'] == 5 assert peak_info['started'] == day.replace(microsecond=100000) assert peak_info['finished'] == day.replace(microsecond=600000)