mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-01-31 01:48:08 +03:00
775edfd5dc
Nowadays with libvirt split daemons, libvirtd isn't required to be installed for a first run local connection to succeed, so we are needlessly blocking the app from 'just working' in many cases. Especially considering that many distros often have libvirt running out of the box due to gnome-boxes pulling it in. Drop the daemon checking entirely. Signed-off-by: Cole Robinson <crobinso@redhat.com>
197 lines
6.0 KiB
Python
197 lines
6.0 KiB
Python
# This work is licensed under the GNU GPLv2 or later.
|
|
# See the COPYING file in the top-level directory.
|
|
|
|
import unittest.mock
|
|
|
|
from . import lib
|
|
|
|
|
|
# UI tests for virt-manager's command line --show options
|
|
|
|
|
|
def testShowNewVM(app):
|
|
app.open(
|
|
uri="test:///default",
|
|
extra_opts=["--show-domain-creator"])
|
|
lib.utils.check(lambda: app.topwin.name == "New VM")
|
|
app.topwin.window_close()
|
|
app.wait_for_exit()
|
|
|
|
|
|
def testShowHost(app):
|
|
app.open(
|
|
uri="test:///default",
|
|
extra_opts=["--show-host-summary"])
|
|
|
|
lib.utils.check(lambda: app.topwin.name == "test default - Connection Details")
|
|
nametext = app.topwin.find_fuzzy("Name:", "text")
|
|
lib.utils.check(lambda: nametext.text == "test default")
|
|
app.topwin.window_close()
|
|
app.wait_for_exit()
|
|
|
|
|
|
def testShowDetails(app):
|
|
app.open(
|
|
extra_opts=["--show-domain-editor", "test-clone-simple"])
|
|
|
|
lib.utils.check(lambda: "test-clone-simple on" in app.topwin.name)
|
|
rlabel = app.topwin.find_fuzzy("Guest is not running", "label")
|
|
lib.utils.check(lambda: not rlabel.showing)
|
|
addhw = app.topwin.find_fuzzy("add-hardware", "button")
|
|
lib.utils.check(lambda: addhw.showing)
|
|
app.topwin.window_close()
|
|
app.wait_for_exit()
|
|
|
|
|
|
def testShowPerformance(app):
|
|
domid = "1"
|
|
app.open(
|
|
uri="test:///default",
|
|
extra_opts=["--show-domain-performance", domid])
|
|
|
|
lib.utils.check(lambda: "test on" in app.topwin.name)
|
|
cpulabel = app.topwin.find_fuzzy("CPU usage", "label")
|
|
lib.utils.check(lambda: cpulabel.showing)
|
|
|
|
|
|
def testShowConsole(app):
|
|
# UUID of test-clone-simple
|
|
uuid = "12345678-1234-ffff-1234-12345678ffff"
|
|
app.open(
|
|
extra_opts=["--show-domain-console", uuid])
|
|
|
|
lib.utils.check(lambda: "test-clone-simple on" in app.topwin.name)
|
|
rlabel = app.topwin.find_fuzzy("Guest is not running", "label")
|
|
lib.utils.check(lambda: rlabel.showing)
|
|
addhw = app.topwin.find_fuzzy("add-hardware", "button")
|
|
lib.utils.check(lambda: not addhw.showing)
|
|
|
|
|
|
def testShowDelete(app):
|
|
app.open(
|
|
uri="test:///default",
|
|
extra_opts=["--show-domain-delete", "test"],
|
|
window_name="Delete")
|
|
# Ensure details opened too
|
|
app.root.find("test on", "frame", check_active=False)
|
|
|
|
delete = app.topwin
|
|
delete.find_fuzzy("Delete", "button").click()
|
|
app.wait_for_exit()
|
|
|
|
|
|
def testShowRemoteDBusConnect(app):
|
|
"""
|
|
Test the remote app dbus connection
|
|
"""
|
|
app.open()
|
|
lib.utils.check(lambda: "testdriver" in app.topwin.fmt_nodes())
|
|
lib.utils.check(lambda: "test default" not in app.topwin.fmt_nodes())
|
|
|
|
def _run_remote(opts):
|
|
newapp = lib.app.VMMDogtailApp("test:///default")
|
|
newapp.open(check_already_running=False,
|
|
extra_opts=opts)
|
|
lib.utils.check(lambda: not newapp.is_running())
|
|
vapps = [a for a in newapp.tree.root.applications() if
|
|
a.name == "virt-manager"]
|
|
lib.utils.check(lambda: len(vapps) == 1)
|
|
# Ensure connection showed up
|
|
app.topwin.find("test default", "table cell")
|
|
|
|
_run_remote([])
|
|
# Run remote again to trigger engine.py code when a connection
|
|
# is already there and connected
|
|
_run_remote(["--show-domain-console=test"])
|
|
|
|
|
|
def testShowCLIError(app):
|
|
# Unknown option
|
|
app.open(
|
|
extra_opts=["--idontexist"])
|
|
app.click_alert_button("Unhandled command line", "Close")
|
|
lib.utils.check(lambda: not app.is_running())
|
|
|
|
# Missing VM
|
|
app.open(
|
|
uri="test:///default",
|
|
extra_opts=["--show-domain-delete", "IDONTEXIST"])
|
|
app.click_alert_button("does not have VM", "Close")
|
|
lib.utils.check(lambda: not app.is_running())
|
|
|
|
# Bad URI
|
|
baduri = "fribfrobfroo"
|
|
app = lib.app.VMMDogtailApp(baduri)
|
|
app.click_alert_button(baduri, "Close")
|
|
lib.utils.check(lambda: not app.is_running())
|
|
|
|
|
|
def testCLIFirstRunURIGood(app):
|
|
# Emulate first run with a URI that will succeed
|
|
app.open(use_uri=False, firstrun_uri="test:///default")
|
|
app.root.find("test default", "table cell")
|
|
|
|
|
|
def testCLIFirstRunURIBad(app):
|
|
# Emulate first run with a URI that will not succeed
|
|
app.open(use_uri=False, firstrun_uri="bad:///uri")
|
|
app.topwin.find("bad uri", "table cell")
|
|
app.click_alert_button("bad:///uri", "Close")
|
|
|
|
|
|
def testCLIFirstRunNoURI(app):
|
|
# Emulate first run with no libvirtd detected
|
|
app.open(use_uri=False, firstrun_uri="")
|
|
errlabel = app.topwin.find("error-label")
|
|
lib.utils.check(
|
|
lambda: "Checking for virtualization" in errlabel.text)
|
|
lib.utils.check(
|
|
lambda: "detect a default hypervisor" in errlabel.text)
|
|
|
|
|
|
def testCLITraceLibvirt(app):
|
|
# Just test this for code coverage
|
|
app.open(keyfile="allstats.ini",
|
|
extra_opts=["--trace-libvirt=mainloop",
|
|
"--test-options=short-poll"])
|
|
app.sleep(.5) # Give time for polling to trigger
|
|
lib.utils.check(lambda: app.topwin.active)
|
|
|
|
|
|
def testCLILeakDebug(app):
|
|
# Just test this for code coverage
|
|
app.open(keyfile="allstats.ini",
|
|
extra_opts=["--test-options=leak-debug",
|
|
"--test-options=short-poll"])
|
|
app.sleep(.5) # Give time for polling to trigger
|
|
app.topwin.window_close()
|
|
app.wait_for_exit()
|
|
|
|
|
|
def testCLINoFirstRun(app):
|
|
# Test a simple case of loading without any config override
|
|
app.open(first_run=False, enable_libguestfs=None, use_uri=False)
|
|
lib.utils.check(lambda: app.topwin.showing)
|
|
|
|
|
|
def testCLINoFork(app):
|
|
# Test app without forking
|
|
app.open(first_run=False, enable_libguestfs=None,
|
|
use_uri=False, no_fork=False)
|
|
app.wait_for_exit()
|
|
app.topwin.window_close()
|
|
lib.utils.check(lambda: not app.has_dbus())
|
|
|
|
|
|
def testCLIGTKArgs(app):
|
|
# Ensure gtk arg passthrough works
|
|
app.open(extra_opts=["--gtk-debug=misc"])
|
|
lib.utils.check(lambda: app.topwin.showing)
|
|
|
|
|
|
@unittest.mock.patch.dict('os.environ', {"DISPLAY": ""})
|
|
def testCLINoDisplay(app):
|
|
# Ensure missing display exits
|
|
app.open(will_fail=True)
|
|
app.wait_for_exit()
|