2023-04-10 15:36:59 +00:00
|
|
|
/**
|
|
|
|
* Copyright (c) HashiCorp, Inc.
|
|
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
|
|
*/
|
|
|
|
|
2018-02-16 02:55:59 +00:00
|
|
|
import { run } from '@ember/runloop';
|
2019-03-13 00:04:16 +00:00
|
|
|
import { module, test } from 'qunit';
|
|
|
|
import { setupTest } from 'ember-qunit';
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2021-12-28 14:45:20 +00:00
|
|
|
module('Unit | Model | job', function (hooks) {
|
2019-03-13 00:04:16 +00:00
|
|
|
setupTest(hooks);
|
|
|
|
|
2021-12-28 14:45:20 +00:00
|
|
|
test('should expose aggregate allocations derived from task groups', function (assert) {
|
2019-03-13 00:04:16 +00:00
|
|
|
const store = this.owner.lookup('service:store');
|
|
|
|
let summary;
|
|
|
|
run(() => {
|
|
|
|
summary = store.createRecord('job-summary', {
|
|
|
|
taskGroupSummaries: [
|
|
|
|
{
|
|
|
|
name: 'one',
|
|
|
|
queuedAllocs: 1,
|
|
|
|
startingAllocs: 2,
|
|
|
|
runningAllocs: 3,
|
|
|
|
completeAllocs: 4,
|
|
|
|
failedAllocs: 5,
|
|
|
|
lostAllocs: 6,
|
2022-04-22 15:25:02 +00:00
|
|
|
unknownAllocs: 7,
|
2019-03-13 00:04:16 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'two',
|
|
|
|
queuedAllocs: 2,
|
|
|
|
startingAllocs: 4,
|
|
|
|
runningAllocs: 6,
|
|
|
|
completeAllocs: 8,
|
|
|
|
failedAllocs: 10,
|
|
|
|
lostAllocs: 12,
|
2022-04-22 15:25:02 +00:00
|
|
|
unknownAllocs: 14,
|
2019-03-13 00:04:16 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'three',
|
|
|
|
queuedAllocs: 3,
|
|
|
|
startingAllocs: 6,
|
|
|
|
runningAllocs: 9,
|
|
|
|
completeAllocs: 12,
|
|
|
|
failedAllocs: 15,
|
|
|
|
lostAllocs: 18,
|
2022-04-22 15:25:02 +00:00
|
|
|
unknownAllocs: 21,
|
2019-03-13 00:04:16 +00:00
|
|
|
},
|
|
|
|
],
|
|
|
|
});
|
|
|
|
});
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2019-03-13 00:40:39 +00:00
|
|
|
const job = run(() =>
|
|
|
|
this.owner.lookup('service:store').createRecord('job', {
|
|
|
|
summary,
|
|
|
|
name: 'example',
|
|
|
|
taskGroups: [
|
|
|
|
{
|
|
|
|
name: 'one',
|
|
|
|
count: 0,
|
|
|
|
tasks: [],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'two',
|
|
|
|
count: 0,
|
|
|
|
tasks: [],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'three',
|
|
|
|
count: 0,
|
|
|
|
tasks: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
})
|
|
|
|
);
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2019-03-13 00:04:16 +00:00
|
|
|
assert.equal(
|
|
|
|
job.get('totalAllocs'),
|
|
|
|
job
|
|
|
|
.get('taskGroups')
|
|
|
|
.mapBy('summary.totalAllocs')
|
|
|
|
.reduce((sum, allocs) => sum + allocs, 0),
|
|
|
|
'totalAllocs is the sum of all group totalAllocs'
|
|
|
|
);
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2019-03-13 00:04:16 +00:00
|
|
|
assert.equal(
|
|
|
|
job.get('queuedAllocs'),
|
|
|
|
job
|
|
|
|
.get('taskGroups')
|
|
|
|
.mapBy('summary.queuedAllocs')
|
|
|
|
.reduce((sum, allocs) => sum + allocs, 0),
|
|
|
|
'queuedAllocs is the sum of all group queuedAllocs'
|
|
|
|
);
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2019-03-13 00:04:16 +00:00
|
|
|
assert.equal(
|
|
|
|
job.get('startingAllocs'),
|
|
|
|
job
|
|
|
|
.get('taskGroups')
|
|
|
|
.mapBy('summary.startingAllocs')
|
|
|
|
.reduce((sum, allocs) => sum + allocs, 0),
|
|
|
|
'startingAllocs is the sum of all group startingAllocs'
|
|
|
|
);
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2019-03-13 00:04:16 +00:00
|
|
|
assert.equal(
|
|
|
|
job.get('runningAllocs'),
|
|
|
|
job
|
|
|
|
.get('taskGroups')
|
|
|
|
.mapBy('summary.runningAllocs')
|
|
|
|
.reduce((sum, allocs) => sum + allocs, 0),
|
|
|
|
'runningAllocs is the sum of all group runningAllocs'
|
|
|
|
);
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2019-03-13 00:04:16 +00:00
|
|
|
assert.equal(
|
|
|
|
job.get('completeAllocs'),
|
|
|
|
job
|
|
|
|
.get('taskGroups')
|
|
|
|
.mapBy('summary.completeAllocs')
|
|
|
|
.reduce((sum, allocs) => sum + allocs, 0),
|
|
|
|
'completeAllocs is the sum of all group completeAllocs'
|
|
|
|
);
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2019-03-13 00:04:16 +00:00
|
|
|
assert.equal(
|
|
|
|
job.get('failedAllocs'),
|
|
|
|
job
|
|
|
|
.get('taskGroups')
|
|
|
|
.mapBy('summary.failedAllocs')
|
|
|
|
.reduce((sum, allocs) => sum + allocs, 0),
|
|
|
|
'failedAllocs is the sum of all group failedAllocs'
|
|
|
|
);
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2019-03-13 00:04:16 +00:00
|
|
|
assert.equal(
|
|
|
|
job.get('lostAllocs'),
|
|
|
|
job
|
|
|
|
.get('taskGroups')
|
|
|
|
.mapBy('summary.lostAllocs')
|
|
|
|
.reduce((sum, allocs) => sum + allocs, 0),
|
|
|
|
'lostAllocs is the sum of all group lostAllocs'
|
|
|
|
);
|
|
|
|
});
|
2017-09-19 14:47:10 +00:00
|
|
|
});
|