From 15f1d5f76919e777e06e63ccb311878044c640af Mon Sep 17 00:00:00 2001 From: Gilad Lekner Date: Fri, 7 Feb 2020 20:23:08 +0200 Subject: [PATCH] dedicated resources test --- .../tests/models/kubevirtDetailView.ts | 7 +++ .../vm.detail.dedicated-resources.scenario.ts | 54 +++++++++++++++++++ .../views/editDedicatedResourcesView.ts | 7 +++ .../views/virtualMachine.view.ts | 4 ++ .../dedicated-resources-modal.tsx | 3 +- 5 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 frontend/packages/kubevirt-plugin/integration-tests/tests/vm.detail.dedicated-resources.scenario.ts create mode 100644 frontend/packages/kubevirt-plugin/integration-tests/views/editDedicatedResourcesView.ts diff --git a/frontend/packages/kubevirt-plugin/integration-tests/tests/models/kubevirtDetailView.ts b/frontend/packages/kubevirt-plugin/integration-tests/tests/models/kubevirtDetailView.ts index 34db5bf2435..42d72b81dbf 100644 --- a/frontend/packages/kubevirt-plugin/integration-tests/tests/models/kubevirtDetailView.ts +++ b/frontend/packages/kubevirt-plugin/integration-tests/tests/models/kubevirtDetailView.ts @@ -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'; @@ -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)); + } } diff --git a/frontend/packages/kubevirt-plugin/integration-tests/tests/vm.detail.dedicated-resources.scenario.ts b/frontend/packages/kubevirt-plugin/integration-tests/tests/vm.detail.dedicated-resources.scenario.ts new file mode 100644 index 00000000000..9adfd571a46 --- /dev/null +++ b/frontend/packages/kubevirt-plugin/integration-tests/tests/vm.detail.dedicated-resources.scenario.ts @@ -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, + ); +}); diff --git a/frontend/packages/kubevirt-plugin/integration-tests/views/editDedicatedResourcesView.ts b/frontend/packages/kubevirt-plugin/integration-tests/views/editDedicatedResourcesView.ts new file mode 100644 index 00000000000..d7d303bc30d --- /dev/null +++ b/frontend/packages/kubevirt-plugin/integration-tests/views/editDedicatedResourcesView.ts @@ -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)'; diff --git a/frontend/packages/kubevirt-plugin/integration-tests/views/virtualMachine.view.ts b/frontend/packages/kubevirt-plugin/integration-tests/views/virtualMachine.view.ts index c5e9941b535..9a4de251464 100644 --- a/frontend/packages/kubevirt-plugin/integration-tests/views/virtualMachine.view.ts +++ b/frontend/packages/kubevirt-plugin/integration-tests/views/virtualMachine.view.ts @@ -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 diff --git a/frontend/packages/kubevirt-plugin/src/components/modals/dedicated-resources-modal/dedicated-resources-modal.tsx b/frontend/packages/kubevirt-plugin/src/components/modals/dedicated-resources-modal/dedicated-resources-modal.tsx index 753a78ded7a..6fc41fc8c46 100644 --- a/frontend/packages/kubevirt-plugin/src/components/modals/dedicated-resources-modal/dedicated-resources-modal.tsx +++ b/frontend/packages/kubevirt-plugin/src/components/modals/dedicated-resources-modal/dedicated-resources-modal.tsx @@ -46,6 +46,7 @@ const ResourceModal = withHandlePromise( }; const footer = ( ( label="Schedule this workload with dedicated resources (guaranteed policy)" isChecked={isPinned} isDisabled={isLoading} - onChange={setIsPinned} + onChange={(flag) => setIsPinned(flag)} id="dedicated-resources-checkbox" />