Skip to content

Commit

Permalink
dedicated resources test
Browse files Browse the repository at this point in the history
  • Loading branch information
Gilad Lekner authored and glekner committed Feb 17, 2020
1 parent ea68168 commit 5e39620
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 9 deletions.
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));
}
}
Expand Up @@ -29,7 +29,7 @@ import { appHost, testName } from '@console/internal-integration-tests/protracto
import { KubevirtDetailView } from './kubevirtDetailView';
import { ImportWizard } from './importWizard';

const confirmDialogActions = [VM_ACTION.Clone, VM_ACTION.Delete, VMI_ACTION.Delete];
const noConfirmDialogActions: (VM_ACTION | VMI_ACTION)[] = [VM_ACTION.Start, VM_ACTION.Clone];

export class VirtualMachine extends KubevirtDetailView {
constructor(config, kind?: 'virtualmachines' | 'virtualmachineinstances') {
Expand All @@ -51,7 +51,7 @@ export class VirtualMachine extends KubevirtDetailView {
async action(action: VM_ACTION | VMI_ACTION, waitForAction?: boolean, timeout?: number) {
await this.navigateToTab(TAB.Details);

const confirmDialog = confirmDialogActions.includes(action);
const confirmDialog = !noConfirmDialogActions.includes(action);

await detailViewAction(action, confirmDialog);
if (waitForAction !== false) {
Expand All @@ -72,8 +72,7 @@ export class VirtualMachine extends KubevirtDetailView {
async listViewAction(action: VM_ACTION | VMI_ACTION, waitForAction?: boolean, timeout?: number) {
await this.navigateToListView();

const confirmDialog = confirmDialogActions.includes(action);

const confirmDialog = !noConfirmDialogActions.includes(action);
await listViewAction(this.name)(action, confirmDialog);
if (waitForAction !== false) {
await this.waitForActionFinished(action, timeout);
Expand Down
Expand Up @@ -44,4 +44,4 @@ expect $prompt {
}

send \003]
exit

Expand Up @@ -28,7 +28,7 @@ import { VirtualMachine } from './models/virtualMachine';

describe('Test VM actions', () => {
const leakedResources = new Set<string>();
const testVM = getVMManifest('URL', testName);
const testVM = getVMManifest('Container', testName);

afterAll(async () => {
removeLeakedResources(leakedResources);
Expand Down
@@ -1,6 +1,6 @@
import { browser, ExpectedConditions as until, Key } from 'protractor';
import { execSync } from 'child_process';
import { testName } from '@console/internal-integration-tests/protractor.conf';
import { appHost, testName } from '@console/internal-integration-tests/protractor.conf';
import {
createResource,
deleteResource,
Expand Down Expand Up @@ -56,7 +56,12 @@ describe('KubeVirt VM VNC/Serial consoles', () => {
await vm.navigateToConsoles();
}, VM_BOOTUP_TIMEOUT_SECS);

afterAll(() => {
afterAll(async () => {
await browser.get(appHost);
await browser
.switchTo()
.alert()
.accept();
deleteResource(vmResource);
});

Expand All @@ -74,6 +79,7 @@ describe('KubeVirt VM VNC/Serial consoles', () => {
await browser.wait(until.presenceOf(serialConsole), PAGE_LOAD_TIMEOUT_SECS);
await logIntoConsole(serialConsole);
await sendCommandToConsole(serialConsole, `touch ${serialTestFile}`);
await sendCommandToConsole(serialConsole, 'exit');
const out = execSync(
`expect ${expectFileExistsScriptPath} ${vm.name} ${vm.namespace} ${serialTestFile}`,
)
Expand Down
@@ -0,0 +1,56 @@
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);

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,
),
);
expect(
isDedicatedCPUPlacement(getResourceObject(vm.name, vm.namespace, vm.kind)),
).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,
),
);
expect(
isDedicatedCPUPlacement(getResourceObject(vm.name, vm.namespace, vm.kind)),
).toBeFalsy();
},
VM_CREATE_AND_EDIT_TIMEOUT_SECS,
);
});
@@ -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)';
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
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)}
id="dedicated-resources-checkbox"
/>
<Text className="kubevirt-dedicated-resources__helper-text" component={TextVariants.small}>
Expand Down

0 comments on commit 5e39620

Please sign in to comment.