/* * This file is part of LCMC written by Rasto Levrinc. * * Copyright (C) 2013, Rastislav Levrinc. * * The LCMC is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2, or (at your option) * any later version. * * The LCMC is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with LCMC; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ package lcmc.robotest; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.Collection; import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; import javax.swing.JCheckBox; import lcmc.cluster.domain.Cluster; import lcmc.cluster.ui.widget.GenericWidget.MTextField; import lcmc.cluster.ui.widget.MComboBox; import lcmc.common.domain.util.Tools; import lcmc.common.ui.MainPanel; /** * This class is used to test the GUI. */ @Named @Singleton final class VMTest1 { @Inject private RoboTest roboTest; @Inject private MainPanel mainPanel; void start(final Cluster cluster, final String vmTest, final int count) { startVMTest(cluster, vmTest, "kvm", count); } /** VM Test 1. */ void startVMTest(final Cluster cluster, final String vmTest, final String type, final int count) { roboTest.setSlowFactor(0.1f); roboTest.setAborted(false); String name = "dmc"; for (int j = 0; j < count; j++) { roboTest.checkVMTest(vmTest, 1, name); name += "i"; } name = "dmc"; final Collection<String> names = new ArrayList<String>(); final int count2 = 1; for (int j = 0; j < count; j++) { roboTest.moveToMenu("VMs (KVM"); roboTest.rightClick(); roboTest.moveTo("Add New Virtual Machine"); roboTest.leftClick(); roboTest.dialogColorTest("new domain"); roboTest.moveTo("Domain name", MTextField.class); /* domain name */ roboTest.leftClick(); roboTest.press(KeyEvent.VK_D); roboTest.press(KeyEvent.VK_M); roboTest.press(KeyEvent.VK_C); for (int k = 0; k < j; k++) { roboTest.press(KeyEvent.VK_I); /* dmci, dmcii, etc. */ } /* type */ roboTest.moveTo("Domain Type", MComboBox.class); roboTest.leftClick(); if ("lxc".equals(type)) { roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_ENTER); } /* next */ roboTest.moveTo("Next"); roboTest.leftClick(); if ("lxc".equals(type)) { /* filesystem */ roboTest.dialogColorTest("filesystem"); roboTest.moveTo("Source Dir", MComboBox.class); roboTest.leftClick(); roboTest.press(KeyEvent.VK_END); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_ENTER); roboTest.press(KeyEvent.VK_SLASH); roboTest.press(KeyEvent.VK_D); roboTest.press(KeyEvent.VK_M); roboTest.press(KeyEvent.VK_C); for (int k = 0; k < j; k++) { roboTest.press(KeyEvent.VK_I); /* dmci, dmcii, etc. */ } roboTest.press(KeyEvent.VK_SLASH); roboTest.press(KeyEvent.VK_R); roboTest.press(KeyEvent.VK_O); roboTest.press(KeyEvent.VK_O); roboTest.press(KeyEvent.VK_T); roboTest.press(KeyEvent.VK_F); roboTest.press(KeyEvent.VK_S); roboTest.moveTo("Next"); roboTest.leftClick(); } else { /* source file */ roboTest.dialogColorTest("source file"); roboTest.moveTo("File", MComboBox.class); roboTest.leftClick(); roboTest.press(KeyEvent.VK_END); roboTest.press(KeyEvent.VK_T); roboTest.press(KeyEvent.VK_E); roboTest.press(KeyEvent.VK_S); roboTest.press(KeyEvent.VK_T); for (int i = 0; i < count2; i++) { roboTest.moveTo("Disk/block device"); roboTest.leftClick(); roboTest.moveTo("Image file"); roboTest.leftClick(); } roboTest.moveTo("Next"); roboTest.leftClick(); roboTest.dialogColorTest("disk image"); roboTest.moveTo("Next"); roboTest.leftClick(); } roboTest.dialogColorTest("network"); for (int i = 0; i < count2; i++) { roboTest.moveTo("bridge"); roboTest.leftClick(); roboTest.moveTo("network"); roboTest.leftClick(); } roboTest.moveTo("Next"); roboTest.leftClick(); if (!"lxc".equals(type)) { roboTest.dialogColorTest("display"); for (int i = 0; i < count2; i++) { roboTest.moveTo("sdl"); /* sdl */ roboTest.leftClick(); roboTest.moveTo("vnc"); /* vnc */ roboTest.leftClick(); } roboTest.moveTo("Next"); roboTest.leftClick(); } roboTest.dialogColorTest("create config"); roboTest.moveTo("Create Config"); roboTest.leftClick(); roboTest.checkVMTest(vmTest, 2, name); final String firstHost = cluster.getHostsArray()[0].getName(); final String secondHost = cluster.getHostsArray()[1].getName(); if (cluster.getHosts().size() > 1) { /* two hosts */ roboTest.moveTo(firstHost, JCheckBox.class); /* deselect first */ roboTest.leftClick(); roboTest.moveTo("Create Config"); roboTest.leftClick(); roboTest.checkVMTest(cluster.getHostsArray()[0], vmTest, 1, name); roboTest.checkVMTest(cluster.getHostsArray()[1], vmTest, 2, name); roboTest.moveTo(firstHost, JCheckBox.class); /* select first */ roboTest.leftClick(); roboTest.moveTo(secondHost, JCheckBox.class); /* deselect second */ roboTest.leftClick(); roboTest.moveTo("Create Config"); roboTest.leftClick(); roboTest.checkVMTest(cluster.getHostsArray()[0], vmTest, 2, name); roboTest.checkVMTest(cluster.getHostsArray()[1], vmTest, 1, name); roboTest.moveTo(secondHost, JCheckBox.class); /* select second */ roboTest.leftClick(); roboTest.moveTo("Create Config"); roboTest.leftClick(); roboTest.checkVMTest(vmTest, 2, name); } roboTest.moveTo("Finish"); /* finish */ roboTest.leftClick(); roboTest.moveTo("Number of CPUs", MTextField.class); roboTest.leftClick(); Tools.sleep(500); roboTest.press(KeyEvent.VK_BACK_SPACE); roboTest.press(KeyEvent.VK_2); roboTest.moveTo("Apply"); roboTest.leftClick(); roboTest.checkVMTest(vmTest, 3, name); if (j == 0) { for (int i = 0; i < count2; i++) { /* remove net interface */ roboTest.moveToMenu("VMs ("); roboTest.leftClick(); roboTest.press(KeyEvent.VK_RIGHT); roboTest.moveToMenu("dmc"); roboTest.leftClick(); roboTest.moveToMenu("default (:"); roboTest.rightClick(); roboTest.moveTo("Remove"); roboTest.leftClick(); roboTest.confirmRemove(); roboTest.checkVMTest(vmTest, 3.001, name); /* add net interface */ roboTest.moveToMenu("dmc"); roboTest.rightClick(); roboTest.moveTo("Add Hardware"); roboTest.moveTo("New Disk"); roboTest.moveTo("New Network Interface"); roboTest.leftClick(); Tools.sleep(500); roboTest.moveTo("network"); roboTest.leftClick(); roboTest.moveTo("Apply"); roboTest.leftClick(); roboTest.checkVMTest(vmTest, 3, name); } } roboTest.checkVMTest(vmTest, 3, name); if (j == 0 && !"lxc".equals(type)) { /* add disk */ roboTest.moveToMenu("VMs ("); roboTest.leftClick(); roboTest.press(KeyEvent.VK_RIGHT); roboTest.moveToMenu("dmc"); roboTest.rightClick(); roboTest.moveTo("Add Hardware"); roboTest.moveTo("New Disk"); roboTest.leftClick(); Tools.sleep(500); roboTest.moveTo("Disk/block device"); roboTest.leftClick(); roboTest.moveTo("Device", MComboBox.class); roboTest.leftClick(); roboTest.press(KeyEvent.VK_SLASH); roboTest.press(KeyEvent.VK_D); roboTest.press(KeyEvent.VK_E); roboTest.press(KeyEvent.VK_V); roboTest.press(KeyEvent.VK_SLASH); roboTest.press(KeyEvent.VK_S); roboTest.press(KeyEvent.VK_D); roboTest.press(KeyEvent.VK_A); roboTest.press(KeyEvent.VK_1); roboTest.press(KeyEvent.VK_ENTER); roboTest.moveTo("Apply"); roboTest.leftClick(); roboTest.checkVMTest(vmTest, 3.01, name); /* remove disk */ roboTest.moveToMenu("hdb (IDE"); roboTest.rightClick(); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_ENTER); /* remove */ roboTest.confirmRemove(); roboTest.checkVMTest(vmTest, 3, name); /* add disk /virtio */ roboTest.moveToMenu("dmc"); roboTest.rightClick(); roboTest.moveTo("Add Hardware"); roboTest.moveTo("New Disk"); roboTest.leftClick(); Tools.sleep(500); roboTest.moveTo("Disk/block device"); roboTest.leftClick(); roboTest.moveTo("Device", MComboBox.class); roboTest.leftClick(); roboTest.press(KeyEvent.VK_SLASH); roboTest.press(KeyEvent.VK_D); roboTest.press(KeyEvent.VK_E); roboTest.press(KeyEvent.VK_V); roboTest.press(KeyEvent.VK_SLASH); roboTest.press(KeyEvent.VK_S); roboTest.press(KeyEvent.VK_D); roboTest.press(KeyEvent.VK_A); roboTest.press(KeyEvent.VK_2); roboTest.press(KeyEvent.VK_ENTER); roboTest.moveTo("Disk Type", MComboBox.class); roboTest.leftClick(); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_ENTER); /* virtio */ roboTest.moveTo("Apply"); roboTest.leftClick(); roboTest.checkVMTest(vmTest, 3.02, name); /* remove disk */ roboTest.moveToMenu("vda (Virtio"); roboTest.rightClick(); roboTest.press(KeyEvent.VK_DOWN); roboTest.press(KeyEvent.VK_ENTER); /* remove */ roboTest.confirmRemove(); roboTest.checkVMTest(vmTest, 3, name); } if (!"lxc".equals(type)) { /* disk readonly */ roboTest.moveToMenu("hda (IDE"); /* popup */ roboTest.leftClick(); roboTest.moveTo("Readonly", JCheckBox.class); roboTest.leftClick(); roboTest.moveTo("Apply"); /* apply */ roboTest.leftClick(); roboTest.checkVMTest(vmTest, 3.1, name); mainPanel.expandTerminalSplitPane(MainPanel.TerminalSize.COLLAPSE); roboTest.moveTo("Readonly", JCheckBox.class); roboTest.leftClick(); roboTest.moveTo("VM Host Overview"); /* host overview */ roboTest.leftClick(); roboTest.moveTo("Apply"); /* host apply */ roboTest.leftClick(); roboTest.checkVMTest(vmTest, 3.2, name); } names.add(name); for (final String n : names) { roboTest.checkVMTest(vmTest, 3, n); } name += "i"; } for (int j = 0; j < count; j++) { roboTest.moveToMenu("dmc"); roboTest.rightClick(); roboTest.moveTo("Remove Domain"); roboTest.leftClick(); roboTest.dialogColorTest("remove VM"); roboTest.confirmRemove(); roboTest.leftClick(); Tools.sleep(500); } } }