Wait for gateway version during restart · openclaw/openclaw@b46ff08
ProspectOre
·
2026-04-28
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -572,6 +572,47 @@ describe("inspectGatewayRestart", () => {
|
572 | 572 | expect(sleep).toHaveBeenCalledTimes(185); |
573 | 573 | }); |
574 | 574 | |
| 575 | +it("keeps waiting when the expected gateway version is not available yet", async () => { |
| 576 | +const service = makeGatewayService({ status: "running", pid: 8000 }); |
| 577 | +inspectPortUsage |
| 578 | +.mockResolvedValueOnce({ |
| 579 | +port: 18789, |
| 580 | +status: "free", |
| 581 | +listeners: [], |
| 582 | +hints: [], |
| 583 | +}) |
| 584 | +.mockResolvedValueOnce({ |
| 585 | +port: 18789, |
| 586 | +status: "busy", |
| 587 | +listeners: [{ pid: 8000, commandLine: "openclaw-gateway" }], |
| 588 | +hints: [], |
| 589 | +}); |
| 590 | +probeGateway.mockResolvedValue({ |
| 591 | +ok: true, |
| 592 | +close: null, |
| 593 | +server: { version: "2026.4.26", connId: "new" }, |
| 594 | +}); |
| 595 | + |
| 596 | +const { waitForGatewayHealthyRestart } = await import("./restart-health.js"); |
| 597 | +const snapshot = await waitForGatewayHealthyRestart({ |
| 598 | + service, |
| 599 | +port: 18789, |
| 600 | +expectedVersion: "2026.4.26", |
| 601 | +attempts: 4, |
| 602 | +delayMs: 1_000, |
| 603 | +}); |
| 604 | + |
| 605 | +expect(snapshot).toMatchObject({ |
| 606 | +healthy: true, |
| 607 | +gatewayVersion: "2026.4.26", |
| 608 | +expectedVersion: "2026.4.26", |
| 609 | +waitOutcome: "healthy", |
| 610 | +elapsedMs: 1_000, |
| 611 | +}); |
| 612 | +expect(snapshot.versionMismatch).toBeUndefined(); |
| 613 | +expect(sleep).toHaveBeenCalledTimes(1); |
| 614 | +}); |
| 615 | + |
575 | 616 | it("annotates timeout waits when the health loop exhausts all attempts", async () => { |
576 | 617 | const service = makeGatewayService({ status: "running", pid: 8000 }); |
577 | 618 | inspectPortUsage.mockResolvedValue({ |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。