def test_find_latest_log(self): # 1. Find latest log if file, named like log, exists in dir. self.assertTrue(find_latest_log("./log").log_name) # 2. Returns None if there's no file, named like log, in dir. self.assertIsNone(find_latest_log("./tests/reports").log_name) # 3. Returns None if the file has bad naming for date. self.assertIsNone(find_latest_log("./tests/log/bad_log_name").log_date)
def test_ignoring_wrong_formats(self): """ Tests that all file formats except .gz, .txt, .log are ignored while searching latest log file """ # File with right format has earliest date self._prepare_test_log_files(("nginx-access-ui.log-20160101.txt", "nginx-access-ui.log-20190804.zip", "nginx-access-ui.log-20190904.rtf", "nginx-access-ui.log-20191004.csv", "nginx-access-ui.log-20191104.bz2")) latest_log_file = find_latest_log(log_dir=self.test_folder, log_file_pattern=LOG_FILE_PATTERN) right_file_name = os.path.join(self.test_folder, "nginx-access-ui.log-20160101.txt") right_date = datetime.datetime(year=2016, month=1, day=1) with self.subTest(): self.assertEqual(right_file_name, latest_log_file.path) with self.subTest(): self.assertEqual(".txt", latest_log_file.extension) with self.subTest(): self.assertEqual(right_date, latest_log_file.date_of_creation)
def test_search_log_along_other_files(self, listdir_mock): listdir_mock.return_value = [ 'file', 'file2', 'file20170630', ] log = analyzer.find_latest_log('/logs') self.assertEqual(log, None)
def test_suitable_log_file_not_found(self): """ Tests if function returns nothing if suitable log file not found """ # No suitable log file self._prepare_test_log_files(("nginx-access-ui.log-20190804.zip", "nginx-access-ui.log-20190904.rtf", "nginx-access-ui.log-20191004.csv", "nginx-access-ui.log-20191104.bz2")) latest_log_file = find_latest_log(log_dir=self.test_folder, log_file_pattern=LOG_FILE_PATTERN) self.assertIsNone(latest_log_file)
def test_search_log(self, listdir_mock): listdir_mock.return_value = [ 'file' 'file20180630' 'aanginx-access-ui.log-20170631', 'nginx-access-ui.log-20170630', 'nginx-access-ui.log-20180630.gz', 'nginx-access-ui.log-33333333.bz2', 'nginx-access-ui.log-20180631.bz2', 'nginx-access-ui.log-20180631ff', 'nginx-access-ui.log-20180631ff.tar', ] log = set(analyzer.find_latest_log('/logs')) expected = {date(2018, 6, 30), '/logs/nginx-access-ui.log-20180630.gz'} self.assertSetEqual(log, expected)
def test_make_report_table(self): latest_log = find_latest_log(log_dir='./tests/log/') access_logs = parse_log(log_path=f'./tests/log/{latest_log.log_name}', parser=parse_line) try: report_table = make_report_table(access_logs, report_length=10) except Exception as e: print(f"Something is wrong: {e}") report_table = None # 1. Checks if report table is constructed. self.assertIsNotNone(report_table) # 2. Checks if report table is a list. self.assertIs(type(report_table), list) # 3. Checks if report table is a list of dicts. self.assertIs(type(report_table[0]), dict) # 4. Checks if report table is sorted properly. self.assertGreater(report_table[0]['time_sum'], report_table[1]['time_sum'])
def test_render_html_report(self): latest_log = find_latest_log(log_dir='./tests/log/') access_log = parse_log(log_path=f'./tests/log/{latest_log.log_name}', parser=parse_line) report_length = 10 report_table = make_report_table(access_log, report_length=report_length) new_report_date = latest_log.log_date.strftime("%Y.%m.%d") try: os.remove(f"./tests/reports/report-{new_report_date}.html") except OSError: pass render_result = render_html_report(table=report_table, report_path="./tests/reports/", latest_log_date=latest_log.log_date) # 1. Checks if report is created. self.assertTrue(render_result in os.listdir("./tests/reports/")) # 2. Checks if report has desired length. self.assertEqual(len(report_table), report_length)
def test_finding_latest_log_file(self): """ Tests finding latest log file (file with latest date in file name """ self._prepare_test_log_files(("nginx-access-ui.log-20170830.gz", "nginx-access-ui.log-20170701.gz", "nginx-access-ui.log-19851117.gz", "nginx-access-ui.log-20180630.gz", "nginx-access-ui.log-20191104.gz")) latest_log_file = find_latest_log(log_dir=self.test_folder, log_file_pattern=LOG_FILE_PATTERN) right_file_name = os.path.join(self.test_folder, "nginx-access-ui.log-20191104.gz") right_date = datetime.datetime(year=2019, month=11, day=4) with self.subTest(): self.assertEqual(right_file_name, latest_log_file.path) with self.subTest(): self.assertEqual(".gz", latest_log_file.extension) with self.subTest(): self.assertEqual(right_date, latest_log_file.date_of_creation)
def test_find_latest_log(self): for test_name, files_list, result in finder_test_params: with self.subTest(test_name=test_name): testdir = self._prepare_testdir(files_list) found_logfile = log_analyzer.find_latest_log(testdir) self.assertEqual(found_logfile, result)
def test_find_latest_log(self): latest_log = find_latest_log("./tests/latest_log/", logger) self.assertEqual(os.path.basename(latest_log.f_path), "nginx-access-ui.log-20180730")