Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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'])
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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")