# Copyright OpenSearch Contributors # SPDX-License-Identifier: Apache-2.0 # # The OpenSearch Contributors require contributions made to # this file be licensed under the Apache-2.0 license or a # compatible open source license. import logging import os import unittest from unittest.mock import patch from report_workflow.report_args import ReportArgs class TestReportArgs(unittest.TestCase): ARGS_PY = os.path.realpath( os.path.join( os.path.dirname(__file__), "..", "..", "src", "run_test_report.py" ) ) PATH = os.path.join( os.path.dirname(__file__), "data" ) TEST_MANIFEST_PATH = os.path.join( os.path.dirname(__file__), "data", "test_manifest.yml" ) TEST_MANIFEST_OPENSEARCH_DASHBOARDS_PATH = os.path.join( os.path.dirname(__file__), "data", "test-manifest-opensearch-dashboards.yml" ) @patch("argparse._sys.argv", [ARGS_PY, TEST_MANIFEST_PATH]) def test_opensearch_default_with_opensearch_test_manifest(self) -> None: report_args = ReportArgs() self.assertFalse(hasattr(report_args, "opensearch")) self.assertFalse(hasattr(report_args, "opensearch-dashboards")) self.assertIsNone(report_args.test_run_id) self.assertIsNone(report_args.components) self.assertIsNotNone(report_args.test_type) self.assertEqual(report_args.logging_level, logging.INFO) self.assertEqual(report_args.test_manifest_path, self.TEST_MANIFEST_PATH) @patch("argparse._sys.argv", [ARGS_PY, TEST_MANIFEST_PATH, "--component", "component1", "component2"]) def test_components(self) -> None: report_args = ReportArgs() self.assertEqual(report_args.components, ["component1", "component2"]) @patch("argparse._sys.argv", [ARGS_PY, TEST_MANIFEST_PATH, "--artifact-paths", "opensearch=" + TEST_MANIFEST_PATH]) def test_opensearch_file_with_opensearch_test_manifest(self) -> None: report_args = ReportArgs() self.assertEqual(report_args.artifact_paths.get("opensearch"), os.path.realpath(self.TEST_MANIFEST_PATH)) self.assertFalse(hasattr(report_args.artifact_paths, "opensearch-dashboards")) self.assertIsNone(report_args.test_run_id) self.assertIsNone(report_args.components) self.assertEqual(report_args.test_type, "integ-test") self.assertEqual(report_args.logging_level, logging.INFO) self.assertEqual(report_args.test_manifest_path, self.TEST_MANIFEST_PATH) @patch("argparse._sys.argv", [ARGS_PY, TEST_MANIFEST_PATH, "--artifact-paths", "opensearch=https://ci.opensearch.org/x/y", "--verbose"]) def test_opensearch_url_with_opensearch_test_manifest(self) -> None: report_args = ReportArgs() self.assertEqual(report_args.artifact_paths.get("opensearch"), "https://ci.opensearch.org/x/y") self.assertFalse(hasattr(report_args.artifact_paths, "opensearch-dashboards")) self.assertEqual(report_args.test_manifest_path, self.TEST_MANIFEST_PATH) self.assertIsNone(report_args.test_run_id) self.assertIsNone(report_args.components) self.assertEqual(report_args.test_type, "integ-test") self.assertEqual(report_args.logging_level, logging.DEBUG) @patch("argparse._sys.argv", [ARGS_PY, TEST_MANIFEST_OPENSEARCH_DASHBOARDS_PATH, "--artifact-paths", "opensearch-dashboards=" + TEST_MANIFEST_OPENSEARCH_DASHBOARDS_PATH]) def test_opensearch_dashboards_default_with_opensearch_dashboards_test_manifest(self) -> None: report_args = ReportArgs() self.assertFalse(hasattr(report_args.artifact_paths, "opensearch")) self.assertEqual(report_args.artifact_paths.get("opensearch-dashboards"), self.TEST_MANIFEST_OPENSEARCH_DASHBOARDS_PATH) self.assertIsNone(report_args.test_run_id) self.assertIsNone(report_args.components) self.assertEqual(report_args.test_type, "integ-test") self.assertEqual(report_args.logging_level, logging.INFO) self.assertEqual(report_args.test_manifest_path, self.TEST_MANIFEST_OPENSEARCH_DASHBOARDS_PATH) @patch("argparse._sys.argv", [ARGS_PY, TEST_MANIFEST_OPENSEARCH_DASHBOARDS_PATH, "--artifact-paths", "opensearch-dashboards=https://ci.opensearch.org/x/y", "opensearch=https://ci.opensearch.org/x/y/z"]) def test_opensearch_dashboards_url_with_opensearch_dashboards_test_manifest(self) -> None: report_args = ReportArgs() self.assertEqual(report_args.artifact_paths.get("opensearch-dashboards"), "https://ci.opensearch.org/x/y") self.assertEqual(report_args.artifact_paths.get("opensearch"), "https://ci.opensearch.org/x/y/z") self.assertIsNone(report_args.test_run_id) self.assertIsNone(report_args.components) self.assertEqual(report_args.test_type, "integ-test") self.assertEqual(report_args.logging_level, logging.INFO) self.assertEqual(report_args.test_manifest_path, self.TEST_MANIFEST_OPENSEARCH_DASHBOARDS_PATH) @patch("argparse._sys.argv", [ARGS_PY, TEST_MANIFEST_PATH, "--artifact-paths", "opensearch=https://ci.opensearch.org/x/y/z", "--test-run-id", "6"]) def test_run_id(self) -> None: report_args = ReportArgs() self.assertEqual(report_args.test_run_id, 6) self.assertEqual(report_args.test_manifest_path, self.TEST_MANIFEST_PATH) self.assertEqual(report_args.artifact_paths.get("opensearch"), "https://ci.opensearch.org/x/y/z") @patch( "argparse._sys.argv", [ARGS_PY, TEST_MANIFEST_PATH, "--artifact-paths", "opensearch-dashboards=https://ci.opensearch.org/x/y", "opensearch=https://ci.opensearch.org/x/y/z", "--base-path", "https://ci.opensearch.org/ci/dbc/integ-test/", "--test-run-id", "1234"]) def test_base_path(self) -> None: report_args = ReportArgs() self.assertEqual(report_args.base_path, "https://ci.opensearch.org/ci/dbc/integ-test/") self.assertEqual(report_args.test_manifest_path, self.TEST_MANIFEST_PATH) self.assertEqual(report_args.artifact_paths.get("opensearch-dashboards"), "https://ci.opensearch.org/x/y") self.assertEqual(report_args.artifact_paths.get("opensearch"), "https://ci.opensearch.org/x/y/z") self.assertEqual(report_args.test_type, "integ-test") self.assertEqual(report_args.test_run_id, 1234)