teraslice-client-js 2.16.3 → 2.17.0

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.
Files changed (53) hide show
  1. package/dist/src/executions.d.ts +1 -1
  2. package/dist/src/executions.d.ts.map +1 -1
  3. package/package.json +6 -3
  4. package/dist/test/assets-spec.d.ts +0 -2
  5. package/dist/test/assets-spec.d.ts.map +0 -1
  6. package/dist/test/assets-spec.js +0 -322
  7. package/dist/test/assets-spec.js.map +0 -1
  8. package/dist/test/client-spec.d.ts +0 -2
  9. package/dist/test/client-spec.d.ts.map +0 -1
  10. package/dist/test/client-spec.js +0 -374
  11. package/dist/test/client-spec.js.map +0 -1
  12. package/dist/test/cluster-spec.d.ts +0 -2
  13. package/dist/test/cluster-spec.d.ts.map +0 -1
  14. package/dist/test/cluster-spec.js +0 -143
  15. package/dist/test/cluster-spec.js.map +0 -1
  16. package/dist/test/ex-spec.d.ts +0 -2
  17. package/dist/test/ex-spec.d.ts.map +0 -1
  18. package/dist/test/ex-spec.js +0 -550
  19. package/dist/test/ex-spec.js.map +0 -1
  20. package/dist/test/executions-spec.d.ts +0 -2
  21. package/dist/test/executions-spec.d.ts.map +0 -1
  22. package/dist/test/executions-spec.js +0 -233
  23. package/dist/test/executions-spec.js.map +0 -1
  24. package/dist/test/job-spec.d.ts +0 -2
  25. package/dist/test/job-spec.d.ts.map +0 -1
  26. package/dist/test/job-spec.js +0 -837
  27. package/dist/test/job-spec.js.map +0 -1
  28. package/dist/test/jobs-spec.d.ts +0 -2
  29. package/dist/test/jobs-spec.d.ts.map +0 -1
  30. package/dist/test/jobs-spec.js +0 -241
  31. package/dist/test/jobs-spec.js.map +0 -1
  32. package/dist/tsconfig.tsbuildinfo +0 -1
  33. package/examples/cluster.js +0 -13
  34. package/examples/list.js +0 -16
  35. package/examples/submit.js +0 -48
  36. package/src/assets.ts +0 -99
  37. package/src/client.ts +0 -197
  38. package/src/cluster.ts +0 -48
  39. package/src/ex.ts +0 -223
  40. package/src/executions.ts +0 -82
  41. package/src/index.ts +0 -39
  42. package/src/interfaces.ts +0 -12
  43. package/src/job.ts +0 -260
  44. package/src/jobs.ts +0 -66
  45. package/test/assets-spec.ts +0 -376
  46. package/test/client-spec.ts +0 -416
  47. package/test/cluster-spec.ts +0 -167
  48. package/test/ex-spec.ts +0 -628
  49. package/test/executions-spec.ts +0 -260
  50. package/test/fixtures/test.txt +0 -1
  51. package/test/job-spec.ts +0 -947
  52. package/test/jobs-spec.ts +0 -272
  53. package/tsconfig.json +0 -12
