diff --git a/Makefile b/Makefile index ffe4100..b65d13e 100644 --- a/Makefile +++ b/Makefile @@ -104,4 +104,10 @@ run-connection-tests-with-docker: # run connection tests from local docker insta docker run -v ./.env:/.env carbon-dev --run_connection_tests run-connection-tests-with-ecs-stage: # use after the Data Warehouse password is changed every year to confirm that the new password works - aws ecs run-task --cluster carbon-ecs-stage --task-definition carbon-ecs-stage-people --launch-type="FARGATE" --region us-east-1 --network-configuration '{"awsvpcConfiguration": {"subnets": ["subnet-05df31ac28dd1a4b0","subnet-04cfa272d4f41dc8a"], "securityGroups": ["sg-0f11e2619db7da196"],"assignPublicIp": "DISABLED"}}' --overrides '{"containerOverrides": [ {"name": "carbon-ecs-stage", "command": ["--run_connection_tests"]}]}' + aws ecs run-task --cluster carbon-ecs-stage --task-definition carbon-ecs-stage-people --launch-type="FARGATE" --region us-east-1 --network-configuration '{"awsvpcConfiguration": {"subnets": ["subnet-05df31ac28dd1a4b0","subnet-04cfa272d4f41dc8a"], "securityGroups": ["sg-0f11e2619db7da196"],"assignPublicIp": "DISABLED"}}' --overrides '{"containerOverrides": [ {"name": "carbon-ecs-stage", "command": ["--run_connection_tests", "--ignore_sns_logging"]}]}' + +run-articles-feed-with-ecs-stage: # run 'articles' feed + aws ecs run-task --cluster carbon-ecs-stage --task-definition carbon-ecs-stage-articles --launch-type="FARGATE" --region us-east-1 --network-configuration '{"awsvpcConfiguration": {"subnets": ["subnet-05df31ac28dd1a4b0","subnet-04cfa272d4f41dc8a"], "securityGroups": ["sg-0f11e2619db7da196"],"assignPublicIp": "DISABLED"}}' --overrides '{"containerOverrides": [ {"name": "carbon-ecs-stage", "command": ["--ignore_sns_logging"]}]}' + +run-people-feed-with-ecs-stage: # run 'people' feed + aws ecs run-task --cluster carbon-ecs-stage --task-definition carbon-ecs-stage-people --launch-type="FARGATE" --region us-east-1 --network-configuration '{"awsvpcConfiguration": {"subnets": ["subnet-05df31ac28dd1a4b0","subnet-04cfa272d4f41dc8a"], "securityGroups": ["sg-0f11e2619db7da196"],"assignPublicIp": "DISABLED"}}' --overrides '{"containerOverrides": [ {"name": "carbon-ecs-stage", "command": ["--ignore_sns_logging"]}]}' \ No newline at end of file diff --git a/carbon/app.py b/carbon/app.py index 83e1af4..5879475 100644 --- a/carbon/app.py +++ b/carbon/app.py @@ -244,6 +244,7 @@ def run_connection_test(self) -> None: f"Failed to connect to the Symplectic Elements FTP server: {error}" ) logger.exception(error_message) + raise else: logger.info("Successfully connected to the Symplectic Elements FTP server") ftps.quit() diff --git a/carbon/database.py b/carbon/database.py index b36f8cf..49e45ad 100644 --- a/carbon/database.py +++ b/carbon/database.py @@ -114,6 +114,7 @@ def run_connection_test(self) -> None: except Exception as error: error_message = f"Failed to connect to the Data Warehouse: {error}" logger.exception(error_message) + raise else: dbapi_connection = connection.connection version = ( diff --git a/tests/test_cli.py b/tests/test_cli.py index d5a218e..6f521fd 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -188,11 +188,19 @@ def test_cli_connection_tests_success(caplog, functional_engine, runner): assert "Successfully connected to the Symplectic Elements FTP server" in caplog.text -def test_cli_connection_tests_fail( - caplog, ftp_server, monkeypatch, nonfunctional_engine, runner +def test_cli_database_connection_test_fails(caplog, nonfunctional_engine, runner): + with patch("carbon.cli.DatabaseEngine") as mocked_engine: + mocked_engine.return_value = nonfunctional_engine + result = runner.invoke(main, ["--run_connection_tests"]) + assert result.exit_code == 1 + + assert "Failed to connect to the Data Warehouse" in caplog.text + + +def test_cli_ftp_connection_test_fails( + caplog, ftp_server, functional_engine, monkeypatch, runner ): ftp_socket, _ = ftp_server - monkeypatch.setenv( "SYMPLECTIC_FTP_JSON", ( @@ -202,10 +210,10 @@ def test_cli_connection_tests_fail( '"SYMPLECTIC_FTP_PASS": "invalid_password"}' ), ) + with patch("carbon.cli.DatabaseEngine") as mocked_engine: - mocked_engine.return_value = nonfunctional_engine + mocked_engine.return_value = functional_engine result = runner.invoke(main, ["--run_connection_tests"]) - assert result.exit_code == 0 + assert result.exit_code == 1 - assert "Failed to connect to the Data Warehouse" in caplog.text assert "Failed to connect to the Symplectic Elements FTP server" in caplog.text