



























@@ -31,104 +31,61 @@ function invokeRestartRequest(params: Record<string, unknown>) {
3131).then(() => respond);
3232}
333334+function mockScheduledRestart(preflight: { safe: boolean; summary: string }) {
35+requestSafeGatewayRestart.mockReturnValueOnce({
36+ok: true,
37+status: "scheduled",
38+preflight: { ...preflight, counts: {}, blockers: [] },
39+restart: {
40+ok: true,
41+pid: 0,
42+signal: "SIGUSR1",
43+delayMs: 0,
44+mode: "emit",
45+coalesced: false,
46+cooldownMsApplied: 0,
47+},
48+});
49+}
50+51+function expectRestartRequest(skipDeferral: boolean) {
52+expect(requestSafeGatewayRestart).toHaveBeenCalledWith({
53+reason: "operator",
54+delayMs: 0,
55+ skipDeferral,
56+});
57+}
58+3459describe("gateway.restart.request handler", () => {
3560it("defaults to skipDeferral: false when the param is absent", async () => {
36-requestSafeGatewayRestart.mockReturnValueOnce({
37-ok: true,
38-status: "scheduled",
39-preflight: { safe: true, counts: {}, blockers: [], summary: "safe to restart now" },
40-restart: {
41-ok: true,
42-pid: 0,
43-signal: "SIGUSR1",
44-delayMs: 0,
45-mode: "emit",
46-coalesced: false,
47-cooldownMsApplied: 0,
48-},
49-});
61+mockScheduledRestart({ safe: true, summary: "safe to restart now" });
50625163await invokeRestartRequest({ reason: "operator" });
526453-expect(requestSafeGatewayRestart).toHaveBeenCalledWith({
54-reason: "operator",
55-delayMs: 0,
56-skipDeferral: false,
57-});
65+expectRestartRequest(false);
5866});
59676068it("forwards skipDeferral: true only when params.skipDeferral === true", async () => {
61-requestSafeGatewayRestart.mockReturnValueOnce({
62-ok: true,
63-status: "scheduled",
64-preflight: { safe: false, counts: {}, blockers: [], summary: "" },
65-restart: {
66-ok: true,
67-pid: 0,
68-signal: "SIGUSR1",
69-delayMs: 0,
70-mode: "emit",
71-coalesced: false,
72-cooldownMsApplied: 0,
73-},
74-});
69+mockScheduledRestart({ safe: false, summary: "" });
75707671await invokeRestartRequest({ reason: "operator", skipDeferral: true });
777278-expect(requestSafeGatewayRestart).toHaveBeenCalledWith({
79-reason: "operator",
80-delayMs: 0,
81-skipDeferral: true,
82-});
73+expectRestartRequest(true);
8374});
84758576it("normalizes truthy non-boolean skipDeferral values to false", async () => {
86-requestSafeGatewayRestart.mockReturnValueOnce({
87-ok: true,
88-status: "scheduled",
89-preflight: { safe: true, counts: {}, blockers: [], summary: "safe to restart now" },
90-restart: {
91-ok: true,
92-pid: 0,
93-signal: "SIGUSR1",
94-delayMs: 0,
95-mode: "emit",
96-coalesced: false,
97-cooldownMsApplied: 0,
98-},
99-});
77+mockScheduledRestart({ safe: true, summary: "safe to restart now" });
1007810179await invokeRestartRequest({ reason: "operator", skipDeferral: "true" });
10280103-expect(requestSafeGatewayRestart).toHaveBeenCalledWith({
104-reason: "operator",
105-delayMs: 0,
106-skipDeferral: false,
107-});
81+expectRestartRequest(false);
10882});
1098311084it("forwards skipDeferral: false explicitly when the param is sent as false", async () => {
111-requestSafeGatewayRestart.mockReturnValueOnce({
112-ok: true,
113-status: "scheduled",
114-preflight: { safe: true, counts: {}, blockers: [], summary: "safe to restart now" },
115-restart: {
116-ok: true,
117-pid: 0,
118-signal: "SIGUSR1",
119-delayMs: 0,
120-mode: "emit",
121-coalesced: false,
122-cooldownMsApplied: 0,
123-},
124-});
85+mockScheduledRestart({ safe: true, summary: "safe to restart now" });
1258612687await invokeRestartRequest({ reason: "operator", skipDeferral: false });
12788128-expect(requestSafeGatewayRestart).toHaveBeenCalledWith({
129-reason: "operator",
130-delayMs: 0,
131-skipDeferral: false,
132-});
89+expectRestartRequest(false);
13390});
13491});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。