cc1  v2.1
CC1 source code docs
 All Classes Namespaces Files Functions Variables Pages
resources_test.py
Go to the documentation of this file.
1 # -*- coding: utf-8 -*-
2 # @COPYRIGHT_begin
3 #
4 # Copyright [2010-2014] Institute of Nuclear Physics PAN, Krakow, Poland
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 # http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18 # @COPYRIGHT_end
19 
20 # -*- coding: utf-8 -*-
21 ##
22 # @package src.wi.tests.resources_test
23 #
24 # @author Piotr Wójcik
25 # @author Krzysztof Danielowski
26 # @date 30.10.2012
27 #
28 
29 from wi.tests import WiTestCase
30 import cm_networks_test
31 import unittest
32 import random
33 
34 
35 class ResourcesTests(WiTestCase, unittest.TestCase):
36  @staticmethod
37  def _test_upload_iso(self):
38  driver = self.driver
39  self.base_url = self.TEST_SERVER
40 
41  self.login_testuser(self.TEST_USER)
42 
43  driver.get(self.base_url + "/resources/iso/")
44 
45  self.wait_for_text("//table[@id='item-list']/tfoot/tr/td/ul/li/a", ["Upload ISO image"])
46 
47  driver.find_element_by_link_text("Upload ISO image").click()
48 
49  self.wait_for_text("//div[@id='dialog-div']/p", ["Please specify ISO image parameters:"])
50 
51  name = "witest_iso" + str(random.randint(1, 100000))
52 
53  driver.find_element_by_id("id_name").clear()
54  driver.find_element_by_id("id_name").send_keys(name)
55  driver.find_element_by_id("id_description").clear()
56  driver.find_element_by_id("id_description").send_keys(self.iso)
57  driver.find_element_by_id("id_path").clear()
58  driver.find_element_by_id("id_path").send_keys(self.iso)
59  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
60 
61  self.wait_for_message(["ISO image upload started."])
62 
63  driver.find_element_by_link_text("Logout").click()
64 
65  return name
66 
67  def _test_edit_iso(self, name):
68  driver = self.driver
69  self.base_url = self.TEST_SERVER
70 
71  self.login_testuser(self.TEST_USER)
72 
73  driver.get(self.base_url + "/resources/iso/")
74 
75  self.wait_for_text("//table[@id='item-list']/tbody", [name])
76 
77  self.menu_click("Name", name, "Edit", {"dict": {"Size": "B"}, "path": "//table[@id='item-list']/tbody"})
78 
79  self.wait_for_text("//div[@id='dialog-div']/p", ["Edit ISO image data:"])
80 
81  newname = "new_witest_iso" + str(random.randint(1, 100000))
82  driver.find_element_by_id("id_name").clear()
83  driver.find_element_by_id("id_name").send_keys(newname)
84  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
85 
86  self.wait_for_message(["ISO image data edited."])
87 
88  driver.find_element_by_link_text("Logout").click()
89 
90  return newname
91 
92  def _test_remove_iso(self, name):
93  driver = self.driver
94  self.base_url = self.TEST_SERVER
95 
96  self.login_testuser(self.TEST_USER)
97 
98  driver.get(self.base_url + "/resources/iso/")
99 
100  self.wait_for_text("//table[@id='item-list']/tbody", [name])
101 
102  self.menu_click("Name", name, "Delete")
103 
104  self.wait_for_text("//div[@id='dialog-div']/p", ["Do you really want to delete ISO image"])
105 
106  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
107 
108  self.wait_for_message(["You have successfully deleted ISO image"])
109 
110  driver.find_element_by_link_text("Logout").click()
111 
112  @staticmethod
113  def _test_create_disk(self):
114  driver = self.driver
115  self.base_url = self.TEST_SERVER
116 
117  self.login_testuser(self.TEST_USER)
118 
119  driver.get(self.base_url + "/resources/disks/")
120 
121  self.wait_for_text("//table[@id='item-list']/tfoot/tr/td/ul/li/a", ["Create new disk"])
122 
123  driver.find_element_by_link_text("Create new disk").click()
124 
125  self.wait_for_text("//div[@id='dialog-div']/p", ["Specify disk properties:"])
126 
127  name = "witest_disk" + str(random.randint(1, 100000))
128  driver.find_element_by_id("id_name").clear()
129  driver.find_element_by_id("id_name").send_keys(name)
130  driver.find_element_by_id("id_description").clear()
131  driver.find_element_by_id("id_description").send_keys("10 MB")
132  driver.find_element_by_id("id_size").clear()
133  driver.find_element_by_id("id_size").send_keys("10")
134  driver.find_element_by_xpath("//form/div/fieldset/div[4]/span[2]/a/span").click()
135  driver.find_element_by_xpath("//a[contains(text(),'" + "virtio" + "')]").click()
136  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
137 
138  self.wait_for_message(["Disk is being created."])
139 
140  driver.find_element_by_link_text("Logout").click()
141 
142  return name
143 
144  def _test_upload_disk(self):
145  driver = self.driver
146  self.base_url = self.TEST_SERVER
147 
148  self.login_testuser(self.TEST_USER)
149 
150  driver.get(self.base_url + "/resources/disks/")
151 
152  self.wait_for_text("//table[@id='item-list']/tfoot/tr/td/ul/li/a", ["Upload disk"])
153 
154  driver.find_element_by_link_text("Upload disk image").click()
155 
156  self.wait_for_text("//div[@id='dialog-div']/p", ["Please specify disk parameters:"])
157 
158  name = "witest_disk" + str(random.randint(1, 100000))
159 
160  driver.find_element_by_id("id_name").clear()
161  driver.find_element_by_id("id_name").send_keys(name)
162  driver.find_element_by_id("id_description").clear()
163  driver.find_element_by_id("id_description").send_keys(self.iso)
164  driver.find_element_by_id("id_path").clear()
165  driver.find_element_by_id("id_path").send_keys(self.iso)
166  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
167 
168  self.wait_for_message(["Disk upload started."])
169 
170  driver.find_element_by_link_text("Logout").click()
171 
172  return name
173 
174  def _test_edit_disk(self, name, newname):
175  driver = self.driver
176  self.base_url = self.TEST_SERVER
177 
178  self.login_testuser(self.TEST_USER)
179 
180  driver.get(self.base_url + "/resources/disks/")
181 
182  self.wait_for_text("//table[@id='item-list']/tbody", [name])
183 
184  self.menu_click("Name", name, "Edit", {"dict": {"Size": "B"}, "path": "//table[@id='item-list']/tbody"})
185 
186  self.wait_for_text("//div[@id='dialog-div']/p", ["Edit disk data"])
187 
188  driver.find_element_by_id("id_name").clear()
189  driver.find_element_by_id("id_name").send_keys(newname)
190  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
191 
192  self.wait_for_message(["You have successfully edited selected disk."])
193 
194  driver.find_element_by_link_text("Logout").click()
195 
196  @staticmethod
197  def _test_remove_disk(self, name):
198  driver = self.driver
199  self.base_url = self.TEST_SERVER
200 
201  self.login_testuser(self.TEST_USER)
202 
203  driver.get(self.base_url + "/resources/disks/")
204 
205  self.wait_for_text("//table[@id='item-list']/tbody", [name])
206 
207  self.menu_click("Name", name, "Delete", {"dict": {"Size": "B"}, "path": "//table[@id='item-list']/tbody"})
208 
209  self.wait_for_text("//div[@id='dialog-div']/p", ["Do you really want to delete disk volume"])
210 
211  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
212 
213  self.wait_for_message(["You have successfully deleted disk"])
214 
215  driver.find_element_by_link_text("Logout").click()
216 
217  def _test_request_network(self):
218  driver = self.driver
219  self.base_url = self.TEST_SERVER
220 
221  self.login_testuser(self.TEST_USER)
222 
223  driver.get(self.base_url + "/resources/networks/")
224 
225  self.wait_for_text("//table[@id='item-list']/tfoot/tr/td/ul/li/a", ["Add a new network"])
226 
227  driver.find_element_by_link_text("Add a new network").click()
228 
229  self.wait_for_text("//div[@id='dialog-div']/form/div/fieldset/div/span", ["Network name"])
230 
231  name = "witest_network" + str(random.randint(1, 100000))
232  driver.find_element_by_id("id_name").clear()
233  driver.find_element_by_id("id_name").send_keys(name)
234  driver.find_element_by_id("id_mask").clear()
235  driver.find_element_by_id("id_mask").send_keys("28")
236  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
237 
238  self.wait_for_message(["You have successfully added a network"])
239 
240  driver.find_element_by_link_text("Logout").click()
241 
242  return name
243 
244  def _test_release_network(self, name):
245  driver = self.driver
246  self.base_url = self.TEST_SERVER
247 
248  self.login_testuser(self.TEST_USER)
249 
250  driver.get(self.base_url + "/resources/networks/")
251 
252  self.wait_for_text("//table[@id='item-list']/tbody", [name])
253 
254  self.cell_click("Name", name, element="a")
255 
256  self.wait_for_text("//div[@id='dialog-div']/p", ["Do you want to release network"])
257 
258  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
259 
260  self.wait_for_message(["You have successfully released network"])
261 
262  driver.find_element_by_link_text("Logout").click()
263 
264  @staticmethod
265  def _test_request_ip(self):
266  driver = self.driver
267  self.base_url = self.TEST_SERVER
268 
269  self.login_testuser(self.TEST_USER)
270 
271  driver.get(self.base_url + "/resources/elastic_ip/")
272 
273  self.wait_for_text("//table[@id='item-list']/tfoot/tr/td/ul/li/a", ["Add a new IP"])
274 
275  driver.find_element_by_link_text("Add a new IP").click()
276 
277  self.wait_for_text("//div[@id='dialog-div']/p", ["Do you want to add an IP address?"])
278 
279  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
280 
281  self.wait_for_message(["New IP address has been added."])
282 
283  driver.find_element_by_link_text("Logout").click()
284 
285  @staticmethod
286  def _test_release_ip(self):
287  driver = self.driver
288  self.base_url = self.TEST_SERVER
289 
290  self.login_testuser(self.TEST_USER)
291 
292  driver.get(self.base_url + "/resources/elastic_ip/")
293 
294  self.wait_for_text("//table[@id='item-list']/tbody", ["not assigned"])
295 
296  self.cell_click("Attached to machine", "not assigned", element="a")
297 
298  self.wait_for_text("//div[@id='dialog-div']/p", ["Do you want to release IP address"])
299 
300  driver.find_element_by_css_selector("button.ok-button.mid_button").click()
301 
302  self.wait_for_message(["has been released."])
303 
304  driver.find_element_by_link_text("Logout").click()
305 
307  name = self._test_create_disk(self)
308  newname = "new_witest_disk" + str(random.randint(1, 100000))
309  self._test_edit_disk(name, newname)
310  self._test_remove_disk(self, newname)
311 
312  def test_2_simple_iso(self):
313  name = self._test_upload_iso(self)
314  newname = self._test_edit_iso(name)
315  self._test_remove_iso(newname)
316 
318  cm_networks_test.CMNetworksTests._test_add_pool(self)
319  name = self._test_request_network()
320  name2 = self._test_request_network()
321  self._test_release_network(name)
322  self._test_release_network(name2)
323  cm_networks_test.CMNetworksTests._test_delete_pool(self)
324 
325  def test_4_simple_ip(self):
326  self._test_request_ip(self)
327  self._test_release_ip(self)
328 
329  def test_5_utf8_edit(self):
330  name = self._test_create_disk(self)
331  newname = u'ąłę楣'
332  self._test_edit_disk(name, newname)
333  self._test_remove_disk(self, newname)
334 
336  name = self._test_upload_disk()
337  self._test_remove_disk(self, name)
338