From 43be190fe629fde805dbd20665e9940e5f207b41 Mon Sep 17 00:00:00 2001 From: David Boreham Date: Wed, 14 Feb 2024 21:49:16 -0700 Subject: [PATCH] Test complete --- .../cerc-test-database-client/run.sh | 35 +++++++++++++++++-- tests/database/run-test.sh | 14 ++++---- 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/stack_orchestrator/data/container-build/cerc-test-database-client/run.sh b/stack_orchestrator/data/container-build/cerc-test-database-client/run.sh index 611a8968..b889d677 100755 --- a/stack_orchestrator/data/container-build/cerc-test-database-client/run.sh +++ b/stack_orchestrator/data/container-build/cerc-test-database-client/run.sh @@ -7,6 +7,32 @@ fi # TODO derive this from config database_url="postgresql://test-user:password@localhost:5432/test-db" psql_command="psql ${database_url}" +program_name="Database test client:" + +wait_for_database_up () { + for i in {1..50} + do + ${psql_command} -c "select 1;" + psql_succeeded=$? + if [[ ${psql_succeeded} == 0 ]]; then + # if ready, return + echo "${program_name} database up" + return + else + # if not ready, wait + echo "${program_name} waiting for database: ${i}" + sleep 5 + fi + done + # Timed out, error exit + echo "${program_name} waiting for database: FAILED" + exit 1 +} + +# Used to synchronize with the test runner +notify_test_complete () { + echo "${program_name} test complete" +} does_test_data_exist () { query_result=$(${psql_command} -t -c "select count(*) from test_table_1 where key_column = 'test_key_1';" | head -1 | tr -d ' ') @@ -27,16 +53,19 @@ wait_forever() { while :; do sleep 600; done } +wait_for_database_up + # Check if the test database content exists already if does_test_data_exist; then # If so, log saying so. Test harness will look for this log output - echo "Database test client: test data already exists" + echo "${program_name} test data already exists" else # Otherwise log saying the content was not present - echo "Database test client: test data does not exist" - echo "Database test client: creating test data" + echo "${program_name} test data does not exist" + echo "${program_name} creating test data" # then create it create_test_data fi +notify_test_complete wait_forever diff --git a/tests/database/run-test.sh b/tests/database/run-test.sh index 8fe4be2e..e6aca59c 100755 --- a/tests/database/run-test.sh +++ b/tests/database/run-test.sh @@ -36,13 +36,13 @@ wait_for_pods_started () { delete_cluster_exit } -wait_for_log_output () { +wait_for_test_complete () { for i in {1..50} do local log_output=$( $TEST_TARGET_SO deployment --dir $test_deployment_dir logs ) - if [[ ! -z "$log_output" ]]; then + if [[ "${log_output}" == *"Database test client: test complete"* ]]; then # if ready, return return else @@ -51,7 +51,7 @@ wait_for_log_output () { fi done # Timed out, error exit - echo "waiting for pods log content: FAILED" + echo "waiting for test complete: FAILED" delete_cluster_exit } @@ -98,12 +98,12 @@ echo "deploy create test: passed" $TEST_TARGET_SO deployment --dir $test_deployment_dir start wait_for_pods_started # Check logs command works -wait_for_log_output +wait_for_test_complete log_output_1=$( $TEST_TARGET_SO deployment --dir $test_deployment_dir logs ) if [[ "$log_output_1" == *"Database test client: test data does not exist"* ]]; then - echo "deployment logs test: passed" + echo "Create database content test: passed" else - echo "deployment logs test: FAILED" + echo "Create database content test: FAILED" delete_cluster_exit fi @@ -113,7 +113,7 @@ $TEST_TARGET_SO deployment --dir $test_deployment_dir stop sleep 20 $TEST_TARGET_SO deployment --dir $test_deployment_dir start wait_for_pods_started -wait_for_log_output +wait_for_test_complete log_output_2=$( $TEST_TARGET_SO deployment --dir $test_deployment_dir logs ) if [[ "$log_output_2" == *"Database test client: test data already exists"* ]]; then