29 from wi.tests
import WiTestCase
35 class VMTests(WiTestCase, unittest.TestCase):
37 def _test_create_vm(self):
41 self.login_testuser(self.TEST_USER)
43 driver.get(self.
base_url +
"/vm/create_vm/")
45 self.wait_for_text(
"//div[@id='item-list']/div[2]/table/tbody", [
"witest_complete"])
47 self.cell_click(
"Name",
"witest_complete",
None, element=
"a",
48 path_head_tds=
"//div[@id='item-list']/div[1]/table/tbody/tr/td",
49 path_body_trs=
"//div[@id='item-list']/div[2]/table/tbody/tr")
51 self.wait_for_text(
"//div[@id='item-list']/div[2]/table/tbody", [
"small"])
53 self.cell_click(
"Name",
"small",
None, element=
"a",
54 path_head_tds=
"//div[@id='item-list']/div[1]/table/tbody/tr/td",
55 path_body_trs=
"//div[@id='item-list']/div[2]/table/tbody/tr")
57 self.wait_for_text(
"//form[@id='wizard-form']/div[2]/fieldset/div/span/label", [
"Assign IP address"])
59 driver.find_element_by_xpath(
"//div[@id='submit-div']/input").click()
61 self.wait_for_text(
"//form[@id='wizard-form']/div[2]/fieldset/div/span/label", [
"Name"])
63 name =
"witest_vm" + str(random.randint(1, 100000))
64 driver.find_element_by_id(
"id_3-name").clear()
65 driver.find_element_by_id(
"id_3-name").send_keys(name)
67 driver.find_element_by_css_selector(
"input.big_button").click()
69 self.wait_for_message([
"Virtual machine is being created."])
71 driver.find_element_by_link_text(
"Logout").click()
75 def _test_edit_vm(self, name):
79 self.login_testuser(self.TEST_USER)
81 driver.get(self.
base_url +
"/vm/show_vm/")
83 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
85 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
87 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr/td/div/ul/li[4]/a", [
"Edit"])
89 driver.find_element_by_link_text(
"Edit").click()
91 self.wait_for_text(
"//div[@id='dialog-div']/form/div/fieldset/div/span", [
"Name"])
93 newname =
"new_witest_vm" + str(random.randint(1, 100000))
94 driver.find_element_by_id(
"id_name").clear()
95 driver.find_element_by_id(
"id_name").send_keys(newname)
96 driver.find_element_by_css_selector(
"button.ok-button.mid_button").click()
98 self.wait_for_message([
"You have successfully edited virtual machine data."])
100 driver.find_element_by_link_text(
"Logout").click()
105 def _test_destroy_vm(self, name):
109 self.login_testuser(self.TEST_USER)
111 driver.get(self.
base_url +
"/vm/show_vm/")
113 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
115 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
117 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr/td/div/ul/li[1]/a", [
"Destroy"])
119 driver.find_element_by_xpath(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr/td/div/ul/li[1]/a").click()
121 self.wait_for_text(
"//div[@id='dialog-div']/p", [
"Do you want to destroy virtual machine"])
123 driver.find_element_by_css_selector(
"button.ok-button.mid_button").click()
125 self.wait_for_message([
"successfully destroyed"])
127 driver.find_element_by_link_text(
"Logout").click()
129 def _test_enable_vnc(self, name):
133 self.login_testuser(self.TEST_USER)
135 driver.get(self.
base_url +
"/vm/show_vm/")
137 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
139 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
141 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr[12]/td/div/ul/li/a", [
"Enable VNC"])
143 driver.find_element_by_link_text(
"Enable VNC").click()
145 self.wait_for_text(
"//div[@id='dialog-div']/p", [
"Do you want to enable VNC?"])
147 driver.find_element_by_css_selector(
"button.ok-button.mid_button").click()
149 self.wait_for_message([
"You have successfully enabled VNC."])
151 driver.find_element_by_link_text(
"Logout").click()
153 def _test_disable_vnc(self, name):
157 self.login_testuser(self.TEST_USER)
159 driver.get(self.
base_url +
"/vm/show_vm/")
161 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
163 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
165 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr[12]/td/div/ul/li/a", [
"Disable VNC"])
167 driver.find_element_by_link_text(
"Disable VNC").click()
169 self.wait_for_text(
"//div[@id='dialog-div']/p", [
"Do you want to disable VNC?"])
171 driver.find_element_by_css_selector(
"button.ok-button.mid_button").click()
173 self.wait_for_message([
"You have successfully disabled VNC."])
175 driver.find_element_by_link_text(
"Logout").click()
177 def _test_reset_vm(self, name):
181 self.login_testuser(self.TEST_USER)
183 driver.get(self.
base_url +
"/vm/show_vm/")
185 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
187 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
189 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr/td/div/ul/li[3]/a", [
"Reset"])
191 driver.find_element_by_xpath(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr/td/div/ul/li[3]/a").click()
193 self.wait_for_text(
"//div[@id='dialog-div']/p", [
"Do you want to reset virtual machine"])
195 driver.find_element_by_css_selector(
"button.ok-button.mid_button").click()
197 self.wait_for_message([
"successfully rebooted"])
199 driver.find_element_by_link_text(
"Logout").click()
201 def _test_assign_disk(self, name, diskname):
205 self.login_testuser(self.TEST_USER)
207 driver.get(self.
base_url +
"/vm/show_vm/")
209 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
211 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
213 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr[7]/td/div/ul/li/a", [
"Assign disk"])
215 driver.find_element_by_xpath(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr[7]/td/div/ul/li/a").click()
217 self.wait_for_text(
"//div[@id='dialog-div']/p", [
"Select a disk to assign:"])
219 driver.find_element_by_xpath(
"//div[@id='dialog-div']/form/div/fieldset/div/span[2]/a/span").click()
220 driver.find_element_by_xpath(
"//a[contains(text(),'" + diskname +
" (10 MB)')]").click()
222 driver.find_element_by_css_selector(
"button.ok-button.mid_button").click()
224 self.wait_for_message([
"Disk has been assigned."])
226 driver.find_element_by_link_text(
"Logout").click()
228 def _test_revoke_disk(self, name, diskname):
232 self.login_testuser(self.TEST_USER)
234 driver.get(self.
base_url +
"/vm/show_vm/")
236 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
238 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
240 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr[7]/td/div/ul/li[2]/a", [
"Revoke disk"])
242 driver.find_element_by_xpath(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr[7]/td/div/ul/li[2]/a").click()
244 self.wait_for_text(
"//div[@id='dialog-div']/form/div/fieldset/div/span/label", [
"Disk"])
246 driver.find_element_by_xpath(
"//div[@id='dialog-div']/form/div/fieldset/div/span[2]/a/span").click()
247 driver.find_element_by_xpath(
"//a[contains(text(),'" + diskname +
"')]").click()
249 driver.find_element_by_css_selector(
"button.ok-button.mid_button").click()
251 self.wait_for_message([
"Disk has been revoked."])
253 driver.find_element_by_link_text(
"Logout").click()
255 def _test_monitoring(self, name):
259 self.login_testuser(self.TEST_USER)
261 driver.get(self.
base_url +
"/vm/show_vm/")
263 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
265 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
267 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr/td/div/ul/li[5]/a", [
"Monitoring"])
269 driver.find_element_by_link_text(
"Monitoring").click()
271 self.wait_for_text(
"//form[@id='monitoring-form']/div[2]/div/ul/li", [
"CPU time"])
273 driver.get(self.
base_url +
"/vm/show_vm/")
275 driver.find_element_by_link_text(
"Logout").click()
277 def _test_assign_ip(self, name):
281 self.login_testuser(self.TEST_USER)
283 driver.get(self.
base_url +
"/vm/show_vm/")
285 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
287 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
289 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr[13]/td[4]/ul/a", [
"Assign"])
291 driver.find_element_by_xpath(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr[13]/td[4]/ul/a").click()
293 driver.find_element_by_xpath(
"//div[@id='dialog-div']/form/div/fieldset/div/span[2]/a/span").click()
294 driver.find_element_by_xpath(
"//a[contains(text(),'.')]").click()
296 self.wait_for_text(
"//div[@id='dialog-div']/p", [
"Select an IP address to assign:"])
298 driver.find_element_by_css_selector(
"button.ok-button.mid_button").click()
300 self.wait_for_message([
"You have successfully assigned selected IP address."])
302 driver.find_element_by_link_text(
"Logout").click()
304 def _test_revoke_ip(self, name):
308 self.login_testuser(self.TEST_USER)
310 driver.get(self.
base_url +
"/vm/show_vm/")
312 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
314 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
316 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr[13]/td[4]/ul/a", [
"."])
318 driver.find_element_by_xpath(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr[13]/td[4]/ul/a").click()
320 self.wait_for_text(
"//div[@id='dialog-div']/p", [
"Do you want to revoke IP address"])
322 driver.find_element_by_css_selector(
"button.ok-button.mid_button").click()
324 self.wait_for_message([
"You have successfully revoked IP address"])
326 driver.find_element_by_link_text(
"Logout").click()
328 def _test_destroy_multiple_vm(self, vm_list):
332 self.login_testuser(self.TEST_USER)
334 driver.get(self.
base_url +
"/vm/show_vm/")
337 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
339 self.cell_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"},
"",
"input")
341 driver.find_element_by_xpath(
"//li[@id='group_action']/a").click()
343 self.wait_for_text(
"//ul[@id='context-menu-list']/li", [
"Destroy"])
345 driver.find_element_by_xpath(
"//ul[@id='context-menu-list']/li[1]").click()
347 self.wait_for_text(
"//div[@id='dialog-div']/p", [
"Do you want to destroy"])
349 driver.find_element_by_css_selector(
"button.ok-button.mid_button").click()
351 self.wait_for_message([
"successfully destroyed"])
353 driver.find_element_by_link_text(
"Logout").click()
355 def _test_edit_vm_description(self, name, description):
359 self.login_testuser(self.TEST_USER)
361 driver.get(self.
base_url +
"/vm/show_vm/")
363 self.wait_for_text(
"//table[@id='item-list']/tbody", [name])
365 self.row_click(
"Name", name, {
"dict": {
"State":
"running"},
"path":
"//table[@id='item-list']/tbody"})
367 self.wait_for_text(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr/td/div/ul/li[4]/a", [
"Edit"])
369 driver.find_element_by_xpath(
"//div[@id='vm_details']/div[5]/div/table/tbody/tr/td/div/ul/li[4]/a").click()
371 self.wait_for_text(
"//span[@id='ui-dialog-title-dialog-div']", [
"Edit virtual machine"])
373 driver.find_element_by_xpath(
"//textarea[@id='id_description']").clear()
374 driver.find_element_by_xpath(
"//textarea[@id='id_description']").send_keys(description)
375 driver.find_element_by_xpath(
"//button[@type='submit']").click()
377 self.wait_for_message([
"You have successfully edited virtual machine data."])
379 driver.find_element_by_link_text(
"Logout").click()
389 diskname = resources_test.ResourcesTests._test_create_disk(self)
395 resources_test.ResourcesTests._test_remove_disk(self, diskname)
400 resources_test.ResourcesTests._test_request_ip(self)
403 resources_test.ResourcesTests._test_release_ip(self)