Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@ import {
vmDetailFlavorEditButton,
vmDetailCdEditButton,
vmDetailBootOrderEditButton,
vmDetailDedicatedResourcesEditButton,
} from '../../views/virtualMachine.view';
import * as editCD from '../../views/editCDView';
import * as editBootOrder from '../../views/editBootOrderView';
import * as editDedicatedResourcesView from '../../views/editDedicatedResourcesView';
import { NetworkInterfaceDialog } from '../dialogs/networkInterfaceDialog';
import { DiskDialog } from '../dialogs/diskDialog';
import { DetailView } from './detailView';
Expand Down Expand Up @@ -96,4 +98,9 @@ export class KubevirtDetailView extends DetailView {
await click(vmDetailBootOrderEditButton(this.namespace, this.name));
await browser.wait(until.presenceOf(editBootOrder.bootOrderDialog));
}

async modalEditDedicatedResources() {
await click(vmDetailDedicatedResourcesEditButton(this.namespace, this.name));
await browser.wait(until.presenceOf(editDedicatedResourcesView.guaranteedPolicyCheckbox));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { browser, ExpectedConditions as until } from 'protractor';
import { testName } from '@console/internal-integration-tests/protractor.conf';
import { createResource, deleteResource, click } from '@console/shared/src/test-utils/utils';
import { isDedicatedCPUPlacement } from '../../src/selectors/vm';
import * as editDedicatedResourcesView from '../views/editDedicatedResourcesView';
import * as virtualMachineView from '../views/virtualMachine.view';
import { VM_CREATE_AND_EDIT_TIMEOUT_SECS } from './utils/consts';
import { VirtualMachine } from './models/virtualMachine';
import { getVMManifest } from './utils/mocks';
import { getRandStr, getResourceObject } from './utils/utils';

describe('KubeVirt VM detail - edit Dedicated Resources', () => {
const testVM = getVMManifest('Container', testName, `dedicatedresourcevm-${getRandStr(5)}`);
const vm = new VirtualMachine(testVM.metadata);
const isDedicatedCPU = () =>
expect(isDedicatedCPUPlacement(getResourceObject(vm.name, vm.namespace, vm.kind)));

beforeAll(async () => {
createResource(testVM);
});

afterAll(() => {
deleteResource(testVM);
});

it(
'enables dedicated resources guaranteed policy, then disables it',
async () => {
await vm.navigateToDetail();
await vm.modalEditDedicatedResources();
await click(editDedicatedResourcesView.guaranteedPolicyCheckbox);
await click(editDedicatedResourcesView.saveButton);
await browser.wait(
until.textToBePresentInElement(
virtualMachineView.vmDetailDedicatedResources(vm.namespace, vm.name),
editDedicatedResourcesView.guaranteedPolicyText,
),
);
isDedicatedCPU().toBeTruthy();

await vm.modalEditDedicatedResources();
await click(editDedicatedResourcesView.guaranteedPolicyCheckbox);
await click(editDedicatedResourcesView.saveButton);
await browser.wait(
until.textToBePresentInElement(
virtualMachineView.vmDetailDedicatedResources(vm.namespace, vm.name),
editDedicatedResourcesView.noGuaranteedPolicyText,
),
);
isDedicatedCPU().toBeFalsy();
},
VM_CREATE_AND_EDIT_TIMEOUT_SECS,
);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { $ } from 'protractor';

export const guaranteedPolicyCheckbox = $('.pf-c-check__label');
export const saveButton = $('#dedicated-resources-submit');
export const noGuaranteedPolicyText = 'No Dedicated resources applied';
export const guaranteedPolicyText =
'Workload scheduled with dedicated resources (guaranteed policy)';
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ export const vmDetailBootOrder = (namespace, vmName) =>
$(vmDetailItemId(namespace, vmName, 'boot-order')).$$('li');
export const vmDetailBootOrderEditButton = (namespace, vmName) =>
$(vmDetailItemId(namespace, vmName, 'boot-order-edit'));
export const vmDetailDedicatedResources = (namespace, vmName) =>
$(vmDetailItemId(namespace, vmName, 'dedicated-resources'));
export const vmDetailDedicatedResourcesEditButton = (namespace, vmName) =>
$(vmDetailItemId(namespace, vmName, 'dedicated-resources-edit'));
export const vmDetailLabelValue = async (labelKey) => {
const filteredLabel = $$('.co-m-label').filter((elem) =>
elem
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ const ResourceModal = withHandlePromise<ResourceModalProps>(
};
const footer = (
<ModalFooter
id="dedicated-resources"
className="kubevirt-dedicated-resources__footer"
warningMessage={!loadError && !isNodeAvailable && RESOURCE_NO_NODES_AVAILABLE}
errorMessage={showPatchError && errorMessage}
Expand All @@ -71,7 +72,7 @@ const ResourceModal = withHandlePromise<ResourceModalProps>(
label="Schedule this workload with dedicated resources (guaranteed policy)"
isChecked={isPinned}
isDisabled={isLoading}
onChange={setIsPinned}
onChange={(flag) => setIsPinned(flag)}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

react.setState doesn't support 2 args

id="dedicated-resources-checkbox"
/>
<Text className="kubevirt-dedicated-resources__helper-text" component={TextVariants.small}>
Expand Down