将 OpenSandbox 调度改为持久事件循环
This commit is contained in:
@@ -26,13 +26,9 @@ def test_sandbox_request_uses_pool_identity_and_one_time_token_url():
|
||||
request(), "gitea-vm-abcd", "http://scheduler/token/nonce"
|
||||
)
|
||||
assert document["pool"] == "ci-vm"
|
||||
assert document["entrypoint"] == [
|
||||
"/usr/local/libexec/gitea-opensandbox-runner"
|
||||
]
|
||||
assert document["entrypoint"] == ["/usr/local/libexec/gitea-opensandbox-runner"]
|
||||
assert document["env"]["GITEA_RUNNER_LABELS"] == "self-hosted:host,vm:host"
|
||||
assert document["env"]["GITEA_RUNNER_REGISTRATION_TOKEN_URL"].endswith(
|
||||
"/nonce"
|
||||
)
|
||||
assert document["env"]["GITEA_RUNNER_REGISTRATION_TOKEN_URL"].endswith("/nonce")
|
||||
assert document["env"]["CI_SPIFFE_ID"] == (
|
||||
"spiffe://ddupan.top/ci/panxiao81/example/publish-image-3e72cdc4a97e"
|
||||
)
|
||||
@@ -86,3 +82,20 @@ async def test_scheduler_rejects_duplicate_active_job():
|
||||
scheduler.active[42] = asyncio.Future()
|
||||
with pytest.raises(ValueError, match="already"):
|
||||
await scheduler.create(request())
|
||||
|
||||
|
||||
async def test_scheduler_deletes_sandbox_for_completed_runner():
|
||||
class RunningOpenSandbox(FakeOpenSandbox):
|
||||
async def get(self, sandbox_id):
|
||||
return {"status": {"state": "Running"}}
|
||||
|
||||
client = RunningOpenSandbox()
|
||||
scheduler = OpenSandboxScheduler(client, RegistrationTokens(b"secret"))
|
||||
await scheduler.create(request())
|
||||
runner_name = next(iter(scheduler.runners))
|
||||
|
||||
assert await scheduler.complete(runner_name) is True
|
||||
assert client.deleted == ["sandbox-1"]
|
||||
assert scheduler.active == {}
|
||||
assert scheduler.runners == {}
|
||||
assert await scheduler.complete(runner_name) is False
|
||||
|
||||
Reference in New Issue
Block a user