@@ -1,550 +0,0 @@
1
- import nock from 'nock';
2
- import { Teraslice } from '@terascope/types';
3
- import Ex from '../src/ex.js';
4
- describe('Teraslice Ex', () => {
5
- let scope;
6
- const baseUrl = 'http://teraslice.example.dev/v1';
7
- beforeEach(() => {
8
- nock.cleanAll();
9
- scope = nock(baseUrl);
10
- });
11
- const requestOptions = { headers: { 'Random-Header': 'true' } };
12
- const clusterState = {
13
- 'some-node-id': {
14
- hostname: 'host',
15
- pid: 111,
16
- node_version: '10',
17
- teraslice_version: 'fabled v1.0',
18
- total: 2,
19
- state: 'connected',
20
- available: 3,
21
- node_id: 'some-node-id',
22
- active: [
23
- {
24
- job_id: 'some-job-id',
25
- ex_id: 'some-ex-id',
26
- worker_id: 'someId',
27
- pid: 1324,
28
- assignment: 'worker'
29
- },
30
- {
31
- job_id: 'some-job-id',
32
- ex_id: 'some-ex-id',
33
- worker_id: 'someId',
34
- pid: 1324,
35
- assignment: 'worker'
36
- }
37
- ]
38
- },
39
- 'some-other-node-id': {
40
- hostname: 'host',
41
- pid: 222,
42
- node_version: '10',
43
- teraslice_version: 'fabled v1.0',
44
- total: 2,
45
- state: 'connected',
46
- available: 3,
47
- node_id: 'some-other-node-id',
48
- active: [
49
- {
50
- job_id: 'some-job-id',
51
- ex_id: 'some-ex-id',
52
- worker_id: 'someId',
53
- pid: 1324,
54
- assignment: 'worker'
55
- },
56
- {
57
- job_id: 'some-other-job-id',
58
- ex_id: 'some-other-ex-id',
59
- worker_id: 'someId',
60
- pid: 1324,
61
- assignment: 'worker'
62
- },
63
- {
64
- job_id: 'some-other-ex-id',
65
- ex_id: 'some-other-ex-id',
66
- worker_id: 'someId',
67
- pid: 1324,
68
- assignment: 'execution_controller'
69
- }
70
- ]
71
- }
72
- };
73
- describe('->id', () => {
74
- describe('when constructed without a exId', () => {
75
- it('should throw an error', () => {
76
- // @ts-expect-error
77
- expect(() => new Ex()).toThrow('Ex requires exId');
78
- });
79
- });
80
- describe('when constructed with a invalid exId', () => {
81
- it('should throw an error', () => {
82
- // @ts-expect-error
83
- expect(() => new Ex({}, { invalid: true })).toThrow('Ex requires exId to be a string');
84
- });
85
- });
86
- describe('when constructed with a exId', () => {
87
- it('should return the exId', () => {
88
- const ex = new Ex({}, 'some-ex-id');
89
- expect(ex.id()).toEqual('some-ex-id');
90
- });
91
- });
92
- });
93
- describe('->slicer', () => {
94
- describe('when called with nothing', () => {
95
- beforeEach(() => {
96
- scope.get('/ex/some-ex-id/slicer')
97
- .reply(200, { foo: 'bar' });
98
- });
99
- it('should resolve json results from Teraslice', async () => {
100
- const ex = new Ex({ baseUrl }, 'some-ex-id');
101
- const results = await ex.slicer();
102
- expect(results).toEqual({ foo: 'bar' });
103
- });
104
- });
105
- });
106
- describe('->controller', () => {
107
- describe('when called with nothing', () => {
108
- beforeEach(() => {
109
- scope.get('/ex/some-ex-id/controller')
110
- .reply(200, { foo: 'bar2' });
111
- });
112
- it('should resolve json results from Teraslice', async () => {
113
- const ex = new Ex({ baseUrl }, 'some-ex-id');
114
- const results = await ex.controller();
115
- expect(results).toEqual({ foo: 'bar2' });
116
- });
117
- });
118
- describe('when called with options', () => {
119
- beforeEach(() => {
120
- scope.get('/ex/some-ex-id/controller')
121
- .matchHeader('Random-Header', 'true')
122
- .reply(200, { hello: true });
123
- });
124
- it('should resolve json results from Teraslice', async () => {
125
- const ex = new Ex({ baseUrl }, 'some-ex-id');
126
- const results = await ex.controller(requestOptions);
127
- expect(results).toEqual({ hello: true });
128
- });
129
- });
130
- });
131
- const methodTestCases = [
132
- 'stop',
133
- 'pause',
134
- 'resume'
135
- ];
136
- describe.each(methodTestCases)('->%s', (method) => {
137
- describe('when called with nothing', () => {
138
- beforeEach(() => {
139
- scope.post(`/ex/some-ex-id/_${method}`)
140
- .reply(200, { example: method });
141
- });
142
- it('should resolve json results from Teraslice', async () => {
143
- const ex = new Ex({ baseUrl }, 'some-ex-id');
144
- const results = await ex[method]();
145
- expect(results).toEqual({ example: method });
146
- });
147
- });
148
- describe('when called with a query', () => {
149
- const data = { key: 'some-other-key' };
150
- beforeEach(() => {
151
- scope.post(`/ex/some-ex-id/_${method}`)
152
- .query({ foo: 'bar' })
153
- .reply(200, data);
154
- });
155
- it('should resolve json results from Teraslice', async () => {
156
- const ex = new Ex({ baseUrl }, 'some-ex-id');
157
- const results = await ex[method]({ foo: 'bar' });
158
- expect(results).toEqual(data);
159
- });
160
- });
161
- describe('when called with a query and options', () => {
162
- beforeEach(() => {
163
- scope.post(`/ex/some-ex-id/_${method}`)
164
- .query({ bar: 'foo' })
165
- .matchHeader('Random-Header', 'true')
166
- .reply(200, { random: 'data' });
167
- });
168
- it('should resolve json results from Teraslice', async () => {
169
- const ex = new Ex({ baseUrl }, 'some-ex-id');
170
- const results = await ex[method]({ bar: 'foo' }, requestOptions);
171
- expect(results).toEqual({ random: 'data' });
172
- });
173
- });
174
- });
175
- describe('->recover', () => {
176
- describe('when called with nothing', () => {
177
- beforeEach(() => {
178
- scope.post('/ex/some-ex-id/_recover')
179
- .reply(200, { job_id: 'new-job-id' });
180
- scope.get('/jobs/new-job-id/ex')
181
- .reply(200, {
182
- ex_id: 'new-ex-id',
183
- job_id: 'new-job-id'
184
- });
185
- });
186
- it('should resolve json results from Teraslice', async () => {
187
- const ex = new Ex({ baseUrl }, 'some-ex-id');
188
- const instance = await ex.recover();
189
- expect(instance).toBeInstanceOf(Ex);
190
- expect(instance.id()).toEqual('new-ex-id');
191
- });
192
- });
193
- describe('when called with a query', () => {
194
- beforeEach(() => {
195
- scope.post('/ex/some-ex-id/_recover')
196
- .query({ cleanup: Teraslice.RecoveryCleanupType.errors })
197
- .reply(200, {
198
- job_id: 'some-job-key',
199
- ex_id: 'some-ex-key'
200
- });
201
- });
202
- it('should resolve json results from Teraslice', async () => {
203
- const ex = new Ex({ baseUrl }, 'some-ex-id');
204
- const instance = await ex.recover({
205
- cleanup: Teraslice.RecoveryCleanupType.errors
206
- });
207
- expect(instance).toBeInstanceOf(Ex);
208
- expect(instance.id()).toEqual('some-ex-key');
209
- });
210
- });
211
- describe('when called with a query and options', () => {
212
- beforeEach(() => {
213
- scope.post('/ex/some-ex-id/_recover')
214
- .matchHeader('Random-Header', 'true')
215
- .query({ cleanup: 'errors' })
216
- .reply(200, {
217
- job_id: 'some-job-key',
218
- ex_id: 'some-ex-key'
219
- });
220
- });
221
- it('should resolve json results from Teraslice', async () => {
222
- const ex = new Ex({ baseUrl }, 'some-ex-id');
223
- const instance = await ex.recover({
224
- cleanup: Teraslice.RecoveryCleanupType.errors
225
- }, requestOptions);
226
- expect(instance).toBeInstanceOf(Ex);
227
- expect(instance.id()).toEqual('some-ex-key');
228
- });
229
- });
230
- });
231
- describe('->status', () => {
232
- describe('when called with nothing', () => {
233
- beforeEach(() => {
234
- scope.get('/ex/some-ex-id')
235
- .reply(200, {
236
- ex_id: 'example-ex-id',
237
- _status: 'example'
238
- });
239
- });
240
- it('should resolve json results from Teraslice', async () => {
241
- const ex = new Ex({ baseUrl }, 'some-ex-id');
242
- const results = await ex.status();
243
- expect(results).toEqual('example');
244
- });
245
- });
246
- describe('when called with options', () => {
247
- beforeEach(() => {
248
- scope.get('/ex/some-ex-id')
249
- .matchHeader('Random-Header', 'true')
250
- .reply(200, {
251
- ex_id: 'some-ex-id',
252
- _status: 'other-example'
253
- });
254
- });
255
- it('should resolve json results from Teraslice', async () => {
256
- const ex = new Ex({ baseUrl }, 'some-ex-id');
257
- const results = await ex.status(requestOptions);
258
- expect(results).toEqual('other-example');
259
- });
260
- });
261
- });
262
- describe('->config', () => {
263
- describe('when called with nothing', () => {
264
- beforeEach(() => {
265
- scope.get('/ex/some-ex-id')
266
- .reply(200, {
267
- ex_id: 'some-ex-id',
268
- job_id: 'example-job-id',
269
- example: 'ex-spec'
270
- });
271
- });
272
- it('should resolve json results from Teraslice', async () => {
273
- const ex = new Ex({ baseUrl }, 'some-ex-id');
274
- const results = await ex.config();
275
- expect(results).toEqual({
276
- ex_id: 'some-ex-id',
277
- job_id: 'example-job-id',
278
- example: 'ex-spec'
279
- });
280
- });
281
- });
282
- describe('when called with with options', () => {
283
- beforeEach(() => {
284
- scope.get('/ex/example-ex-id')
285
- .matchHeader('Random-Header', 'true')
286
- .reply(200, {
287
- job_id: 'example-job-id',
288
- ex_id: 'example-ex-id',
289
- example: 'ex-spec'
290
- });
291
- });
292
- it('should resolve json results from Teraslice', async () => {
293
- const ex = new Ex({ baseUrl }, 'example-ex-id');
294
- const results = await ex.config(requestOptions);
295
- expect(results).toEqual({
296
- job_id: 'example-job-id',
297
- ex_id: 'example-ex-id',
298
- example: 'ex-spec'
299
- });
300
- });
301
- });
302
- });
303
- describe('->errors', () => {
304
- describe('when called with nothing', () => {
305
- beforeEach(() => {
306
- scope.get('/ex/some-ex-id/errors')
307
- .reply(200, [
308
- { error: 'example' },
309
- { error: 'example-2' }
310
- ]);
311
- });
312
- it('should resolve json results from Teraslice', async () => {
313
- const ex = new Ex({ baseUrl }, 'some-ex-id');
314
- const results = await ex.errors();
315
- expect(results).toEqual([
316
- { error: 'example' },
317
- { error: 'example-2' }
318
- ]);
319
- });
320
- });
321
- });
322
- describe('->workers', () => {
323
- const workerData = [];
324
- const exId = 'some-ex-id';
325
- for (const [nodeName, node] of Object.entries(clusterState)) {
326
- // @ts-expect-error TODO: fixme
327
- node.active.forEach((child) => {
328
- if (child.assignment === 'worker' && child.ex_id === exId) {
329
- child.node_id = nodeName;
330
- workerData.push(child);
331
- }
332
- });
333
- }
334
- describe('when called and the state has workers', () => {
335
- beforeEach(() => {
336
- scope.get('/cluster/state')
337
- .reply(200, clusterState);
338
- });
339
- it('should resolve json results from Teraslice', async () => {
340
- const ex = new Ex({ baseUrl }, exId);
341
- const results = await ex.workers();
342
- expect(results).toEqual(workerData);
343
- });
344
- });
345
- describe('when called and the state has workers (with options)', () => {
346
- beforeEach(() => {
347
- scope.get('/cluster/state')
348
- .matchHeader('Random-Header', 'true')
349
- .reply(200, clusterState);
350
- });
351
- it('should resolve json results from Teraslice', async () => {
352
- const ex = new Ex({ baseUrl }, exId);
353
- const results = await ex.workers(requestOptions);
354
- expect(results).toEqual(workerData);
355
- });
356
- });
357
- });
358
- describe('->changeWorkers', () => {
359
- const response = { message: 'Changed workers!' };
360
- describe('when response returns a string', () => {
361
- const oldStrResponse = 'hello';
362
- beforeEach(() => {
363
- scope.post('/ex/some-ex-id/_workers')
364
- .query({ add: 2 })
365
- .reply(200, oldStrResponse);
366
- });
367
- it('should resolve json results from Teraslice', async () => {
368
- const ex = new Ex({ baseUrl }, 'some-ex-id');
369
- const results = await ex.changeWorkers('add', 2);
370
- expect(results).toEqual(oldStrResponse);
371
- });
372
- });
373
- describe('when called with add and num', () => {
374
- beforeEach(() => {
375
- scope.post('/ex/some-ex-id/_workers')
376
- .query({ add: 2 })
377
- .reply(200, response);
378
- });
379
- it('should resolve json results from Teraslice', async () => {
380
- const ex = new Ex({ baseUrl }, 'some-ex-id');
381
- const results = await ex.changeWorkers('add', 2);
382
- expect(results).toEqual(response);
383
- });
384
- });
385
- describe('when called with remove and num', () => {
386
- beforeEach(() => {
387
- scope.post('/ex/some-ex-id/_workers')
388
- .query({ remove: 2 })
389
- .reply(200, response);
390
- });
391
- it('should resolve json results from Teraslice', async () => {
392
- const ex = new Ex({ baseUrl }, 'some-ex-id');
393
- const results = await ex.changeWorkers('remove', 2);
394
- expect(results).toEqual(response);
395
- });
396
- });
397
- describe('when called with total and num', () => {
398
- beforeEach(() => {
399
- scope.post('/ex/some-ex-id/_workers')
400
- .query({ total: 2 })
401
- .reply(200, response);
402
- });
403
- it('should resolve json results from Teraslice', async () => {
404
- const ex = new Ex({ baseUrl }, 'some-ex-id');
405
- const results = await ex.changeWorkers('total', 2);
406
- expect(results).toEqual(response);
407
- });
408
- });
409
- describe('when called with nothing', () => {
410
- it('should reject with an error', async () => {
411
- expect.hasAssertions();
412
- const ex = new Ex({ baseUrl }, 'some-ex-id');
413
- try {
414
- // @ts-expect-error
415
- await ex.changeWorkers();
416
- }
417
- catch (err) {
418
- expect(err.message).toEqual('Change workers requires action and count');
419
- }
420
- });
421
- });
422
- describe('when called with an invalid action', () => {
423
- it('should reject with an error', async () => {
424
- expect.hasAssertions();
425
- const ex = new Ex({ baseUrl }, 'some-ex-id');
426
- try {
427
- // @ts-expect-error
428
- await ex.changeWorkers('invalid', 2);
429
- }
430
- catch (err) {
431
- expect(err.message).toEqual('Change workers requires action to be one of add, remove, or total');
432
- }
433
- });
434
- });
435
- });
436
- describe('->waitForStatus', () => {
437
- describe('when called and it matches on the first try', () => {
438
- beforeEach(() => {
439
- scope.get('/ex/example-ex-id')
440
- .reply(200, {
441
- ex_id: 'example-ex-id',
442
- job_id: 'example-job-id',
443
- _status: Teraslice.ExecutionStatusEnum.running
444
- });
445
- });
446
- it('should resolve json results from Teraslice', async () => {
447
- const ex = new Ex({ baseUrl }, 'example-ex-id');
448
- const results = await ex.waitForStatus(Teraslice.ExecutionStatusEnum.running);
449
- expect(results).toEqual(Teraslice.ExecutionStatusEnum.running);
450
- });
451
- });
452
- describe('when called and it matches on the first try (with options)', () => {
453
- const searchOptions = { headers: { 'Other-Header': '1' } };
454
- beforeEach(() => {
455
- scope.get('/ex/example-ex-id')
456
- .matchHeader('Other-Header', '1')
457
- .reply(200, {
458
- ex_id: 'example-ex-id',
459
- job_id: 'example-job-id',
460
- _status: Teraslice.ExecutionStatusEnum.running
461
- });
462
- });
463
- it('should resolve json results from Teraslice', async () => {
464
- const ex = new Ex({ baseUrl }, 'example-ex-id');
465
- const results = await ex.waitForStatus(Teraslice.ExecutionStatusEnum.running, 1000, 0, searchOptions);
466
- expect(results).toEqual(Teraslice.ExecutionStatusEnum.running);
467
- });
468
- });
469
- describe('when called and it matches on the second try', () => {
470
- beforeEach(() => {
471
- scope.get('/ex/other-ex-id')
472
- .reply(200, {
473
- ex_id: 'other-ex-id',
474
- _status: Teraslice.ExecutionStatusEnum.running
475
- });
476
- scope.get('/ex/other-ex-id')
477
- .reply(200, {
478
- ex_id: 'other-ex-id',
479
- _status: Teraslice.ExecutionStatusEnum.completed
480
- });
481
- });
482
- it('should resolve json results from Teraslice', async () => {
483
- const ex = new Ex({ baseUrl }, 'other-ex-id');
484
- const results = await ex.waitForStatus(Teraslice.ExecutionStatusEnum.completed);
485
- expect(results).toEqual(Teraslice.ExecutionStatusEnum.completed);
486
- });
487
- });
488
- describe('when called and it never matches', () => {
489
- beforeEach(() => {
490
- scope.get('/ex/foo-bar-ex-id')
491
- .times(12)
492
- .reply(200, {
493
- ex_id: 'foo-bar-ex-id',
494
- _status: Teraslice.ExecutionStatusEnum.running
495
- });
496
- });
497
- it('should reject with a timeout error', async () => {
498
- expect.hasAssertions();
499
- const ex = new Ex({ baseUrl }, 'foo-bar-ex-id');
500
- try {
501
- await ex.waitForStatus(Teraslice.ExecutionStatusEnum.completed, 100, 1000);
502
- }
503
- catch (err) {
504
- expect(err.message).toEqual('Execution status failed to change from status "running" to "completed" within 1000ms');
505
- }
506
- });
507
- });
508
- describe('when called and one request times out', () => {
509
- beforeEach(() => {
510
- scope.get('/ex/some-job-id')
511
- .delay(1100)
512
- .reply(200, {
513
- ex_id: 'example-ex-id',
514
- _status: Teraslice.ExecutionStatusEnum.initializing
515
- });
516
- scope.get('/ex/some-job-id')
517
- .reply(200, {
518
- ex_id: 'example-ex-id',
519
- _status: Teraslice.ExecutionStatusEnum.running
520
- });
521
- });
522
- it('should resolve with the correct status', async () => {
523
- const ex = new Ex({ baseUrl }, 'some-job-id');
524
- const status = await ex.waitForStatus(Teraslice.ExecutionStatusEnum.running, 100, 1500);
525
- expect(status).toEqual(Teraslice.ExecutionStatusEnum.running);
526
- });
527
- });
528
- describe('when called and returns a terminal status', () => {
529
- beforeEach(() => {
530
- scope.get('/ex/example-ex-id')
531
- .reply(200, {
532
- ex_id: 'example-ex-id',
533
- _status: Teraslice.ExecutionStatusEnum.failed
534
- });
535
- });
536
- it('should reject with a terminal status error', async () => {
537
- expect.hasAssertions();
538
- const ex = new Ex({ baseUrl }, 'example-ex-id');
539
- try {
540
- await ex.waitForStatus(Teraslice.ExecutionStatusEnum.completed, 100, 1000);
541
- }
542
- catch (err) {
543
- const errMsg = 'Execution cannot reach the target status, "completed", because it is in the terminal state, "failed"';
544
- expect(err.message).toEqual(errMsg);
545
- }
546
- });
547
- });
548
- });
549
- });
550
- //# sourceMappingURL=ex-spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ex-spec.js","sourceRoot":"","sources":["../../test/ex-spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=executions-spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executions-spec.d.ts","sourceRoot":"","sources":["../../test/executions-spec.ts"],"names":[],"mappings":""}