blob: 4c38a68caadf8383025da2628c5dbcb9ea9dd891 [file] [log] [blame]
/**
* @license
* Copyright 2022 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import '../../test/common-test-setup-karma';
import {waitUntil} from '../../test/test-utils';
import {grReportingMock} from '../gr-reporting/gr-reporting_mock';
import {MockHighlightServiceManual} from './highlight-service-mock';
suite('highlight-service tests', () => {
let service: MockHighlightServiceManual;
setup(() => {
service = new MockHighlightServiceManual(grReportingMock);
});
test('initial state', () => {
assert.equal(service.poolBusy.size, 3);
assert.equal(service.poolIdle.size, 0);
assert.equal(service.queueForResult.size, 0);
assert.equal(service.queueForWorker.length, 0);
});
test('initialized workers move to idle pool', () => {
service.sendToAll({});
assert.equal(service.countAllMessages(), 3);
assert.equal(service.poolBusy.size, 0);
assert.equal(service.poolIdle.size, 3);
});
test('highlight 1', async () => {
service.sendToAll({});
assert.equal(service.countAllMessages(), 3);
const p = service.highlight('asdf', 'qwer');
assert.equal(service.poolBusy.size, 1);
assert.equal(service.poolIdle.size, 2);
await waitUntil(() => service.queueForResult.size > 0);
assert.equal(service.queueForResult.size, 1);
assert.equal(service.queueForWorker.length, 0);
service.sendToAll({ranges: []});
assert.equal(service.countAllMessages(), 4);
const ranges = await p;
assert.equal(ranges.length, 0);
await waitUntil(() => service.queueForResult.size === 0);
assert.equal(service.poolBusy.size, 0);
assert.equal(service.poolIdle.size, 3);
assert.equal(service.queueForResult.size, 0);
assert.equal(service.queueForWorker.length, 0);
});
test('highlight 5', async () => {
service.sendToAll({});
assert.equal(service.countAllMessages(), 3);
const p1 = service.highlight('asdf1', 'qwer1');
const p2 = service.highlight('asdf2', 'qwer2');
const p3 = service.highlight('asdf3', 'qwer3');
const p4 = service.highlight('asdf4', 'qwer4');
const p5 = service.highlight('asdf5', 'qwer5');
assert.equal(service.poolBusy.size, 3);
assert.equal(service.poolIdle.size, 0);
await waitUntil(() => service.queueForResult.size > 0);
assert.equal(service.queueForResult.size, 3);
assert.equal(service.queueForWorker.length, 2);
service.sendToAll({ranges: []});
assert.equal(service.countAllMessages(), 6);
const ranges1 = await p1;
const ranges2 = await p2;
const ranges3 = await p3;
assert.equal(ranges1.length, 0);
assert.equal(ranges2.length, 0);
assert.equal(ranges3.length, 0);
await waitUntil(() => service.queueForResult.size === 2);
assert.equal(service.poolBusy.size, 2);
assert.equal(service.poolIdle.size, 1);
assert.equal(service.queueForResult.size, 2);
assert.equal(service.queueForWorker.length, 0);
service.sendToAll({ranges: []});
assert.equal(service.countAllMessages(), 8);
const ranges4 = await p4;
const ranges5 = await p5;
assert.equal(ranges4.length, 0);
assert.equal(ranges5.length, 0);
await waitUntil(() => service.queueForResult.size === 0);
assert.equal(service.poolBusy.size, 0);
assert.equal(service.poolIdle.size, 3);
assert.equal(service.queueForResult.size, 0);
assert.equal(service.queueForWorker.length, 0);
});
});