@ably-labs/locust 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Worker.d.ts +26 -0
- package/lib/Worker.js +37 -0
- package/package.json +1 -1
package/lib/Worker.d.ts
CHANGED
|
@@ -48,6 +48,10 @@ interface User {
|
|
|
48
48
|
* A function which is registered with a worker to initialise a User.
|
|
49
49
|
*/
|
|
50
50
|
declare type UserFn = () => User;
|
|
51
|
+
/**
|
|
52
|
+
* A function which is called when an event happens.
|
|
53
|
+
*/
|
|
54
|
+
declare type EventFn = (data: any) => void;
|
|
51
55
|
/**
|
|
52
56
|
* A Locust worker which connects to a Locust master ZeroMQ socket and spawns
|
|
53
57
|
* Locust users during an active load test.
|
|
@@ -105,6 +109,12 @@ export declare class Worker {
|
|
|
105
109
|
* discard outdated messages.
|
|
106
110
|
*/
|
|
107
111
|
lastReceivedSpawnTimestamp: number;
|
|
112
|
+
/**
|
|
113
|
+
* A set of functions which are called when events happen.
|
|
114
|
+
*/
|
|
115
|
+
callbacks: {
|
|
116
|
+
[key: string]: EventFn[];
|
|
117
|
+
};
|
|
108
118
|
constructor(opts: Options);
|
|
109
119
|
/**
|
|
110
120
|
* Register a function to initialise users of the given class name.
|
|
@@ -120,6 +130,18 @@ export declare class Worker {
|
|
|
120
130
|
*
|
|
121
131
|
*/
|
|
122
132
|
run(): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Register a callback to be called when an event happens.
|
|
135
|
+
*/
|
|
136
|
+
on(event: string, callback: (data: any) => void): void;
|
|
137
|
+
/**
|
|
138
|
+
* Register a callback to be called when a user starts.
|
|
139
|
+
*/
|
|
140
|
+
onUserStart(callback: EventFn): void;
|
|
141
|
+
/**
|
|
142
|
+
* Register a callback to be called when a user stops.
|
|
143
|
+
*/
|
|
144
|
+
onUserStop(callback: EventFn): void;
|
|
123
145
|
/**
|
|
124
146
|
* Send a protocol message to the Locust master.
|
|
125
147
|
*/
|
|
@@ -195,5 +217,9 @@ export declare class Worker {
|
|
|
195
217
|
};
|
|
196
218
|
user_count: number;
|
|
197
219
|
};
|
|
220
|
+
/**
|
|
221
|
+
* Invoke all callbacks for the given event with the given data.
|
|
222
|
+
*/
|
|
223
|
+
emit(event: string, data: any): void;
|
|
198
224
|
}
|
|
199
225
|
export {};
|
package/lib/Worker.js
CHANGED
|
@@ -97,6 +97,7 @@ var Worker = /** @class */ (function () {
|
|
|
97
97
|
],
|
|
98
98
|
});
|
|
99
99
|
this.lastReceivedSpawnTimestamp = 0;
|
|
100
|
+
this.callbacks = {};
|
|
100
101
|
}
|
|
101
102
|
/**
|
|
102
103
|
* Register a function to initialise users of the given class name.
|
|
@@ -173,6 +174,27 @@ var Worker = /** @class */ (function () {
|
|
|
173
174
|
});
|
|
174
175
|
});
|
|
175
176
|
};
|
|
177
|
+
/**
|
|
178
|
+
* Register a callback to be called when an event happens.
|
|
179
|
+
*/
|
|
180
|
+
Worker.prototype.on = function (event, callback) {
|
|
181
|
+
if (!this.callbacks[event]) {
|
|
182
|
+
this.callbacks[event] = [];
|
|
183
|
+
}
|
|
184
|
+
this.callbacks[event].push(callback);
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Register a callback to be called when a user starts.
|
|
188
|
+
*/
|
|
189
|
+
Worker.prototype.onUserStart = function (callback) {
|
|
190
|
+
this.on('user.start', callback);
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Register a callback to be called when a user stops.
|
|
194
|
+
*/
|
|
195
|
+
Worker.prototype.onUserStop = function (callback) {
|
|
196
|
+
this.on('user.stop', callback);
|
|
197
|
+
};
|
|
176
198
|
/**
|
|
177
199
|
* Send a protocol message to the Locust master.
|
|
178
200
|
*/
|
|
@@ -300,6 +322,7 @@ var Worker = /** @class */ (function () {
|
|
|
300
322
|
var user = userFn();
|
|
301
323
|
user.start();
|
|
302
324
|
this.users[userClass].push(user);
|
|
325
|
+
this.emit('user.start', { userClass: userClass });
|
|
303
326
|
}
|
|
304
327
|
catch (err) {
|
|
305
328
|
this.logException("Error initialising " + userClass + " user: " + err);
|
|
@@ -321,6 +344,7 @@ var Worker = /** @class */ (function () {
|
|
|
321
344
|
var user = this.users[userClass].pop();
|
|
322
345
|
if (user !== undefined) {
|
|
323
346
|
user.stop();
|
|
347
|
+
this.emit('user.stop', { userClass: userClass });
|
|
324
348
|
}
|
|
325
349
|
}
|
|
326
350
|
};
|
|
@@ -394,6 +418,19 @@ var Worker = /** @class */ (function () {
|
|
|
394
418
|
user_count: Object.values(this.users).reduce(function (sum, users) { return sum + users.length; }, 0),
|
|
395
419
|
};
|
|
396
420
|
};
|
|
421
|
+
/**
|
|
422
|
+
* Invoke all callbacks for the given event with the given data.
|
|
423
|
+
*/
|
|
424
|
+
Worker.prototype.emit = function (event, data) {
|
|
425
|
+
var callbacks = this.callbacks[event];
|
|
426
|
+
if (!callbacks) {
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {
|
|
430
|
+
var callback = callbacks_1[_i];
|
|
431
|
+
callback(data);
|
|
432
|
+
}
|
|
433
|
+
};
|
|
397
434
|
return Worker;
|
|
398
435
|
}());
|
|
399
436
|
exports.Worker = Worker;
|