summaryrefslogtreecommitdiff
path: root/buildscripts/tests/resmokelib/testing/test_symbolizer_service.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildscripts/tests/resmokelib/testing/test_symbolizer_service.py')
-rw-r--r--buildscripts/tests/resmokelib/testing/test_symbolizer_service.py250
1 files changed, 0 insertions, 250 deletions
diff --git a/buildscripts/tests/resmokelib/testing/test_symbolizer_service.py b/buildscripts/tests/resmokelib/testing/test_symbolizer_service.py
deleted file mode 100644
index caeb81e1e4b..00000000000
--- a/buildscripts/tests/resmokelib/testing/test_symbolizer_service.py
+++ /dev/null
@@ -1,250 +0,0 @@
-"""Unit tests for buildscripts/resmokelib/testing/symbolizer_service.py."""
-# pylint: disable=missing-docstring
-import os
-import unittest
-from pathlib import Path
-from tempfile import TemporaryDirectory
-from unittest.mock import MagicMock
-
-from buildscripts.resmokelib.testing import symbolizer_service as under_test
-
-
-def mock_resmoke_symbolizer_config():
- config_mock: under_test.ResmokeSymbolizerConfig = MagicMock(
- spec_set=under_test.ResmokeSymbolizerConfig)
- config_mock.evg_task_id = "evg_task_id"
- config_mock.client_id = "client_id"
- config_mock.client_secret = "client_secret"
- config_mock.is_windows.return_value = False
- config_mock.is_macos.return_value = False
- return config_mock
-
-
-class TestResmokeSymbolizer(unittest.TestCase):
- def setUp(self) -> None:
- self.config_mock = mock_resmoke_symbolizer_config()
- self.symbolizer_service_mock: under_test.SymbolizerService = MagicMock(
- spec_set=under_test.SymbolizerService)
- self.file_service_mock: under_test.FileService = MagicMock(spec_set=under_test.FileService)
- self.resmoke_symbolizer = under_test.ResmokeSymbolizer(
- self.config_mock, self.symbolizer_service_mock, self.file_service_mock)
-
- def test_symbolize_test_logs_process_all_files(self):
- stacktrace_files = [f"file{i}.stacktrace" for i in range(5)]
- self.file_service_mock.filter_out_non_files.return_value = stacktrace_files
-
- self.resmoke_symbolizer.symbolize_test_logs(MagicMock())
-
- self.assertEqual(self.symbolizer_service_mock.run_symbolizer_script.call_count, 5)
- for i, call in enumerate(self.symbolizer_service_mock.run_symbolizer_script.call_arg_list):
- self.assertEqual(call.args[0], f"file{i}.stacktrace")
- self.file_service_mock.remove_all.assert_called_once_with(stacktrace_files)
-
- def test_symbolize_test_logs_hit_timeout(self):
- stacktrace_files = [f"file{i}.stacktrace" for i in range(5)]
- self.file_service_mock.filter_out_non_files.return_value = stacktrace_files
-
- self.resmoke_symbolizer.symbolize_test_logs(MagicMock(), 0)
-
- self.assertEqual(self.symbolizer_service_mock.run_symbolizer_script.call_count, 1)
- for i, call in enumerate(self.symbolizer_service_mock.run_symbolizer_script.call_arg_list):
- self.assertEqual(call.args[0], f"file{i}.stacktrace")
- self.file_service_mock.remove_all.assert_called_once_with(stacktrace_files)
-
- def test_symbolize_test_logs_should_not_symbolize(self):
- self.config_mock.is_windows.return_value = True
-
- self.resmoke_symbolizer.symbolize_test_logs(MagicMock())
- self.symbolizer_service_mock.run_symbolizer_script.assert_not_called()
-
- def test_symbolize_test_logs_could_not_get_dbpath(self):
- self.file_service_mock.check_path_exists.return_value = False
-
- self.resmoke_symbolizer.symbolize_test_logs(MagicMock())
- self.symbolizer_service_mock.run_symbolizer_script.assert_not_called()
-
- def test_symbolize_test_logs_did_not_find_files(self):
- self.file_service_mock.find_all_children_recursively.return_value = []
-
- self.resmoke_symbolizer.symbolize_test_logs(MagicMock())
- self.symbolizer_service_mock.run_symbolizer_script.assert_not_called()
-
- def test_should_not_symbolize_if_not_in_evergreen(self):
- self.config_mock.evg_task_id = None
- ret = self.resmoke_symbolizer.should_symbolize(MagicMock())
- self.assertFalse(ret)
-
- def test_should_not_symbolize_if_secrets_are_absent(self):
- self.config_mock.client_id = None
- self.config_mock.client_secret = None
- ret = self.resmoke_symbolizer.should_symbolize(MagicMock())
- self.assertFalse(ret)
-
- def test_should_not_symbolize_if_on_windows(self):
- self.config_mock.is_windows.return_value = True
- ret = self.resmoke_symbolizer.should_symbolize(MagicMock())
- self.assertFalse(ret)
-
- def test_should_not_symbolize_if_on_macos(self):
- self.config_mock.is_macos.return_value = True
- ret = self.resmoke_symbolizer.should_symbolize(MagicMock())
- self.assertFalse(ret)
-
- def test_should_symbolize_return_true(self):
- ret = self.resmoke_symbolizer.should_symbolize(MagicMock())
- self.assertTrue(ret)
-
- def test_get_stacktrace_dir_returns_dir(self):
- dbpath = "dbpath"
- test = MagicMock(fixture=MagicMock(get_dbpath_prefix=MagicMock(return_value=dbpath)))
- self.file_service_mock.check_path_exists.return_value = True
-
- ret = self.resmoke_symbolizer.get_stacktrace_dir(test)
- self.assertEqual(ret, dbpath)
-
- def test_get_stacktrace_dir_if_dir_does_not_exist(self):
- test = MagicMock()
- self.file_service_mock.check_path_exists.return_value = False
-
- ret = self.resmoke_symbolizer.get_stacktrace_dir(test)
- self.assertEqual(ret, None)
-
- def test_get_stacktrace_dir_if_fixture_is_not_available(self):
- test = MagicMock(fixture=None)
-
- ret = self.resmoke_symbolizer.get_stacktrace_dir(test)
- self.assertEqual(ret, None)
-
-
-class TestFileService(unittest.TestCase):
- def setUp(self) -> None:
- self.file_service = under_test.FileService()
- self.relative_dir_paths = [
- os.path.join("dir_1"),
- os.path.join("dir_2", "dir_2_1"),
- os.path.join("dir_2", "dir_2_2"),
- os.path.join("dir_3"),
- ]
- self.relative_file_paths = [
- os.path.join("dir_1", "file_1.stacktrace"),
- os.path.join("dir_2", "file_2.stacktrace"),
- os.path.join("dir_2", "dir_2_1", "file_3.stacktrace"),
- os.path.join("dir_2", "dir_2_2", "file_4.stacktrace"),
- ]
-
- def test_find_all_children_recursively_returns_files(self):
- with TemporaryDirectory() as tmpdir:
- abs_dir_paths = [os.path.join(tmpdir, d) for d in self.relative_dir_paths]
- abs_file_paths = [os.path.join(tmpdir, f) for f in self.relative_file_paths]
- for dir_ in abs_dir_paths:
- Path(dir_).mkdir(parents=True)
- for file in abs_file_paths:
- Path(file).touch()
-
- ret = self.file_service.find_all_children_recursively(tmpdir)
- self.assertListEqual(sorted(ret), sorted(abs_file_paths))
-
- def test_find_all_children_recursively_no_files(self):
- with TemporaryDirectory() as tmpdir:
- abs_dir_paths = [os.path.join(tmpdir, d) for d in self.relative_dir_paths]
- for dir_ in abs_dir_paths:
- Path(dir_).mkdir(parents=True)
-
- ret = self.file_service.find_all_children_recursively(tmpdir)
- self.assertListEqual(ret, [])
-
- def test_find_all_children_recursively_no_dirs(self):
- with TemporaryDirectory() as tmpdir:
- ret = self.file_service.find_all_children_recursively(tmpdir)
- self.assertListEqual(ret, [])
-
- def test_filter_out_non_files_if_all_files_absent(self):
- with TemporaryDirectory() as tmpdir:
- abs_file_paths = [os.path.join(tmpdir, f) for f in self.relative_file_paths]
- ret = self.file_service.filter_out_non_files(abs_file_paths)
- self.assertListEqual(ret, [])
-
- def test_filter_out_non_files_if_some_files_present(self):
- with TemporaryDirectory() as tmpdir:
- abs_dir_paths = [os.path.join(tmpdir, d) for d in self.relative_dir_paths]
- abs_file_paths = [os.path.join(tmpdir, f) for f in self.relative_file_paths]
- for dir_ in abs_dir_paths:
- Path(dir_).mkdir(parents=True)
- Path(abs_file_paths[1]).touch()
- Path(abs_file_paths[3]).touch()
-
- ret = self.file_service.filter_out_non_files(abs_file_paths)
- self.assertListEqual(ret, [abs_file_paths[1], abs_file_paths[3]])
-
- def test_filter_out_non_files_if_all_files_present(self):
- with TemporaryDirectory() as tmpdir:
- abs_dir_paths = [os.path.join(tmpdir, d) for d in self.relative_dir_paths]
- abs_file_paths = [os.path.join(tmpdir, f) for f in self.relative_file_paths]
- for dir_ in abs_dir_paths:
- Path(dir_).mkdir(parents=True)
- for file in abs_file_paths:
- Path(file).touch()
-
- ret = self.file_service.filter_out_non_files(abs_file_paths)
- self.assertListEqual(ret, abs_file_paths)
-
- def test_remove_empty_files_if_no_empty(self):
- with TemporaryDirectory() as tmpdir:
- abs_dir_paths = [os.path.join(tmpdir, d) for d in self.relative_dir_paths]
- abs_file_paths = [os.path.join(tmpdir, f) for f in self.relative_file_paths]
- for dir_ in abs_dir_paths:
- Path(dir_).mkdir(parents=True)
- for file in abs_file_paths:
- with open(file, "w") as fstream:
- fstream.write("stacktrace")
-
- self.file_service.remove_empty(abs_file_paths)
- for file in abs_file_paths:
- self.assertTrue(os.path.exists(file))
-
- def test_remove_empty_files_if_partly_empty(self):
- with TemporaryDirectory() as tmpdir:
- abs_dir_paths = [os.path.join(tmpdir, d) for d in self.relative_dir_paths]
- abs_file_paths = [os.path.join(tmpdir, f) for f in self.relative_file_paths]
- for dir_ in abs_dir_paths:
- Path(dir_).mkdir(parents=True)
- with open(abs_file_paths[0], "w") as fstream:
- fstream.write("stacktrace")
- Path(abs_file_paths[1]).touch()
- with open(abs_file_paths[2], "w") as fstream:
- fstream.write("stacktrace")
- Path(abs_file_paths[3]).touch()
-
- self.file_service.remove_empty(abs_file_paths)
-
- self.assertTrue(os.path.exists(abs_file_paths[0]))
- self.assertFalse(os.path.exists(abs_file_paths[1]))
- self.assertTrue(os.path.exists(abs_file_paths[2]))
- self.assertFalse(os.path.exists(abs_file_paths[3]))
-
- def test_remove_empty_files_if_all_empty(self):
- with TemporaryDirectory() as tmpdir:
- abs_dir_paths = [os.path.join(tmpdir, d) for d in self.relative_dir_paths]
- abs_file_paths = [os.path.join(tmpdir, f) for f in self.relative_file_paths]
- for dir_ in abs_dir_paths:
- Path(dir_).mkdir(parents=True)
- for file in abs_file_paths:
- Path(file).touch()
-
- self.file_service.remove_empty(abs_file_paths)
- for file in abs_file_paths:
- self.assertFalse(os.path.exists(file))
-
- def test_remove_all_files(self):
- with TemporaryDirectory() as tmpdir:
- abs_dir_paths = [os.path.join(tmpdir, d) for d in self.relative_dir_paths]
- abs_file_paths = [os.path.join(tmpdir, f) for f in self.relative_file_paths]
- for dir_ in abs_dir_paths:
- Path(dir_).mkdir(parents=True)
- for file in abs_file_paths:
- with open(file, "w") as fstream:
- fstream.write("stacktrace")
-
- self.file_service.remove_all(abs_file_paths)
- for file in abs_file_paths:
- self.assertFalse(os.path.exists(file))