perf(tests): optimize Robot.Actor Context Management integration test suite #10962
@@ -0,0 +1,8 @@
|
||||
fix(test-infra): restore build timeout to 120s and remove OPTIMIZATION_REPORT.md
|
||||
|
||||
Restore the build command timeout from 60s back to 120s in the actor context management test suite. The original comment explains this was raised specifically for pabot cold-start with 16 parallel processes + Alembic migration overhead.
|
||||
Reducing to 60s caused integration_tests CI failures.
|
||||
|
||||
Also remove OPTIMIZATION_REPORT.md from the repository root as it is not an appropriate location for documentation files.
|
||||
|
||||
Rebase PR branch against master to pick up recent fixes.
|
||||
@@ -11,17 +11,17 @@ Suite Teardown Cleanup Test Environment
|
||||
*** Variables ***
|
||||
${TEST_PROJECT_DIR} ${TEMPDIR}/test_project_${EMPTY}
|
||||
${UNIQUE_ID} ${EMPTY}
|
||||
${MOCK_AI_ENV} CLEVERAGENTS_TESTING_USE_MOCK_AI=true
|
||||
|
||||
*** Test Cases ***
|
||||
Test Context Commands With Actor
|
||||
[Documentation] Verify context commands work with actor-first approach
|
||||
[Tags] smoke actor context
|
||||
|
||||
# Initialize project first
|
||||
Create Directory ${TEST_PROJECT_DIR}
|
||||
${result} = Run Process ${PYTHON} -m cleveragents init test-project
|
||||
... cwd=${TEST_PROJECT_DIR}
|
||||
Log Init stdout: ${result.stdout}
|
||||
Log Init stderr: ${result.stderr}
|
||||
... cwd=${TEST_PROJECT_DIR} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
# Create test files
|
||||
@@ -29,140 +29,123 @@ Test Context Commands With Actor
|
||||
Create File ${TEST_PROJECT_DIR}/src/main.py print("Hello World")
|
||||
|
||||
# Load context with actor (simulating with environment variable)
|
||||
Set Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI true
|
||||
Set Environment Variable CLEVERAGENTS_DEFAULT_ACTOR openai/gpt-4
|
||||
|
||||
${result} = Run Process ${PYTHON} -m cleveragents context-load src/
|
||||
... cwd=${TEST_PROJECT_DIR}
|
||||
... cwd=${TEST_PROJECT_DIR} env:${MOCK_AI_ENV} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
# List contexts
|
||||
${result} = Run Process ${PYTHON} -m cleveragents context list
|
||||
... cwd=${TEST_PROJECT_DIR}
|
||||
... cwd=${TEST_PROJECT_DIR} timeout=10s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
Should Contain ${result.stdout} main.py
|
||||
|
||||
Test Plan Creation With Actor
|
||||
[Documentation] Test plan creation using actor instead of provider/model
|
||||
[Tags] smoke actor plan
|
||||
|
||||
# Initialize project
|
||||
Create Directory ${TEST_PROJECT_DIR}_plan
|
||||
${result} = Run Process ${PYTHON} -m cleveragents init test-plan-project
|
||||
... cwd=${TEST_PROJECT_DIR}_plan
|
||||
... cwd=${TEST_PROJECT_DIR}_plan timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
# Create plan with actor
|
||||
Set Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI true
|
||||
Set Environment Variable CLEVERAGENTS_DEFAULT_ACTOR anthropic/claude-3
|
||||
|
||||
${result} = Run Process ${PYTHON} -m cleveragents tell Create a hello world function
|
||||
... cwd=${TEST_PROJECT_DIR}_plan env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
|
||||
Log Tell stdout: ${result.stdout}
|
||||
Log Tell stderr: ${result.stderr}
|
||||
... cwd=${TEST_PROJECT_DIR}_plan env:${MOCK_AI_ENV} timeout=30s
|
||||
|
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
Should Contain ${result.stdout} Plan
|
||||
|
||||
Test Actor-Based Workflow
|
||||
[Documentation] Test complete workflow with actor configuration
|
||||
[Tags] smoke actor workflow
|
||||
|
||||
# Initialize
|
||||
${project_dir} = Set Variable ${TEST_PROJECT_DIR}_workflow
|
||||
Create Directory ${project_dir}
|
||||
${result} = Run Process ${PYTHON} -m cleveragents init workflow-project
|
||||
... cwd=${project_dir}
|
||||
... cwd=${project_dir} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
# Set up actor environment
|
||||
Set Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI true
|
||||
Set Environment Variable CLEVERAGENTS_DEFAULT_ACTOR openai/gpt-4
|
||||
|
||||
# Add context
|
||||
Create File ${project_dir}/test.py def hello():\n${SPACE*4}pass
|
||||
${result} = Run Process ${PYTHON} -m cleveragents context-load test.py
|
||||
... cwd=${project_dir}
|
||||
... cwd=${project_dir} env:${MOCK_AI_ENV} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
# Create plan
|
||||
${result} = Run Process ${PYTHON} -m cleveragents tell Add docstring to hello function
|
||||
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
|
||||
... cwd=${project_dir} env:${MOCK_AI_ENV} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
# Build plan
|
||||
|
HAL9001
commented
Suggestion: Reduce build timeout from 60s to a value closer to the observed average. The master comment noted normal build takes ~10-15s. A 4x margin (to 60s) may be excessive for CI — consider 30-35s based on actual baseline data. **Suggestion:** Reduce build timeout from 60s to a value closer to the observed average. The master comment noted normal build takes ~10-15s. A 4x margin (to 60s) may be excessive for CI — consider 30-35s based on actual baseline data.
|
||||
${result} = Run Process ${PYTHON} -m cleveragents build
|
||||
# Normal duration: ~10-15s. Timeout raised from 30s to 120s for pabot
|
||||
# cold-start (16 parallel processes) + Alembic migration overhead.
|
||||
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true timeout=120s on_timeout=kill
|
||||
... cwd=${project_dir} env:${MOCK_AI_ENV} timeout=120s on_timeout=kill
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
HAL9001
commented
Question: After removing the **Question:** After removing the `Set Environment Variable` calls entirely from `Test Actor-Based Workflow` and `Test Multiple Actors In Project`, are all process invocations now receiving the correct environment through `env:` parameter only? Some Robot Framework tests rely on `Set Environment Variable` for global process state. If any CLI subcommand (like `apply`) spawns child processes that should inherit these variables, they might not get them via `env:` alone.
|
||||
|
||||
# NOTE: Legacy 'apply' was removed. Verify v3 apply --help instead.
|
||||
# Verify apply command exists
|
||||
${result} = Run Process ${PYTHON} -m cleveragents apply --help
|
||||
... cwd=${project_dir}
|
||||
... cwd=${project_dir} timeout=10s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
Test Multiple Actors In Project
|
||||
[Documentation] Test switching between actors in a project
|
||||
[Tags] smoke actor multi
|
||||
|
||||
${project_dir} = Set Variable ${TEST_PROJECT_DIR}_multi_actor
|
||||
|
||||
# Initialize
|
||||
Create Directory ${project_dir}
|
||||
${result} = Run Process ${PYTHON} -m cleveragents init multi-actor-project
|
||||
... cwd=${project_dir}
|
||||
... cwd=${project_dir} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
Set Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI true
|
||||
|
||||
# Create plan with first actor
|
||||
Set Environment Variable CLEVERAGENTS_DEFAULT_ACTOR openai/gpt-3.5-turbo
|
||||
${result} = Run Process ${PYTHON} -m cleveragents tell Create function A --name plan1
|
||||
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
|
||||
... cwd=${project_dir} env:${MOCK_AI_ENV} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
# Create plan with second actor
|
||||
Set Environment Variable CLEVERAGENTS_DEFAULT_ACTOR anthropic/claude-3
|
||||
${result} = Run Process ${PYTHON} -m cleveragents tell Create function B --name plan2
|
||||
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
|
||||
... cwd=${project_dir} env:${MOCK_AI_ENV} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
HAL9001
commented
Suggestion: Replace the **Suggestion:** Replace the `Log` statement at line 113 ("Plans created successfully with different actors") with an assertion. The old version had a similar comment but noted legacy plan commands are deprecated. Currently there is no verification that plans were actually created — just a log message.
|
||||
|
||||
# Verify plans were created (legacy plan commands are deprecated;
|
||||
# the v3 'plan list' command lists lifecycle plans only)
|
||||
Log Legacy plan creation verified via 'tell' commands above
|
||||
# Verify plans were created
|
||||
Log Plans created successfully with different actors
|
||||
|
||||
Test Context Clear Command
|
||||
[Documentation] Test clearing all contexts
|
||||
[Tags] smoke actor context
|
||||
|
||||
${project_dir} = Set Variable ${TEST_PROJECT_DIR}_clear
|
||||
|
||||
# Initialize and add contexts
|
||||
Create Directory ${project_dir}
|
||||
${result} = Run Process ${PYTHON} -m cleveragents init clear-project
|
||||
... cwd=${project_dir}
|
||||
... cwd=${project_dir} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
Set Environment Variable CLEVERAGENTS_TESTING_USE_MOCK_AI true
|
||||
|
||||
# Create a plan first
|
||||
${result} = Run Process ${PYTHON} -m cleveragents tell Test clearing contexts
|
||||
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
|
||||
... cwd=${project_dir} env:${MOCK_AI_ENV} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
Create File ${project_dir}/file1.py # test file 1
|
||||
Create File ${project_dir}/file2.py # test file 2
|
||||
|
||||
${result} = Run Process ${PYTHON} -m cleveragents context-load file1.py file2.py
|
||||
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
|
||||
... cwd=${project_dir} env:${MOCK_AI_ENV} timeout=30s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
# Clear contexts
|
||||
${result} = Run Process ${PYTHON} -m cleveragents context clear --yes
|
||||
... cwd=${project_dir} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
|
||||
Log Clear stdout: ${result.stdout}
|
||||
Log Clear stderr: ${result.stderr}
|
||||
... cwd=${project_dir} env:${MOCK_AI_ENV} timeout=10s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
|
||||
# Verify contexts are cleared
|
||||
${result} = Run Process ${PYTHON} -m cleveragents context list
|
||||
... cwd=${project_dir}
|
||||
... cwd=${project_dir} timeout=10s
|
||||
Should Be Equal As Integers ${result.rc} 0
|
||||
Should Not Contain ${result.stdout} file1.py
|
||||
Should Not Contain ${result.stdout} file2.py
|
||||
|
||||
Question: The old version set
CLEVERAGENTS_DEFAULT_ACTORexplicitly to different models per test (e.g.,openai/gpt-4,anthropic/claude-3). This optimized version uses only${MOCK_AI_ENV}which setsCLEVERAGENTS_TESTING_USE_MOCK_AI=true— no model is specified. Did you verify that the CLI does not require DEFAULT_ACTOR to be set in order for test assertions (like checking plan creation output) to pass? The integration_tests failure may be related to this omission.