Skip to content

Commit 313a538

Browse files
committed
[eslint] enable eslint check on tests
1 parent 0294518 commit 313a538

File tree

2 files changed

+148
-1
lines changed

2 files changed

+148
-1
lines changed

Gruntfile.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ module.exports = function(grunt) {
246246
grunt.loadNpmTasks('grunt-eslint');
247247
grunt.loadNpmTasks('grunt-mocha-test');
248248

249-
grunt.registerTask('default', [/*'eslint', */'mochaTest']);
249+
grunt.registerTask('default', ['eslint', 'mochaTest']);
250250

251251
grunt.registerTask('dist', ['concat', 'uglify', 'cssmin']);
252252

api/parts/jobs/resource.js

+147
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ function random() {
4343
* Base class for both: Resource & ResourceFaçade which implements interface for talking to Job / JobFaçade & Manager.
4444
*/
4545
class ResourceInterface extends EventEmitter {
46+
/**
47+
* Constructor
48+
* @param {string} id - id of resource
49+
* @param {string} name - name of the resource
50+
**/
4651
constructor(id, name) {
4752
super();
4853
this._online = false;
@@ -52,38 +57,72 @@ class ResourceInterface extends EventEmitter {
5257
this._name = name;
5358
}
5459

60+
/**
61+
* Check if resource is busy
62+
* @returns {boolean} if resource is busy
63+
**/
5564
get isBusy() {
5665
return !!this._job;
5766
}
5867

68+
/**
69+
* Check if resource is open
70+
* @returns {boolean} if resource is open
71+
**/
5972
get isOpen() {
6073
return !!this._open;
6174
}
6275

76+
/**
77+
* Get id of resource
78+
* @returns {string} resource id
79+
**/
6380
get id() {
6481
return this._id;
6582
}
6683

84+
/**
85+
* Get name of resource
86+
* @returns {string} resource name
87+
**/
6788
get name() {
6889
return this._name;
6990
}
7091

92+
/**
93+
* Get resource job
94+
* @returns {Job} resource job
95+
**/
7196
get job() {
7297
return this._job;
7398
}
7499

100+
/**
101+
* Set resource job
102+
* @param {Job} job - resource job
103+
**/
75104
set job(job) {
76105
this._job = job;
77106
}
78107

108+
/**
109+
* Run job
110+
**/
79111
run(/*job*/) {
80112
throw new Error('Resource.run must be overridden to return promise');
81113
}
82114

115+
/**
116+
* Abort job
117+
**/
83118
abort(/*job*/) {
84119
throw new Error('Resource.run must be overridden to return promise');
85120
}
86121

122+
/**
123+
* Resolved returned promise, once resource is online
124+
* @returns {Promise} promise
125+
**/
87126
onceOnline() {
88127
if (this._online) {
89128
return Promise.resolve();
@@ -99,6 +138,10 @@ class ResourceInterface extends EventEmitter {
99138
}
100139
}
101140

141+
/**
142+
* Resolved returned promise, once resource is opened
143+
* @returns {Promise} promise
144+
**/
102145
onceOpened() {
103146
if (this._open) {
104147
return Promise.resolve();
@@ -118,6 +161,10 @@ class ResourceInterface extends EventEmitter {
118161
}
119162
}
120163

164+
/**
165+
* Resolved returned promise, once resource is closed
166+
* @returns {Promise} promise
167+
**/
121168
onceClosed() {
122169
if (!this._open) {
123170
return Promise.resolve();
@@ -136,6 +183,11 @@ class ResourceInterface extends EventEmitter {
136183
* Constructor requires actual job instance just to instantiate a resource from its createResource call, separate run call is required to start it.
137184
*/
138185
class ResourceFaçade extends ResourceInterface {
186+
/**
187+
* Constructor
188+
* @param {Job} job for resource
189+
* @param {string} file
190+
**/
139191
constructor(job, file) {
140192
super('res:' + job.resourceName() + ':' + random(), 'res:' + job.resourceName());
141193
this._file = file;
@@ -227,14 +279,27 @@ class ResourceFaçade extends ResourceInterface {
227279
});
228280
}
229281

282+
/**
283+
* Check if resource is busy
284+
* @returns {boolean} if resource is busy
285+
**/
230286
get isBusy() {
231287
return !!this._job;
232288
}
233289

290+
/**
291+
* Check if resource is ready
292+
* @returns {boolean} if resource is ready
293+
**/
234294
get isReady() {
235295
return this.open === true || this.open === null;
236296
}
237297

298+
/**
299+
* Run job
300+
* @param {Job} job to run
301+
* @returns {Promise} promise
302+
**/
238303
run(job) {
239304
if (this.isBusy) {
240305
log.w('[façade]: Resource façade %j is busy in %d: %j', this.name, this._worker.pid, this.id);
@@ -254,6 +319,10 @@ class ResourceFaçade extends ResourceInterface {
254319
});
255320
}
256321

322+
/**
323+
* Close resource
324+
* @returns {Promise} promise
325+
**/
257326
close() {
258327
if (this.isOpen) {
259328
log.w('Closing underlying resource %s from façade', this.id);
@@ -272,6 +341,10 @@ class ResourceFaçade extends ResourceInterface {
272341
}
273342
}
274343

344+
/**
345+
* Kill resource
346+
* @returns {Promise} promise
347+
**/
275348
kill() {
276349
return new Promise((resolve) => {
277350
this._worker.kill();
@@ -281,6 +354,10 @@ class ResourceFaçade extends ResourceInterface {
281354
});
282355
}
283356

357+
/**
358+
* Open resource
359+
* @returns {Promise} promise
360+
**/
284361
open() {
285362
if (this.isOpen) {
286363
return Promise.resolve();
@@ -299,6 +376,11 @@ class ResourceFaçade extends ResourceInterface {
299376
}
300377
}
301378

379+
/**
380+
* Abort job
381+
* @param {Job} job to abort
382+
* @returns {Promise} promise
383+
**/
302384
abort(job) {
303385
if (!this.job) {
304386
log.w('[façade]: Resource façade %j is not open in %d: %j', this.name, this._worker.pid, this.id);
@@ -313,6 +395,9 @@ class ResourceFaçade extends ResourceInterface {
313395
this.channel.send(CMD.ABORT, job._json);
314396
}
315397

398+
/**
399+
* Resolve job
400+
**/
316401
resolve() {
317402
if (this._resolve) {
318403
log.w('[façade]: Resolving %s', this.job.channel);
@@ -331,6 +416,10 @@ class ResourceFaçade extends ResourceInterface {
331416
}
332417
}
333418

419+
/**
420+
* Reject job
421+
* @param {Error} error with which to reject
422+
**/
334423
reject(error) {
335424
if (this._reject) {
336425
log.w('[façade]: Rejecting %s', this.job.channel);
@@ -350,14 +439,24 @@ class ResourceFaçade extends ResourceInterface {
350439
}
351440
}
352441

442+
/** Class for resource pool **/
353443
class ResourcePool extends EventEmitter {
444+
/**
445+
* Constructor
446+
* @param {function} construct - resource constructor
447+
* @param {number} maxResources - maximal amount of resources
448+
**/
354449
constructor(construct, maxResources) {
355450
super();
356451
this.construct = construct;
357452
this.maxResources = maxResources;
358453
this.pool = [];
359454
}
360455

456+
/**
457+
* Check if there are any resources in the pool available
458+
* @returns {boolean} if any available
459+
**/
361460
canRun() {
362461
for (let i = 0; i < this.pool.length; i++) {
363462
if (!this.pool[i].isBusy) {
@@ -367,6 +466,10 @@ class ResourcePool extends EventEmitter {
367466
return this.pool.length < this.maxResources;
368467
}
369468

469+
/**
470+
* Get a free resource
471+
* @returns {object} resource to use
472+
**/
370473
getResource() {
371474
for (let i = 0; i < this.pool.length; i++) {
372475
if (!this.pool[i].isBusy) {
@@ -393,12 +496,20 @@ class ResourcePool extends EventEmitter {
393496
throw new Error('ResourcePool should be checked with canRun() before calling getResource()');
394497
}
395498

499+
/**
500+
* Close resourse
501+
* @returns {Promise} promise
502+
**/
396503
close() {
397504
return Promise.all(this.pool.map(r => r.close().catch(e => log.w('[%d]: Error in .close() of pool for resource %s', process.pid, r.id, e.stack || e)))).catch((error) => {
398505
log.w('Error while closing pooled resources', error);
399506
});
400507
}
401508

509+
/**
510+
* Kill resourse
511+
* @returns {Promise} promise
512+
**/
402513
kill() {
403514
return Promise.all(this.pool.map(r => r.kill())).catch((error) => {
404515
log.w('Error while killing pooled resources', error);
@@ -410,12 +521,22 @@ class ResourcePool extends EventEmitter {
410521
* Main class for custom resources to override.
411522
*/
412523
class Resource extends ResourceInterface {
524+
/**
525+
* Cosntructor
526+
* @param {string} _id - resource id
527+
* @param {string} name - resource name
528+
* @param {number} checkInterval - resource ping interval in miliseconds
529+
* @param {number} autoCloseTimeout - resource close timeout in miliseconds
530+
**/
413531
constructor(_id, name, checkInterval, autoCloseTimeout) {
414532
super(_id, name);
415533
this._resourceCheckMillis = checkInterval || RESOURCE_PING_INTERVAL;
416534
this._resourceAutoCloseMillis = autoCloseTimeout || RESOURCE_CLOSE_TIMEOUT;
417535
}
418536

537+
/**
538+
* Called when resource opens
539+
**/
419540
opened() {
420541
this._open = true;
421542
log.i('[%d]: Opened resource %j (%j)', process.pid, this.name, this.id);
@@ -436,6 +557,9 @@ class Resource extends ResourceInterface {
436557
}, this._resourceCheckMillis);
437558
}
438559

560+
/**
561+
* Called when resource closes
562+
**/
439563
closed() {
440564
this._open = false;
441565
clearInterval(this._checkInterval);
@@ -449,22 +573,40 @@ class Resource extends ResourceInterface {
449573
}, 1000);
450574
}
451575

576+
/**
577+
* Open resource
578+
**/
452579
open() {
453580
throw new Error('Resource.open must be overridden to return a Promise which calls Resource.opened in case of success');
454581
}
455582

583+
/**
584+
* Close resource
585+
**/
456586
close() {
457587
throw new Error('Resource.open must be overridden to return a Promise which calls Resource.closed in case of success');
458588
}
459589

590+
/**
591+
* Kill resource
592+
**/
460593
kill() {
461594
throw new Error('Resource.kill should not be ever called');
462595
}
463596

597+
/**
598+
* Check if resource is active
599+
**/
464600
checkActive() {
465601
log.i('[%d]: Checking resource %j (%j)', process.pid, this.name, this.id);
466602
}
467603

604+
/**
605+
* Start channel communication
606+
* @param {object} channel - channel to use
607+
* @param {object} db - database connection
608+
* @param {function} Constructor - cosntructor for job
609+
**/
468610
start(channel, db, Constructor) {
469611
this.db = db;
470612
this.channel = channel;
@@ -516,6 +658,11 @@ class Resource extends ResourceInterface {
516658
log.d('Resource is online');
517659
}
518660

661+
/**
662+
* Job done
663+
* @param {Job} job that is completed
664+
* @param {Error} error - error if any happened
665+
**/
519666
done(job, error) {
520667
if (error === JOB.ERROR.TIMEOUT) {
521668
log.w('[%d]: Timeout for job %s (%s) in resource %s', process.pid, job.name, job.channel, this.id);

0 commit comments

Comments
 (0)