summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCole Robinson <crobinso@redhat.com>2018-01-19 13:14:01 -0500
committerCole Robinson <crobinso@redhat.com>2018-01-21 10:02:08 -0500
commitdc3c0b29f7843a7321b436181d6fe85da453765b (patch)
tree35caad9029f41712676c184d3b24934092b18c61
parentc620e7405c22eab716409d592b4e1a004d067c35 (diff)
downloadvirt-manager-dc3c0b29f7843a7321b436181d6fe85da453765b.tar.gz
uitests: addhardware storage/disk testing
-rw-r--r--tests/uitests/addhardware.py103
-rw-r--r--tests/uitests/utils.py10
-rw-r--r--ui/addstorage.ui7
-rw-r--r--virtManager/addhardware.py2
4 files changed, 119 insertions, 3 deletions
diff --git a/tests/uitests/addhardware.py b/tests/uitests/addhardware.py
index d48687fb..ce2dbaba 100644
--- a/tests/uitests/addhardware.py
+++ b/tests/uitests/addhardware.py
@@ -2,9 +2,9 @@ import tests
from tests.uitests import utils as uiutils
-class Details(uiutils.UITestCase):
+class AddHardware(uiutils.UITestCase):
"""
- UI tests for virt-manager's VM details window
+ UI tests for virt-manager's VM addhardware window
"""
###################
@@ -35,6 +35,105 @@ class Details(uiutils.UITestCase):
# Test cases #
##############
+ def testAddDisks(self):
+ """
+ Add various disk configs and test storage browser
+ """
+ details = self._open_details_window()
+ addhw = self._open_addhw_window(details)
+ finish = addhw.find("Finish", "push button")
+
+ # Default disk
+ tab = self._select_hw(addhw, "Storage", "storage-tab")
+ finish.click()
+ uiutils.check_in_loop(lambda: details.active)
+
+ # Disk with some tweaks
+ addhw = self._open_addhw_window(details)
+ tab = self._select_hw(addhw, "Storage", "storage-tab")
+ tab.find("GiB", "spin button").text = "1.5"
+ tab.find("Bus type:", "combo box").click()
+ tab.find("VirtIO", "menu item").click()
+ tab.find("Advanced options", "toggle button").click_expander()
+ tab.find("Cache mode:", "combo box").click()
+ tab.find("none", "menu item").click()
+ finish.click()
+ uiutils.check_in_loop(lambda: details.active)
+
+ # Managed storage tests
+ addhw = self._open_addhw_window(details)
+ tab = self._select_hw(addhw, "Storage", "storage-tab")
+ tab.find_fuzzy("Select or create", "radio").click()
+ tab.find("storage-browse", "push button").click()
+ browse = self.app.root.find("Choose Storage Volume", "frame")
+
+ # Create a vol, refresh, then delete it
+ browse.find_fuzzy("default-pool", "table cell").click()
+ browse.find("vol-new", "push button").click()
+ newvol = self.app.root.find("Add a Storage Volume", "frame")
+ newname = "a-newvol"
+ newvol.find("Name:", "text").text = newname
+ newvol.find("Finish", "push button").click()
+ uiutils.check_in_loop(lambda: not newvol.showing)
+ volcell = browse.find(newname, "table cell")
+ self.assertTrue(volcell.selected)
+ browse.find("vol-refresh", "push button").click()
+ volcell = browse.find(newname, "table cell")
+ self.assertTrue(volcell.selected)
+ browse.find("vol-delete", "push button").click()
+ alert = self.app.root.find("vmm dialog", "alert")
+ alert.find_fuzzy("permanently delete the volume", "label")
+ alert.find("Yes", "push button").click()
+ uiutils.check_in_loop(lambda: volcell.dead)
+
+ # Test browse local
+ browse.find("Browse Local", "push button").click()
+ chooser = self.app.root.find(
+ "Locate existing storage", "file chooser")
+ fname = "virt-manager.spec.in"
+ chooser.find(fname, "table cell").click()
+ chooser.find("Open", "push button").click()
+ uiutils.check_in_loop(lambda: not chooser.showing)
+ uiutils.check_in_loop(lambda: addhw.active)
+ self.assertTrue(("/" + fname) in tab.find("storage-entry").text)
+
+ # Reopen dialog, select a volume, etic
+ tab.find("storage-browse", "push button").click()
+ browse = self.app.root.find("Choose Storage Volume", "frame")
+
+ browse.find_fuzzy("disk-pool", "table cell").click()
+ browse.find("diskvol1", "table cell").click()
+ browse.find("Choose Volume", "push button").click()
+ self.assertTrue("/diskvol1" in tab.find("storage-entry").text)
+ finish.click()
+ alert = self.app.root.find("vmm dialog", "alert")
+ alert.find_fuzzy("already in use by", "label")
+ alert.find("Yes", "push button").click()
+ uiutils.check_in_loop(lambda: details.active)
+
+
+ # choose file for floppy
+ addhw = self._open_addhw_window(details)
+ tab = self._select_hw(addhw, "Storage", "storage-tab")
+ tab.find("Device type:", "combo box").click()
+ tab.find("Floppy device", "menu item").click()
+ self.assertFalse(
+ tab.find_fuzzy("Create a disk image", "radio").sensitive)
+ tab.find("storage-entry").text = "/dev/default-pool/bochs-vol"
+ finish.click()
+ uiutils.check_in_loop(lambda: details.active)
+
+ # empty cdrom
+ addhw = self._open_addhw_window(details)
+ tab = self._select_hw(addhw, "Storage", "storage-tab")
+ tab.find("Device type:", "combo box").click()
+ tab.find("CDROM device", "menu item").click()
+ tab.find("Bus type:", "combo box").click()
+ tab.find("SCSI", "menu item").click()
+ finish.click()
+ uiutils.check_in_loop(lambda: details.active)
+
+
def testAddNetworks(self):
"""
Test various network configs
diff --git a/tests/uitests/utils.py b/tests/uitests/utils.py
index f769e0d6..7ac20e2b 100644
--- a/tests/uitests/utils.py
+++ b/tests/uitests/utils.py
@@ -185,6 +185,16 @@ class VMMDogtailNode(dogtail.tree.Node):
clickY = self.position[1] + self.size[1] / 2
dogtail.rawinput.click(clickX, clickY, button)
+ def click_expander(self):
+ """
+ Helper for clicking expander, hitting the text part to actually
+ open it. Basically clicks top left corner with some indent
+ """
+ button = 1
+ clickX = self.position[0] + 10
+ clickY = self.position[1] + 5
+ dogtail.rawinput.click(clickX, clickY, button)
+
#########################
# Widget search helpers #
diff --git a/ui/addstorage.ui b/ui/addstorage.ui
index e85d8314..70cb0054 100644
--- a/ui/addstorage.ui
+++ b/ui/addstorage.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.20.0 -->
+<!-- Generated with glade 3.20.2 -->
<interface>
<requires lib="gtk+" version="3.14"/>
<object class="GtkAdjustment" id="adjustment1">
@@ -207,6 +207,11 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">25</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="storage-entry-atkobject">
+ <property name="AtkObject::accessible-name">storage-entry</property>
+ </object>
+ </child>
</object>
<packing>
<property name="expand">True</property>
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
index 7d96c848..801ebcbb 100644
--- a/virtManager/addhardware.py
+++ b/virtManager/addhardware.py
@@ -411,6 +411,8 @@ class vmmAddHardware(vmmGObjectUI):
# Storage init
self.widget("storage-devtype").set_active(0)
self.widget("storage-devtype").emit("changed")
+ self.widget("storage-cache").set_active(0)
+ self.widget("disk-advanced-expander").set_expanded(False)
self.addstorage.reset_state()
# Network init