virt-manager/tests/uitests/test_host.py

184 lines
6.1 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 virt-manager's VM details window #
#################################################
def testHostNetworkSmokeTest(app):
"""
Verify that each virtual network displays, without error.
"""
win = app.manager_open_host("Virtual Networks")
lst = win.find("net-list", "table")
errlabel = win.find("net-error-label", "label")
lib.utils.walkUIList(app, win, lst, lambda: errlabel.showing)
# Select XML editor, and reverse walk the list
win.find("network-grid").find("XML", "page tab").click()
lib.utils.walkUIList(app, win, lst, lambda: errlabel.showing, reverse=True)
def testHostNetworkEdit(app):
"""
Test edits to net config
"""
app.open(xmleditor_enabled=True)
win = app.manager_open_host("Virtual Networks").find("network-grid")
finish = win.find("Apply", "push button")
# Shut it off, do an XML edit, verify it
win.find("default", "table cell").click()
delete = win.find("net-delete", "push button")
stop = win.find("net-stop", "push button")
stop.click()
lib.utils.check(lambda: delete.sensitive)
win.find("XML", "page tab").click()
xmleditor = win.find("XML editor")
origdev = "virbr0"
newdev = "virbr77"
xmleditor.set_text(xmleditor.text.replace(origdev, newdev))
finish.click()
win.find("Details", "page tab").click()
netdev = win.find("net-device")
lib.utils.check(lambda: netdev.text == newdev)
# Rename it
win.find("default", "table cell").click()
win.find("net-name").set_text("newsort-default")
finish.click()
# Change autostart, trigger it by clicking away
win.find("newsort-default", "table cell").click()
win.find("net-autostart").click()
win.find("netboot", "table cell").click()
app.click_alert_button("There are unapplied changes", "Yes")
# Do standard xmleditor tests
lib.utils.test_xmleditor_interactions(app, win, finish)
def testHostStorageSmokeTest(app):
"""
Verify that each storage pool displays, without error.
"""
win = app.manager_open_host("Storage")
lst = win.find("pool-list", "table")
errlabel = win.find("pool-error-label", "label")
lib.utils.walkUIList(app, win, lst, lambda: errlabel.showing)
# Select XML editor, and reverse walk the list
win.find("storage-grid").find("XML", "page tab").click()
lib.utils.walkUIList(app, win, lst, lambda: errlabel.showing, reverse=True)
def testHostStorageEdit(app):
"""
Test edits to pool config
"""
app.open(xmleditor_enabled=True)
win = app.manager_open_host("Storage").find("storage-grid")
finish = win.find("Apply", "push button")
# Shut off a pool, do an XML edit, verify it
win.find("pool-dir", "table cell").click()
delete = win.find("pool-delete", "push button")
stop = win.find("pool-stop", "push button")
stop.click()
lib.utils.check(lambda: delete.sensitive)
win.find("XML", "page tab").click()
xmleditor = win.find("XML editor")
origpath = "/pool-dir"
newpath = "/dev/foo/bar/baz"
xmleditor.set_text(xmleditor.text.replace(origpath, newpath))
finish.click()
win.find("Details", "page tab").click()
poolloc = win.find("pool-location")
lib.utils.check(lambda: poolloc.text == newpath)
# Rename it
win.find("pool-dir", "table cell").click()
win.find("pool-name").set_text("newsort-default")
finish.click()
# Change autostart. Trigger it by clicking on new cell
win.find("newsort-default", "table cell").click()
win.find("pool-autostart").click()
win.find("pool-logical", "table cell").click()
app.click_alert_button("There are unapplied changes", "Yes")
# Do standard xmleditor tests
lib.utils.test_xmleditor_interactions(app, win, finish)
def testHostStorageVolMisc(app):
"""
Misc actions involving volumes
"""
win = app.manager_open_host("Storage").find("storage-grid")
win.find_fuzzy("pool-dir", "table cell").click()
vollist = win.find("vol-list", "table")
vol1 = vollist.find("backingl1.img", "table cell")
vol2 = vollist.find("UPPER", "table cell")
vol1.check_onscreen()
vol2.check_not_onscreen()
win.find("Size", "table column header").click()
win.find("Size", "table column header").click()
vol1.check_not_onscreen()
vol2.check_onscreen()
vol2.click(button=3)
app.root.find("Copy Volume Path", "menu item").click()
from gi.repository import Gdk, Gtk
clipboard = Gtk.Clipboard.get_default(Gdk.Display.get_default())
lib.utils.check(lambda: clipboard.wait_for_text() == "/pool-dir/UPPER")
def testHostConn(app):
"""
Change some connection parameters
"""
manager = app.topwin
# Disconnect the connection
app.manager_conn_disconnect("test testdriver.xml")
# Open Host Details from right click menu
c = manager.find("test testdriver.xml", "table cell")
c.click(button=3)
app.root.find("conn-details", "menu item").click()
win = app.find_window("test testdriver.xml - Connection Details")
# Click the tabs and then back
win.find_fuzzy("Storage", "tab").click()
win.find_fuzzy("Network", "tab").click()
win.find_fuzzy("Overview", "tab").click()
# Toggle autoconnect
win.find("Autoconnect:", "check box").click()
win.find("Autoconnect:", "check box").click()
# Change the name, verify that title bar changed
win.find("Name:", "text").set_text("FOOBAR")
app.find_window("FOOBAR - Connection Details")
# Open the manager window
win.find("File", "menu").click()
win.find("View Manager", "menu item").click()
lib.utils.check(lambda: manager.active)
# Confirm connection row is named differently in manager
manager.find("FOOBAR", "table cell")
# Close the manager
manager.window_close()
lib.utils.check(lambda: win.active)
# Quit app from the file menu
win.find("File", "menu").click()
win.find("Quit", "menu item").click()
lib.utils.check(lambda: not app.is_running())