Extend self-serve hardware batch wait
This commit is contained in:
+1
-1
@@ -164,7 +164,7 @@ const extractPayload = (response: any): any => {
|
|||||||
|
|
||||||
const sleep = (ms: number): Promise<void> => new Promise((resolve) => setTimeout(resolve, ms));
|
const sleep = (ms: number): Promise<void> => new Promise((resolve) => setTimeout(resolve, ms));
|
||||||
const BATCH_POLL_INTERVAL_MS = 250;
|
const BATCH_POLL_INTERVAL_MS = 250;
|
||||||
const BATCH_POLL_ATTEMPTS = 40;
|
const BATCH_POLL_ATTEMPTS = 120;
|
||||||
const TERMINAL_BATCH_STATES = new Set(["COMPLETED", "FAILED", "PARTIAL", "UNKNOWN_OUTCOME"]);
|
const TERMINAL_BATCH_STATES = new Set(["COMPLETED", "FAILED", "PARTIAL", "UNKNOWN_OUTCOME"]);
|
||||||
const ACTIVE_BATCH_STORAGE_PREFIX = "truckwash.selfserve.hardwareBatch.";
|
const ACTIVE_BATCH_STORAGE_PREFIX = "truckwash.selfserve.hardwareBatch.";
|
||||||
const ACTIVE_BATCH_MAX_AGE_MS = 6 * 60 * 60 * 1000;
|
const ACTIVE_BATCH_MAX_AGE_MS = 6 * 60 * 60 * 1000;
|
||||||
|
|||||||
@@ -183,6 +183,47 @@ describe("self-serve machine connectivity store", () => {
|
|||||||
expect(connectivity.statuses.value.MACHINE?.on).toBe(true);
|
expect(connectivity.statuses.value.MACHINE?.on).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("waits long enough for slow edge batches to complete", async () => {
|
||||||
|
vi.useFakeTimers();
|
||||||
|
const laneId = 12;
|
||||||
|
let pollCount = 0;
|
||||||
|
|
||||||
|
mocks.request.mockImplementation(async (endpoint, method, payload) => {
|
||||||
|
if (endpoint === batchSetEndpoint && method === "POST") {
|
||||||
|
return {
|
||||||
|
data: {
|
||||||
|
data: buildBatch(
|
||||||
|
[buildBatchItem(laneId, relayKinds.MACHINE, { on: Boolean(payload?.commands?.[0]?.on) })],
|
||||||
|
"PENDING"
|
||||||
|
),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (endpoint === "/modules/self-serve/lane/hardware/batch/batch-test-id" && method === "GET") {
|
||||||
|
pollCount += 1;
|
||||||
|
return {
|
||||||
|
data: {
|
||||||
|
data:
|
||||||
|
pollCount < 45
|
||||||
|
? buildBatch([buildBatchItem(laneId, relayKinds.MACHINE, { on: true })], "PENDING")
|
||||||
|
: buildBatch([buildBatchItem(laneId, relayKinds.MACHINE, { on: true })]),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
throw new Error(`Unexpected endpoint: ${endpoint}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
const connectivity = useMachineConnectivity(laneId);
|
||||||
|
const togglePromise = connectivity.toggleRelay(relayKinds.MACHINE, true);
|
||||||
|
|
||||||
|
await vi.advanceTimersByTimeAsync(12_000);
|
||||||
|
await togglePromise;
|
||||||
|
|
||||||
|
expect(pollCount).toBeGreaterThan(40);
|
||||||
|
expect(connectivity.statuses.value.MACHINE?.on).toBe(true);
|
||||||
|
expect(connectivity.error.value).toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
it("runs force and command actions through shared connectivity helpers", async () => {
|
it("runs force and command actions through shared connectivity helpers", async () => {
|
||||||
const laneId = 15;
|
const laneId = 15;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user