64 lines
2.3 KiB
TypeScript
64 lines
2.3 KiB
TypeScript
import { BasicCrawler } from '@crawlee/basic';
|
|
|
|
import { MemoryStorageEmulator } from '../../../test/shared/MemoryStorageEmulator';
|
|
|
|
describe('BasicCrawler#addRequests with big batch sizes', () => {
|
|
const localStorageEmulator = new MemoryStorageEmulator();
|
|
|
|
beforeEach(async () => {
|
|
await localStorageEmulator.init();
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await localStorageEmulator.destroy();
|
|
});
|
|
|
|
const requestTemplates = Array.from({ length: 2000 }, (_, i) => ({ url: `https://example.com/${i}` }));
|
|
|
|
test('given a chunk of 1000, it should add them and return a fast resolving promise for `waitForAllRequestsToBeAdded`', async () => {
|
|
const crawler = new BasicCrawler({
|
|
requestHandler(ctx) {
|
|
ctx.log.info(`Handled ${ctx.request.url}`);
|
|
},
|
|
});
|
|
|
|
const slice = requestTemplates.slice(0, 1000);
|
|
|
|
const result = await crawler.addRequests(slice);
|
|
expect(result.addedRequests).toHaveLength(1000);
|
|
|
|
const result2 = await result.waitForAllRequestsToBeAdded;
|
|
expect(result2).toHaveLength(0);
|
|
});
|
|
|
|
test('given a chunk of 2000, it should add them and return a promise for `waitForAllRequestsToBeAdded` that has 1000 more requests', async () => {
|
|
const crawler = new BasicCrawler({
|
|
requestHandler(ctx) {
|
|
ctx.log.info(`Handled ${ctx.request.url}`);
|
|
},
|
|
});
|
|
|
|
const slice = requestTemplates.slice();
|
|
|
|
const result = await crawler.addRequests(slice);
|
|
expect(result.addedRequests).toHaveLength(1000);
|
|
|
|
const result2 = await result.waitForAllRequestsToBeAdded;
|
|
expect(result2).toHaveLength(1000);
|
|
expect(result.addedRequests).not.toStrictEqual(result2);
|
|
});
|
|
|
|
test('given a chunk of 2000, and enabling the `waitForAllRequestsToBeAdded`, it should add all 2000 requests at once', async () => {
|
|
const crawler = new BasicCrawler({
|
|
requestHandler(ctx) {
|
|
ctx.log.info(`Handled ${ctx.request.url}`);
|
|
},
|
|
});
|
|
|
|
const slice = requestTemplates.slice();
|
|
|
|
const result = await crawler.addRequests(slice, { waitForAllRequestsToBeAdded: true });
|
|
expect(result.addedRequests).toHaveLength(2000);
|
|
});
|
|
});
|