1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
# This work is licensed under the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.
import tests.utils
from . import lib
###################################
# UI tests for the migrate dialog #
###################################
def _open_migrate(app, vmname):
app.manager_vm_action(vmname, migrate=True)
return app.find_window("Migrate the virtual machine")
def testMigrateQemu(app):
# Use fake qemu connections
app.uri = tests.utils.URIs.kvm_x86
newuri = (tests.utils.URIs.test_default +
",fakeuri=qemu+tcp://fakehost/system")
app.manager_createconn(newuri)
# Run default migrate
mig = _open_migrate(app, "test-many-devices")
mig.find("Migrate", "push button").click()
app.click_alert_button(
"the.connection.driver:.virDomainMigrate", "Close")
mig.find("Cancel", "push button").click()
lib.utils.check(lambda: not mig.showing)
# Run with deselected URI
mig = _open_migrate(app, "test-many-devices")
mig.find("address-check").click()
label = mig.find("Let libvirt decide")
label.check_onscreen()
mig.find("Migrate", "push button").click()
app.click_alert_button(
"the.connection.driver:.virDomainMigrate", "Close")
mig.find("Cancel", "push button").click()
lib.utils.check(lambda: not mig.showing)
# Run with tunnelled and other options
mig = _open_migrate(app, "test-many-devices")
mig.combo_select("Mode:", "Tunnelled")
mig.find("Advanced", "toggle button").click_expander()
mig.find("Allow unsafe:", "check box").click()
mig.find("Temporary", "check box").click()
mig.find("Migrate", "push button").click()
app.click_alert_button("p2p migration", "Close")
mig.find("Cancel", "push button").click()
lib.utils.check(lambda: not mig.showing)
def testMigrateXen(app):
# Use fake xen connections
app.uri = tests.utils.URIs.test_full + ",fakeuri=xen:///"
fakeremotexen = (tests.utils.URIs.test_default +
",fakeuri=xen+tcp://fakehost/")
app.manager_createconn(fakeremotexen)
# Run default migrate
mig = _open_migrate(app, "test-many-devices")
mig.find("Migrate", "push button").click()
app.click_alert_button(
"the.connection.driver:.virDomainMigrate", "Close")
mig.find("Cancel", "push button").click()
lib.utils.check(lambda: not mig.showing)
def testMigrateMock(app):
"""
Trigger the mock migration testing we have to emulate success
"""
# Add an additional connection
app.manager_createconn("test:///default")
# Run it and check some values
mig = _open_migrate(app, "test-many-devices")
mig.find("address-text").set_text("TESTSUITE-FAKE")
mig.find("Migrate", "push button").click()
progwin = app.find_window("Migrating VM")
# Attempt cancel which will fail, then find the error message
progwin.find("Cancel", "push button").click()
progwin.find("Error cancelling migrate job")
lib.utils.check(lambda: not progwin.showing, timeout=5)
lib.utils.check(lambda: not mig.showing)
def testMigrateConnMismatch(app):
# Add a possible target but disconnect it
app.uri = tests.utils.URIs.test_default
manager = app.topwin
manager.window_maximize()
manager.click()
app.manager_conn_disconnect("test default")
# Add a mismatched hv connection
fakexen = tests.utils.URIs.test_empty + ",fakeuri=xen:///"
app.manager_createconn(fakexen)
# Open dialog and confirm no conns are available
app.manager_createconn(tests.utils.URIs.test_full)
mig = _open_migrate(app, "test-many-devices")
mig.find("conn-combo").find("No usable", "menu item")
# Test explicit dialog 'delete'
mig.window_close()
# Ensure disconnecting will close the dialog
manager.click_title()
mig = _open_migrate(app, "test-many-devices")
app.manager_conn_disconnect("test testdriver.xml")
lib.utils.check(lambda: not mig.showing)
def testMigrateXMLEditor(app):
app.open(xmleditor_enabled=True)
manager = app.topwin
# Add an additional connection
app.manager_createconn("test:///default")
# Run it and check some values
vmname = "test-many-devices"
win = _open_migrate(app, vmname)
win.find("address-text").set_text("TESTSUITE-FAKE")
# Create a new obj with XML edited name, verify it worked
newname = "aafroofroo"
win.find("XML", "page tab").click()
xmleditor = win.find("XML editor")
newtext = xmleditor.text.replace(
">%s<" % vmname, ">%s<" % newname)
xmleditor.set_text(newtext)
win.find("Migrate", "push button").click()
lib.utils.check(lambda: not win.showing, timeout=10)
manager.find(newname, "table cell")
# Do standard xmleditor tests
win = _open_migrate(app, vmname)
win.find("address-text").set_text("TESTSUITE-FAKE")
finish = win.find("Migrate", "push button")
lib.utils.test_xmleditor_interactions(app, win, finish)
win.find("Cancel", "push button").click()
lib.utils.check(lambda: not win.visible)
|