Acceptance tests for task group scaling

This commit is contained in:
Michael Lange 2020-06-18 23:20:24 -07:00
parent 1cadcf90b8
commit 02fd45f02b
4 changed files with 62 additions and 1 deletions

View file

@ -11,6 +11,7 @@
<Exec::OpenButton @job={{model.job}} @taskGroup={{model}} /> <Exec::OpenButton @job={{model.job}} @taskGroup={{model}} />
{{#if model.scaling}} {{#if model.scaling}}
<StepperInput <StepperInput
data-test-task-group-count-stepper
@min={{model.scaling.min}} @min={{model.scaling.min}}
@max={{model.scaling.max}} @max={{model.scaling.max}}
@value={{model.count}} @value={{model.count}}

View file

@ -1,4 +1,4 @@
import { currentURL } from '@ember/test-helpers'; import { currentURL, settled } from '@ember/test-helpers';
import { module, test } from 'qunit'; import { module, test } from 'qunit';
import { setupApplicationTest } from 'ember-qunit'; import { setupApplicationTest } from 'ember-qunit';
import { setupMirage } from 'ember-cli-mirage/test-support'; import { setupMirage } from 'ember-cli-mirage/test-support';
@ -11,6 +11,7 @@ let job;
let taskGroup; let taskGroup;
let tasks; let tasks;
let allocations; let allocations;
let managementToken;
const sum = (total, n) => total + n; const sum = (total, n) => total + n;
@ -61,6 +62,8 @@ module('Acceptance | task group detail', function(hooks) {
previousAllocation: allocations[0].id, previousAllocation: allocations[0].id,
}); });
managementToken = server.create('token');
window.localStorage.clear(); window.localStorage.clear();
}); });
@ -297,6 +300,59 @@ module('Acceptance | task group detail', function(hooks) {
}); });
}); });
test('the count stepper sends the appropriate POST request', async function(assert) {
window.localStorage.nomadTokenSecret = managementToken.secretId;
job = server.create('job', {
groupCount: 0,
createAllocations: false,
shallow: true,
noActiveDeployment: true,
});
const scalingGroup = server.create('task-group', {
job,
name: 'scaling',
count: 1,
shallow: true,
withScaling: true,
});
job.update({ taskGroupIds: [scalingGroup.id] });
await TaskGroup.visit({ id: job.id, name: scalingGroup.name });
await TaskGroup.countStepper.increment.click();
await settled();
const scaleRequest = server.pretender.handledRequests.find(req => req.url.endsWith('/scale'));
const requestBody = JSON.parse(scaleRequest.requestBody);
assert.equal(requestBody.Target.Group, scalingGroup.name);
assert.equal(requestBody.Count, scalingGroup.count + 1);
});
test('the count stepper is disabled when a deployment is running', async function(assert) {
window.localStorage.nomadTokenSecret = managementToken.secretId;
job = server.create('job', {
groupCount: 0,
createAllocations: false,
shallow: true,
activeDeployment: true,
});
const scalingGroup = server.create('task-group', {
job,
name: 'scaling',
count: 1,
shallow: true,
withScaling: true,
});
job.update({ taskGroupIds: [scalingGroup.id] });
await TaskGroup.visit({ id: job.id, name: scalingGroup.name });
assert.ok(TaskGroup.countStepper.input.isDisabled);
assert.ok(TaskGroup.countStepper.increment.isDisabled);
assert.ok(TaskGroup.countStepper.decrement.isDisabled);
});
test('when the job for the task group is not found, an error message is shown, but the URL persists', async function(assert) { test('when the job for the task group is not found, an error message is shown, but the URL persists', async function(assert) {
await TaskGroup.visit({ id: 'not-a-real-job', name: 'not-a-real-task-group' }); await TaskGroup.visit({ id: 'not-a-real-job', name: 'not-a-real-task-group' });

View file

@ -24,6 +24,7 @@ export default scope => ({
blur: blurrable(), blur: blurrable(),
value: value(), value: value(),
esc: triggerable('keydown', '', { eventProperties: { keyCode: 27 } }), esc: triggerable('keydown', '', { eventProperties: { keyCode: 27 } }),
isDisabled: attribute('disabled'),
}, },
decrement: { decrement: {

View file

@ -12,6 +12,7 @@ import {
import allocations from 'nomad-ui/tests/pages/components/allocations'; import allocations from 'nomad-ui/tests/pages/components/allocations';
import error from 'nomad-ui/tests/pages/components/error'; import error from 'nomad-ui/tests/pages/components/error';
import pageSizeSelect from 'nomad-ui/tests/pages/components/page-size-select'; import pageSizeSelect from 'nomad-ui/tests/pages/components/page-size-select';
import stepperInput from 'nomad-ui/tests/pages/components/stepper-input';
import LifecycleChart from 'nomad-ui/tests/pages/components/lifecycle-chart'; import LifecycleChart from 'nomad-ui/tests/pages/components/lifecycle-chart';
export default create({ export default create({
@ -21,6 +22,8 @@ export default create({
search: fillable('.search-box input'), search: fillable('.search-box input'),
countStepper: stepperInput('[data-test-task-group-count-stepper]'),
tasksCount: text('[data-test-task-group-tasks]'), tasksCount: text('[data-test-task-group-tasks]'),
cpu: text('[data-test-task-group-cpu]'), cpu: text('[data-test-task-group-cpu]'),
mem: text('[data-test-task-group-mem]'), mem: text('[data-test-task-group-mem]'),