From 380b6a31454c5b1ad6e61d3387b073b375e1895e Mon Sep 17 00:00:00 2001 From: Eric Rakestraw Date: Mon, 28 Sep 2026 14:13:29 +0000 Subject: [PATCH] Test optional Notarius transport retries --- tests/integration | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/tests/integration b/tests/integration index 22cdc27..245762d 100755 --- a/tests/integration +++ b/tests/integration @@ -41,6 +41,18 @@ validate_config() { "$binary_path" config validate --config "$config_path" } +require_retry_zero() { + "$workspace_venv/bin/python" - "$1" <<'PY' +import sys + +import yaml + +with open(sys.argv[1], encoding="utf-8") as stream: + config = yaml.safe_load(stream) +assert config["promptkit"]["transient_retries"] == 0 +PY +} + cd "$repository_root" "$workspace_venv/bin/ansible-galaxy" collection install \ -r collections/requirements.yml \ @@ -49,13 +61,34 @@ cd "$repository_root" "$workspace_venv/bin/ansible-lint" "$converge" "$prepare_import" baseline_log="$test_tmp/baseline.log" -run_converge "$baseline_log" +run_converge "$baseline_log" -e '{"notarius_promptkit_transient_retries": null}' "$binary_path" --version validate_config +"$workspace_venv/bin/python" - "$config_path" <<'PY' +import sys + +import yaml + +with open(sys.argv[1], encoding="utf-8") as stream: + config = yaml.safe_load(stream) +assert "transient_retries" not in config.get("promptkit", {}) +PY baseline_repeat_log="$test_tmp/baseline-repeat.log" -run_converge "$baseline_repeat_log" +run_converge "$baseline_repeat_log" -e '{"notarius_promptkit_transient_retries": null}' require_clean_recap "$baseline_repeat_log" +retry_config='{"notarius_promptkit_transient_retries":0}' +retry_log="$test_tmp/retry.log" +run_converge "$retry_log" -e "$retry_config" +validate_config +require_retry_zero "$config_path" +retry_effective_config="$test_tmp/retry-effective-config.yml" +"$binary_path" config effective --config "$config_path" > "$retry_effective_config" +require_retry_zero "$retry_effective_config" +retry_repeat_log="$test_tmp/retry-repeat.log" +run_converge "$retry_repeat_log" -e "$retry_config" +require_clean_recap "$retry_repeat_log" + selected_release_log="$test_tmp/selected-release.log" run_converge "$selected_release_log" -e notarius_version=v0.7.0 [[ "$("$binary_path" --version)" == 'notarius v0.7.0' ]] @@ -85,7 +118,7 @@ require_clean_recap "$recovery_repeat_log" pipeline_group_one='{"dnd-session":{"llm_profile":"dnd-extraction","input":{"module":"seriatim"},"artifacts":{"spells":{"extract":{"module":"dnd/spells"},"normalize":{"module":"dnd/spells"}}}}}' pipeline_group_two='{"dnd-archive":{"llm_profile":"dnd-extraction","input":{"module":"seriatim"},"artifacts":{"spells":{"extract":{"module":"dnd/spells"},"normalize":{"module":"dnd/spells"}}}}}' -representative_config="{\"notarius_pipeline_group_one\":$pipeline_group_one,\"notarius_pipeline_group_two\":$pipeline_group_two,\"notarius_configkit_imports\":[{\"path\":\"test-pipelines.yml\"}],\"notarius_promptkit_local_backend_endpoint\":\"http://localhost:8000/v1\",\"notarius_promptkit_local_backend_concurrency_limit\":0,\"notarius_cache_checkpoints_enabled\":false,\"notarius_cache_chunk_plans_mode\":\"bypass\",\"notarius_cache_chunk_plans_directory\":\"/tmp/notarius-cache/chunk-plans\",\"notarius_cache_checkpoints_directory\":\"/tmp/notarius-cache/checkpoints\",\"notarius_output_directory\":\"/tmp/notarius-output\",\"notarius_promptkit_profile_dir\":null,\"notarius_promptkit_profile_file\":null,\"notarius_debug_directory\":null}" +representative_config="{\"notarius_pipeline_group_one\":$pipeline_group_one,\"notarius_pipeline_group_two\":$pipeline_group_two,\"notarius_configkit_imports\":[{\"path\":\"test-pipelines.yml\"}],\"notarius_promptkit_transient_retries\":0,\"notarius_promptkit_local_backend_endpoint\":\"http://localhost:8000/v1\",\"notarius_promptkit_local_backend_concurrency_limit\":0,\"notarius_cache_checkpoints_enabled\":false,\"notarius_cache_chunk_plans_mode\":\"bypass\",\"notarius_cache_chunk_plans_directory\":\"/tmp/notarius-cache/chunk-plans\",\"notarius_cache_checkpoints_directory\":\"/tmp/notarius-cache/checkpoints\",\"notarius_output_directory\":\"/tmp/notarius-output\",\"notarius_promptkit_profile_dir\":null,\"notarius_promptkit_profile_file\":null,\"notarius_debug_directory\":null}" "$ansible_playbook" -i "$inventory" "$prepare_import" -e "$representative_config" representative_log="$test_tmp/representative.log" run_converge "$representative_log" -e "$representative_config" @@ -97,6 +130,8 @@ grep -Fq 'dnd-archive:' "$effective_config" grep -Fq 'mode: bypass' "$effective_config" grep -Fq 'enabled: false' "$effective_config" grep -Fq 'directory: /tmp/notarius-cache/chunk-plans' "$effective_config" +require_retry_zero "$config_path" +require_retry_zero "$effective_config" representative_repeat_log="$test_tmp/representative-repeat.log" run_converge "$representative_repeat_log" -e "$representative_config" require_clean_recap "$representative_repeat_log"