Skip to content

Commit

Permalink
Add comprehensive tests for integ test suites opensearch
Browse files Browse the repository at this point in the history
Signed-off-by: Zelin Hao <zelinhao@amazon.com>
  • Loading branch information
zelinh committed Feb 9, 2024
1 parent 33ccaba commit 7551b3b
Showing 1 changed file with 64 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,10 @@ def setUp(self) -> None:
self.work_dir = Path("test_dir")

@patch("os.path.exists", return_value=True)
@patch("test_workflow.integ_test.integ_test_suite_opensearch.IntegTestSuiteOpenSearch.multi_execute_integtest_sh")
@patch("test_workflow.integ_test.integ_test_suite_opensearch.Topology")
@patch("test_workflow.test_recorder.test_recorder.TestRecorder")
def test_execute_with_multiple_test_configs(self, mock_test_recorder: Mock, mock_topology: Mock, *mock: Any) -> None:
def test_execute_with_multiple_test_configs(self, mock_test_recorder: Mock, mock_topology: Mock, mock_multi_execute_integtest_sh: Mock, *mock: Any) -> None:
test_config, component = self.__get_test_config_and_bundle_component("job-scheduler")
dependency_installer = MagicMock()
integ_test_suite = IntegTestSuiteOpenSearch(
Expand All @@ -50,8 +51,6 @@ def test_execute_with_multiple_test_configs(self, mock_test_recorder: Mock, mock
mock_test_recorder
)
mock_topology.create().__enter__.return_value = [{"cluster_name": "cluster1", "data_nodes": [{"endpoint": "localhost", "port": 9200, "transport": 9300}], "cluster_manager_nodes": []}]
mock_multi_execute_integtest_sh = MagicMock()
IntegTestSuiteOpenSearch.multi_execute_integtest_sh = mock_multi_execute_integtest_sh # type: ignore
mock_multi_execute_integtest_sh.return_value = "success"

test_results = integ_test_suite.execute_tests()
Expand All @@ -63,9 +62,10 @@ def test_execute_with_multiple_test_configs(self, mock_test_recorder: Mock, mock
call([{"cluster_name": "cluster1", "data_nodes": [{"endpoint": "localhost", "port": 9200, "transport": 9300}], "cluster_manager_nodes": []}], False, "without-security")
])

@patch("test_workflow.integ_test.integ_test_suite_opensearch.IntegTestSuiteOpenSearch.multi_execute_integtest_sh")
@patch("test_workflow.integ_test.integ_test_suite_opensearch.Topology")
@patch("test_workflow.test_recorder.test_recorder.TestRecorder")
def test_execute_with_build_dependencies(self, mock_test_recorder: Mock, mock_topology: Mock, *mock: Any) -> None:
def test_execute_with_build_dependencies(self, mock_test_recorder: Mock, mock_topology: Mock, mock_multi_execute_integtest_sh: Mock, *mock: Any) -> None:
dependency_installer = MagicMock()
test_config, component = self.__get_test_config_and_bundle_component("index-management")
integ_test_suite = IntegTestSuiteOpenSearch(
Expand All @@ -80,8 +80,6 @@ def test_execute_with_build_dependencies(self, mock_test_recorder: Mock, mock_to

mock_topology.create().__enter__.return_value = [{"cluster_name": "cluster1", "data_nodes": [{"endpoint": "localhost", "port": 9200, "transport": 9300}], "cluster_manager_nodes": []}]

mock_multi_execute_integtest_sh = MagicMock()
IntegTestSuiteOpenSearch.multi_execute_integtest_sh = mock_multi_execute_integtest_sh # type: ignore
mock_multi_execute_integtest_sh.return_value = "success"

integ_test_suite.execute_tests()
Expand All @@ -93,6 +91,7 @@ def test_execute_with_build_dependencies(self, mock_test_recorder: Mock, mock_to
[{"cluster_name": "cluster1", "data_nodes": [{"endpoint": "localhost", "port": 9200, "transport": 9300}], "cluster_manager_nodes": []}], False, "without-security")]
)

