147 lines
4.8 KiB
Python
147 lines
4.8 KiB
Python
# This work is licensed under the GNU GPLv2 or later.
|
|
# See the COPYING file in the top-level directory.
|
|
|
|
from . import lib
|
|
|
|
|
|
#####################################
|
|
# UI tests for the createvol wizard #
|
|
#####################################
|
|
|
|
def _open_createvol(app, hostwin):
|
|
hostwin.find("vol-new", "push button").click()
|
|
win = app.find_window("Add a Storage Volume")
|
|
lib.utils.check(lambda: win.active)
|
|
return win
|
|
|
|
|
|
def testCreateVolDefault(app):
|
|
"""
|
|
Create default volume, clean it up
|
|
"""
|
|
hostwin = app.manager_open_host("Storage")
|
|
poolcell = hostwin.find("pool-dir", "table cell")
|
|
poolcell.click()
|
|
vollist = hostwin.find("vol-list", "table")
|
|
win = _open_createvol(app, hostwin)
|
|
finish = win.find("Finish", "push button")
|
|
name = win.find("Name:", "text")
|
|
|
|
# Create a default qcow2 volume
|
|
newname = "vol"
|
|
lib.utils.check(lambda: name.text == newname)
|
|
sparse = win.find("Allocate", "check box")
|
|
lib.utils.check(lambda: not sparse.checked)
|
|
finish.click()
|
|
|
|
# Delete it, clicking 'No' first
|
|
volcell = vollist.find(newname + ".qcow2")
|
|
volcell.bring_on_screen()
|
|
hostwin.find("vol-refresh", "push button").click()
|
|
hostwin.find("vol-delete", "push button").click()
|
|
app.click_alert_button("permanently delete the volume", "No")
|
|
volcell = vollist.find(newname + ".qcow2")
|
|
hostwin.find("vol-delete", "push button").click()
|
|
app.click_alert_button("permanently delete the volume", "Yes")
|
|
lib.utils.check(lambda: volcell.dead)
|
|
|
|
# Ensure host window closes fine
|
|
hostwin.keyCombo("<ctrl>w")
|
|
lib.utils.check(lambda: not hostwin.showing and
|
|
not hostwin.active)
|
|
|
|
|
|
def testCreateVolMisc(app):
|
|
"""
|
|
Cover all createvol options
|
|
"""
|
|
hostwin = app.manager_open_host("Storage")
|
|
poolcell = hostwin.find("pool-dir", "table cell")
|
|
poolcell.click()
|
|
win = _open_createvol(app, hostwin)
|
|
name = win.find("Name:", "text")
|
|
finish = win.find("Finish", "push button")
|
|
vollist = hostwin.find("vol-list", "table")
|
|
|
|
# Create a qcow2 with backing file
|
|
newname = "aaa-qcow2-backing.qcow2"
|
|
name.set_text(newname)
|
|
win.combo_select("Format:", "qcow2")
|
|
win.find("Backing store").click_expander()
|
|
win.find("Browse...").click()
|
|
browsewin = app.root.find("vmm-storage-browser")
|
|
# Test cancel button
|
|
browsewin.find("Cancel", "push button").click()
|
|
lib.utils.check(lambda: not browsewin.active)
|
|
win.find("Browse...").click()
|
|
browsewin = app.root.find("vmm-storage-browser")
|
|
# Test browse local opening
|
|
browsewin.find("Browse Local", "push button").click()
|
|
chooser = app.root.find(
|
|
"Locate existing storage", "file chooser")
|
|
chooser.window_close()
|
|
app.select_storagebrowser_volume(
|
|
"pool-dir", "bochs-vol", doubleclick=True)
|
|
backingstore = win.find("backing-store")
|
|
lib.utils.check(lambda: "bochs-vol" in backingstore.text)
|
|
finish.click()
|
|
vollist.find(newname)
|
|
|
|
# Create a raw volume with some size tweaking
|
|
win = _open_createvol(app, hostwin)
|
|
# Using previous name so we collide
|
|
name.set_text(newname)
|
|
win.combo_select("Format:", "raw")
|
|
sparse = win.find("Allocate", "check box")
|
|
lib.utils.check(lambda: sparse.checked)
|
|
|
|
finish.click()
|
|
app.click_alert_button("Error validating volume", "Close")
|
|
newname = "a-newvol.raw"
|
|
name.set_text(newname)
|
|
finish.click()
|
|
vollist.find(newname)
|
|
|
|
# Create LVM backing store
|
|
hostwin.find("pool-logical", "table cell").click()
|
|
win = _open_createvol(app, hostwin)
|
|
newname = "aaa-lvm"
|
|
name.set_text(newname)
|
|
win.find("Backing store").click_expander()
|
|
win.find("Browse...").click()
|
|
app.select_storagebrowser_volume("pool-logical", "diskvol7")
|
|
sparse.check_not_onscreen()
|
|
finish.click()
|
|
vollist.find(newname)
|
|
|
|
|
|
|
|
def testCreateVolXMLEditor(app):
|
|
app.open(xmleditor_enabled=True)
|
|
hostwin = app.manager_open_host("Storage")
|
|
poolcell = hostwin.find("pool-dir", "table cell")
|
|
poolcell.click()
|
|
win = _open_createvol(app, hostwin)
|
|
finish = win.find("Finish", "push button")
|
|
name = win.find("Name:", "text")
|
|
vollist = hostwin.find("vol-list", "table")
|
|
|
|
# Create a new obj with XML edited name, verify it worked
|
|
tmpname = "objtmpname"
|
|
newname = "aafroofroo"
|
|
name.set_text(tmpname)
|
|
win.find("XML", "page tab").click()
|
|
xmleditor = win.find("XML editor")
|
|
newtext = xmleditor.text.replace(
|
|
">%s.qcow2<" % tmpname, ">%s<" % newname)
|
|
xmleditor.set_text(newtext)
|
|
finish.click()
|
|
lib.utils.check(lambda: hostwin.active)
|
|
vollist.find(newname)
|
|
|
|
# Do standard xmleditor tests
|
|
win = _open_createvol(app, hostwin)
|
|
lib.utils.test_xmleditor_interactions(app, win, finish)
|
|
win.find("Cancel", "push button").click()
|
|
lib.utils.check(lambda: not win.visible)
|