Skip to content

Commit 3be3b53

Browse files
authored
Issue 1119 generator (#220)
* add handling of generator fixes idrinth-api-bench/issues#1119 * add handling of generator fixes idrinth-api-bench/issues#1119
1 parent d3c473e commit 3be3b53

File tree

4 files changed

+24
-24
lines changed

4 files changed

+24
-24
lines changed

integration/executor-job.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
import mock from 'mock-fs';
2-
import executor from '../src/executor';
3-
import Thread from '../src/worker/thread';
2+
import executor from '../src/executor.js';
3+
import Thread from '../src/worker/thread.js';
44
import {
55
expect,
66
} from 'chai';
77
import 'mocha';
8-
import NullLogger from '../src/logger/null-logger';
9-
import Result from '../src/messaging/result';
10-
import FinishedSet from '../src/messaging/finished-set';
11-
import Task from '../src/routes/task';
12-
import ValidationResult from '../src/messaging/validation-result';
8+
import NullLogger from '../src/logger/null-logger.js';
9+
import Result from '../src/messaging/result.js';
10+
import FinishedSet from '../src/messaging/finished-set.js';
11+
import Task from '../src/routes/task.js';
12+
import ValidationResult from '../src/messaging/validation-result.js';
1313
import {
1414
realpathSync,
1515
} from 'fs';
16-
import Job from '../src/routes/job';
17-
import NoopStorage from '../src/storage/noop-storage';
16+
import Job from '../src/routes/job.js';
17+
import NoopStorage from '../src/storage/noop-storage.js';
1818
import makeConsoleMock from 'consolemock';
19-
import NoProgress from '../src/progress/no-progress';
20-
import Counter from '../src/helper/counter';
19+
import NoProgress from '../src/progress/no-progress.js';
20+
import Counter from '../src/helper/counter.js';
2121
import {
2222
TEMP_DIR,
23-
} from '../src/constants';
24-
import prepareTempDir from './prepare-temp-dir';
23+
} from '../src/constants.js';
24+
import prepareTempDir from './prepare-temp-dir.js';
2525

2626
const NONE = 0;
2727
const SETUP_TIMEOUT = 10000;
@@ -56,6 +56,8 @@ class FakeResult implements Result, ValidationResult, FinishedSet {
5656

5757
public stdv100: number;
5858

59+
public maxDuration: number;
60+
5961
public response = {
6062
headers: {},
6163
cookies: {},
@@ -66,7 +68,7 @@ class FakeResult implements Result, ValidationResult, FinishedSet {
6668

6769
public validators = [];
6870

69-
public durations;
71+
public durations: number[];
7072

7173
public msgs = {};
7274

src/executor.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import Thread from './worker/thread.js';
2020
import {
2121
EMPTY,
2222
} from './constants.js';
23-
import Task from './routes/task.js';
2423
import buildTaskList from './routes/build-task-list.js';
2524

2625
/* eslint max-params:0 */
@@ -48,7 +47,7 @@ const executor = async(
4847
logger.debug(
4948
language('initialization', `${ repetitions }`, `${ threads }`,),
5049
);
51-
const internalTasks: Task[] = buildTaskList(job.main, blacklist, total,);
50+
const internalTasks = buildTaskList(job.main, blacklist, total,);
5251
progress.start(job, repetitions, threads,);
5352
const calculator = buildWorker(
5453
Worker,
@@ -97,7 +96,7 @@ const executor = async(
9796
),
9897
);
9998
Counter.increment('active',);
100-
worker.postMessage(internalTasks.shift(),);
99+
worker.postMessage(internalTasks.next().value,);
101100
}
102101
};
103102
const before = buildWorker(

src/messaging/worker.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ const onWorker = (
5858
results: {[z: string]: ResultSet},
5959
total: number,
6060
calculator: Thread,
61-
internalTasks: Task[],
61+
internalTasks: Generator<Task>,
6262
worker: Thread,
6363
after: Thread,
6464
job: Job,
@@ -69,9 +69,10 @@ const onWorker = (
6969
results[data.id].add(data,);
7070
progress.increment();
7171
startAnalyzing(data.id, total, logger, calculator, results,);
72-
if (internalTasks.length > EMPTY) {
72+
let next: Task|undefined = internalTasks.next().value;
73+
if (next) {
7374
logger.debug(language('next_request',),);
74-
worker.postMessage(internalTasks.shift(),);
75+
worker.postMessage(next,);
7576
return;
7677
}
7778
Counter.decrement('active',);

src/routes/build-task-list.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import Task from './task.js';
22

3-
export default (tasks: Task[], blacklist: string[], total: number,) => {
4-
const internalTasks = [];
3+
export default function *(tasks: Task[], blacklist: string[], total: number,) {
54
for (const task of tasks) {
65
if (task.pre) {
76
task.pre = task.pre.filter((entry,) => ! blacklist.includes(entry,),);
@@ -10,8 +9,7 @@ export default (tasks: Task[], blacklist: string[], total: number,) => {
109
task.post = task.post.filter((entry,) => ! blacklist.includes(entry,),);
1110
}
1211
for (let i = 0; i < total; i ++) {
13-
internalTasks.push(task,);
12+
yield task;
1413
}
1514
}
16-
return internalTasks;
1715
};

0 commit comments

Comments
 (0)