@patch("test_workflow.integ_test.integ_test_suite_opensearch.IntegTestSuiteOpenSearch.multi_execute_integtest_sh")
@patch("test_workflow.test_recorder.test_recorder.TestRecorder")
@patch("test_workflow.integ_test.integ_test_suite_opensearch.execute")
def test_execute_without_build_dependencies(self, mock_execute: Mock, *mock: Any) -> None:
Expand Down Expand Up @@ -160,9 +159,10 @@ def __get_test_config_and_bundle_component(self, component_name: str) -> Tuple[T

@patch("os.path.exists", return_value=True)
@patch.object(ScriptFinder, "find_integ_test_script")
@patch("test_workflow.integ_test.integ_test_suite_opensearch.IntegTestSuiteOpenSearch.multi_execute_integtest_sh")
@patch("test_workflow.integ_test.integ_test_suite_opensearch.Topology")
@patch("test_workflow.test_recorder.test_recorder.TestRecorder")
def test_execute_with_working_directory(self, mock_test_recorder: Mock, mock_topology: Mock, mock_script_finder: Mock, *mock: Any) -> None:
def test_execute_with_working_directory(self, mock_test_recorder: Mock, mock_topology: Mock, mock_multi_execute_integtest_sh: Mock, mock_script_finder: Mock, *mock: Any) -> None:
test_config, component = self.__get_test_config_and_bundle_component("dashboards-reports")
dependency_installer = MagicMock()
integ_test_suite = IntegTestSuiteOpenSearch(
Expand All @@ -178,8 +178,6 @@ def test_execute_with_working_directory(self, mock_test_recorder: Mock, mock_top
mock_topology.create().__enter__.return_value = [{"cluster_name": "cluster1", "data_nodes": [{"endpoint": "localhost", "port": 9200, "transport": 9300}], "cluster_manager_nodes": []}]
mock_script_finder.return_value = "integtest.sh"

mock_multi_execute_integtest_sh = MagicMock()
IntegTestSuiteOpenSearch.multi_execute_integtest_sh = mock_multi_execute_integtest_sh # type: ignore
mock_multi_execute_integtest_sh.return_value = "success"

integ_test_suite.execute_tests() # type: ignore
Expand All @@ -189,3 +187,60 @@ def test_execute_with_working_directory(self, mock_test_recorder: Mock, mock_top
True,
"with-security"
)

@patch("os.path.exists")
@patch("os.makedirs")
@patch("test_workflow.test_recorder.test_recorder.TestRecorder")
@patch("test_workflow.integ_test.integ_test_suite_opensearch.TestResultData")
@patch("test_workflow.integ_test.integ_test_suite_opensearch.GitRepository.__checkout__")
@patch("test_workflow.integ_test.integ_test_suite_opensearch.execute", return_value=True)
def test_multi_execute_integtest_sh(self, mock_execute: Mock, mock_git: Mock, mock_test_result_data: Mock,
mock_test_recorder: Mock, mock_makedirs: Mock, mock_path_exists: Mock, *mock: Any) -> None:
mock_find = MagicMock()
mock_find.return_value = "./integtest.sh"

ScriptFinder.find_integ_test_script = mock_find # type: ignore

mock_execute.return_value = ("test_status", "test_stdout", "")

mock_test_result_data_object = MagicMock()
mock_test_result_data.return_value = mock_test_result_data_object
mock_path_exists.return_value = True

test_config, component = self.__get_test_config_and_bundle_component("job-scheduler")
dependency_installer = MagicMock()
integ_test_suite = IntegTestSuiteOpenSearch(
dependency_installer,
component,
test_config,
self.bundle_manifest,
self.build_manifest,
self.work_dir,
mock_test_recorder
)

self.assertEqual(integ_test_suite.repo.url, "https://github.com/opensearch-project/job-scheduler.git")
self.assertEqual(integ_test_suite.repo.ref, "4504dabfc67dd5628c1451e91e9a1c3c4ca71525")
integ_test_suite.repo.dir = "dir"

# call the test target
mock_endpoint = MagicMock()
status = integ_test_suite.multi_execute_integtest_sh([mock_endpoint], True, "with-security")

mock_find.assert_called()
self.assertEqual(status, "test_status")
mock_execute.assert_called()

mock_test_result_data.assert_called_once_with(
"job-scheduler",
"with-security",
"test_status",
"test_stdout",
"",
{
"opensearch-integ-test": "dir/build/reports/tests/integTest"
}
)

assert(mock_test_result_data.return_value in integ_test_suite.result_data)
self.assertEqual(integ_test_suite.additional_cluster_config, None)

0 comments on commit 7551b3b

Please sign in to comment.