Files
2026-07-13 13:23:39 +08:00

46 lines
1.7 KiB
JavaScript

import { initialize, getActorTestDir, pushActor, startActorOnPlatform, expect } from '../tools.mjs';
import { Actor } from 'apify';
import { log } from 'crawlee';
import { setTimeout } from 'node:timers/promises';
if (process.env.STORAGE_IMPLEMENTATION === 'PLATFORM') {
const testActorDirname = getActorTestDir(import.meta.url);
await initialize(testActorDirname);
const client = Actor.newClient();
const actorId = await pushActor(client, testActorDirname);
log.info(`Actor build (ID ${actorId})`);
const { id: queueId } = await client.requestQueues().getOrCreate();
const limit = 1000;
const input = JSON.stringify({ limit, queueId });
const runIds = await Promise.all([
startActorOnPlatform(client, actorId, input),
startActorOnPlatform(client, actorId, input),
startActorOnPlatform(client, actorId, input),
startActorOnPlatform(client, actorId, input),
]);
log.info(`Started runs (IDs ${JSON.stringify(runIds)})`);
const stats = await Promise.all(
runIds.map(async (runId) => {
await client.run(runId).waitForFinish();
await setTimeout(6000);
return client.run(runId).get();
}),
);
log.info('Runs finished');
const requestQueue = await client.requestQueue(queueId).get();
await expect(requestQueue.pendingRequestCount === 0, 'No pending requests');
await expect(requestQueue.handledRequestCount === 1000, 'All requests are handled');
const firstActorFinish = Math.min(...stats.map((run) => run.finishedAt.valueOf()));
const lastActorFinish = Math.max(...stats.map((run) => run.finishedAt.valueOf()));
await expect(lastActorFinish - firstActorFinish < 60 * 1000, 'Actors finished at similar times');
}