c4f71e930d
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 21s
CI / quality (pull_request) Successful in 21s
CI / build (pull_request) Successful in 23s
CI / typecheck (pull_request) Successful in 39s
CI / security (pull_request) Successful in 50s
CI / integration_tests (pull_request) Successful in 4m4s
CI / unit_tests (pull_request) Successful in 9m15s
CI / docker (pull_request) Successful in 1m0s
CI / benchmark-regression (pull_request) Successful in 23m41s
CI / coverage (pull_request) Successful in 43m24s
CI / lint (push) Successful in 22s
CI / build (push) Successful in 24s
CI / quality (push) Successful in 27s
CI / typecheck (push) Successful in 44s
CI / benchmark-regression (push) Has been skipped
CI / security (push) Successful in 55s
CI / integration_tests (push) Successful in 4m16s
CI / benchmark-publish (push) Successful in 14m39s
CI / unit_tests (push) Successful in 24m24s
CI / docker (push) Successful in 1m1s
CI / coverage (push) Successful in 45m36s
Implement step-level progress persistence and plan resume with graceful shutdown handling. - Add ResumeCheckpoint, ResumeMetadata, ResumeEligibility, ResumeSummary domain models (resume.py) - Add PlanResumeService with validate_eligibility(), build_resume_summary(), resume_plan(dry_run), record_step_checkpoint(), record_shutdown() - Add last_completed_step and last_checkpoint_id fields to Plan model - Add 'plan resume' CLI command with --dry-run flag - Update plan lifecycle docs (ADR-006) with resume behavior section - Add Behave tests (24 scenarios in plan_resume.feature) - Add Robot Framework integration tests (10 tests) - Add ASV benchmarks for resume overhead Closes #328
82 lines
4.0 KiB
Plaintext
82 lines
4.0 KiB
Plaintext
*** Settings ***
|
|
Documentation Integration tests for plan resume functionality.
|
|
... Covers resume eligibility validation, checkpoint recording,
|
|
... dry-run preview, live resume, and graceful shutdown.
|
|
Resource ${CURDIR}/common.resource
|
|
Suite Setup Setup Test Environment
|
|
Suite Teardown Cleanup Test Environment
|
|
|
|
*** Variables ***
|
|
${HELPER_SCRIPT} robot/helper_plan_resume.py
|
|
|
|
*** Test Cases ***
|
|
Resume Eligibility For Errored Plan
|
|
[Documentation] Verify errored plans are eligible for resume
|
|
[Tags] resume eligibility critical
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} eligibility-errored cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} eligibility-errored-ok
|
|
|
|
Resume Eligibility Rejects Terminal Plans
|
|
[Documentation] Verify applied/cancelled/constrained plans cannot be resumed
|
|
[Tags] resume eligibility terminal
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} eligibility-terminal cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} eligibility-terminal-ok
|
|
|
|
Record Step Checkpoints
|
|
[Documentation] Verify step-level checkpoints are recorded correctly
|
|
[Tags] resume checkpoint
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} record-checkpoints cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} record-checkpoints-ok
|
|
|
|
Dry Run Resume Shows Resume Point
|
|
[Documentation] Verify dry-run shows resume summary without changing state
|
|
[Tags] resume dry-run
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} dry-run-resume cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} dry-run-resume-ok
|
|
|
|
Live Resume Resets Errored Plan
|
|
[Documentation] Verify live resume transitions errored plan to processing
|
|
[Tags] resume live critical
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} live-resume cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} live-resume-ok
|
|
|
|
Graceful Shutdown Recording
|
|
[Documentation] Verify graceful shutdown marks metadata as interrupted
|
|
[Tags] resume shutdown
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} graceful-shutdown cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} graceful-shutdown-ok
|
|
|
|
Resume Metadata Properties
|
|
[Documentation] Verify ResumeMetadata model computed properties
|
|
[Tags] resume model
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} metadata-properties cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} metadata-properties-ok
|
|
|
|
Resume Summary CLI Dictionary
|
|
[Documentation] Verify ResumeSummary.as_cli_dict() returns correct keys
|
|
[Tags] resume cli
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} summary-cli-dict cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} summary-cli-dict-ok
|
|
|
|
Resume Validation Errors
|
|
[Documentation] Verify proper error handling for invalid inputs
|
|
[Tags] resume errors
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} validation-errors cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} validation-errors-ok
|
|
|
|
Resume Checkpoint With Sandbox Ref
|
|
[Documentation] Verify checkpoint records sandbox reference correctly
|
|
[Tags] resume checkpoint sandbox
|
|
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} checkpoint-sandbox cwd=${WORKSPACE}
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} checkpoint-sandbox-ok
|