fix: validate sandbox readiness before rein handoff
Some checks failed
ci / validate (push) Has been cancelled
Some checks failed
ci / validate (push) Has been cancelled
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a0726e-5232-73f2-aaca-2c05ceb62efb
This commit is contained in:
parent
31dd5aaca8
commit
c38ee08720
6 changed files with 92 additions and 29 deletions
|
|
@ -519,3 +519,37 @@ def test_old_result_records_have_unknown_outcomes():
|
|||
assert restored.hub_report_status == 'unknown'
|
||||
assert restored.evidence.session_cleanup == 'unknown'
|
||||
assert restored.evidence.sandbox_destroy == 'unknown'
|
||||
|
||||
|
||||
@pytest.mark.parametrize('state', [state for state in SandboxState if state != SandboxState.READY])
|
||||
def test_nonready_owner_handoff_never_starts_rein(state):
|
||||
manager = MagicMock()
|
||||
manager.create.return_value = _fake_status().model_copy(update={'state': state})
|
||||
rein = _FakeRein()
|
||||
result = run_execution(_request(), catalog=_catalog_with_readiness(), rein=rein, manager=manager)
|
||||
assert not result.ok
|
||||
assert result.evidence.failure_stage == 'sandbox_create'
|
||||
assert result.evidence.session_cleanup == 'not_attempted'
|
||||
assert result.evidence.sandbox_destroy == 'succeeded'
|
||||
assert rein.calls == []
|
||||
manager.execute.assert_not_called()
|
||||
manager.destroy.assert_called_once_with('sbx1')
|
||||
|
||||
|
||||
def test_reachability_preparation_failure_is_reported_and_destroyed():
|
||||
manager = MagicMock()
|
||||
reachability = MagicMock()
|
||||
reachability.model_dump.side_effect = RuntimeError('private owner detail')
|
||||
manager.create.return_value = _fake_status().model_copy(update={'reachability': reachability})
|
||||
rein = _FakeRein()
|
||||
with patch('glas_harness.gateway.hub.post_progress_event', return_value=True) as post:
|
||||
result = run_execution(_request(report_to_hub=True), catalog=_catalog_with_readiness(),
|
||||
rein=rein, manager=manager)
|
||||
assert not result.ok
|
||||
assert result.evidence.failure_stage == 'session_start'
|
||||
assert result.tool_error == 'private owner detail'
|
||||
assert result.evidence.session_cleanup == 'not_attempted'
|
||||
assert result.evidence.sandbox_destroy == 'succeeded'
|
||||
assert 'private owner detail' not in str(post.call_args)
|
||||
assert rein.calls == []
|
||||
manager.destroy.assert_called_once_with('sbx1')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue