Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Fukász Rómeó Ervin
/
cloud
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
68bc38c8
authored
Mar 10, 2015
by
Csók Tamás
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
selenium: logging and a few extra
parent
3159f5f9
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
34 additions
and
25 deletions
+34
-25
circle/acl/tests/models.py
+5
-1
circle/circle/settings/selenium_test.py
+2
-1
circle/dashboard/tests/selenium/basic_tests.py
+27
-23
No files found.
circle/acl/tests/models.py
View file @
68bc38c8
...
...
@@ -15,4 +15,8 @@
# You should have received a copy of the GNU General Public License along
# with CIRCLE. If not, see <http://www.gnu.org/licenses/>.
from
.test_acl
import
TestModel
,
Test2Model
# noqa
from
django.conf
import
settings
# https://code.djangoproject.com/ticket/7835
if
settings
.
SETTINGS_MODULE
==
'circle.settings.test'
:
from
.test_acl
import
TestModel
,
Test2Model
# noqa
circle/circle/settings/selenium_test.py
View file @
68bc38c8
...
...
@@ -40,7 +40,8 @@ INSTALLED_APPS += (
)
TEST_RUNNER
=
'django_nose.NoseTestSuiteRunner'
path_to_selenium_test
=
os
.
path
.
expanduser
(
'~/circle/circle/dashboard/tests/selenium'
)
path_to_selenium_test
=
os
.
path
.
join
(
SITE_ROOT
,
"dashboard/tests/selenium"
)
NOSE_ARGS
=
[
'--stop'
,
'--with-doctest'
,
'--with-selenium-driver'
,
'--selenium-driver=firefox'
,
'-w
%
s'
%
path_to_selenium_test
]
PASSWORD_HASHERS
=
[
'django.contrib.auth.hashers.MD5PasswordHasher'
]
...
...
circle/dashboard/tests/selenium/basic_tests.py
View file @
68bc38c8
...
...
@@ -22,12 +22,14 @@ import random
import
urlparse
import
re
import
time
import
logging
from
selenium.webdriver.support.ui
import
WebDriverWait
from
selenium.webdriver.support
import
expected_conditions
as
ec
from
selenium.webdriver.support.select
import
Select
from
selenium.webdriver.common.by
import
By
from
datetime
import
datetime
from
selenium.common.exceptions
import
NoSuchElementException
logging
.
getLogger
(
__name__
)
random_pass
=
""
.
join
([
random
.
choice
(
'0123456789abcdefghijklmnopqrstvwxyz'
)
for
n
in
xrange
(
10
)])
random_accents
=
random_pass
+
""
.
join
([
random
.
choice
(
...
...
@@ -75,7 +77,7 @@ class UtilityMixin(object):
except
:
time
.
sleep
(
0.5
)
except
:
raise
E
xception
(
'Selenium cannot find the form controls'
)
logging
.
e
xception
(
'Selenium cannot find the form controls'
)
def
list_options
(
self
,
select
):
try
:
...
...
@@ -87,7 +89,7 @@ class UtilityMixin(object):
option_dic
[
key
]
=
[
option
.
text
]
return
option_dic
except
:
raise
E
xception
(
logging
.
e
xception
(
'Selenium cannot list the select possibilities'
)
def
select_option
(
self
,
select
,
what
=
None
):
...
...
@@ -118,7 +120,7 @@ class UtilityMixin(object):
0
,
len
(
my_choose_list
)
-
1
)]
select
.
select_by_value
(
my_choice
)
except
:
raise
E
xception
(
logging
.
e
xception
(
'Selenium cannot select the chosen one'
)
def
get_link_by_href
(
self
,
target_href
,
attributes
=
None
):
...
...
@@ -138,7 +140,7 @@ class UtilityMixin(object):
if
perfect_fit
:
return
link
except
:
raise
E
xception
(
logging
.
e
xception
(
'Selenium cannot find the href=
%
s link'
%
target_href
)
def
click_on_link
(
self
,
link
):
...
...
@@ -165,7 +167,7 @@ class UtilityMixin(object):
"}"
)
self
.
driver
.
execute_script
(
javascript
,
link
)
except
:
raise
E
xception
(
logging
.
e
xception
(
'Selenium cannot inject javascript to the page'
)
def
wait_and_accept_operation
(
self
,
argument
=
None
):
...
...
@@ -190,8 +192,8 @@ class UtilityMixin(object):
form
.
send_keys
(
argument
)
accept
.
click
()
except
:
raise
Exception
(
"Selenium cannot accept the"
" operation confirmation"
)
logging
.
exception
(
'Selenium cannot accept the operation confirmation'
)
def
save_template_from_vm
(
self
,
name
):
try
:
...
...
@@ -206,7 +208,7 @@ class UtilityMixin(object):
if
not
self
.
check_operation_result
(
recent_deploy
):
print
(
"Selenium cannot deploy the "
"chosen template virtual machine"
)
raise
E
xception
(
'Cannot deploy the virtual machine'
)
logging
.
e
xception
(
'Cannot deploy the virtual machine'
)
self
.
click_on_link
(
WebDriverWait
(
self
.
driver
,
wait_max_sec
)
.
until
(
ec
.
element_to_be_clickable
((
By
.
CSS_SELECTOR
,
...
...
@@ -217,7 +219,7 @@ class UtilityMixin(object):
if
not
self
.
check_operation_result
(
recent_shut_off
):
print
(
"Selenium cannot shut off the "
"chosen template virtual machine"
)
raise
E
xception
(
'Cannot shut off the virtual machine'
)
logging
.
e
xception
(
'Cannot shut off the virtual machine'
)
self
.
click_on_link
(
WebDriverWait
(
self
.
driver
,
wait_max_sec
)
.
until
(
ec
.
element_to_be_clickable
((
By
.
CSS_SELECTOR
,
...
...
@@ -225,7 +227,7 @@ class UtilityMixin(object):
self
.
wait_and_accept_operation
(
name
)
return
name
except
:
raise
E
xception
(
logging
.
e
xception
(
'Selenium cannot save a vm as a template'
)
def
create_base_template
(
self
,
name
=
None
,
architecture
=
"x86-64"
,
...
...
@@ -261,7 +263,7 @@ class UtilityMixin(object):
"input.btn[type='submit']"
)
.
click
()
return
self
.
save_template_from_vm
(
name
)
except
:
raise
E
xception
(
logging
.
e
xception
(
'Selenium cannot create a base template virtual machine'
)
def
get_template_id
(
self
,
name
=
None
,
from_all
=
False
):
...
...
@@ -312,7 +314,7 @@ class UtilityMixin(object):
'name'
:
name
})
return
found_template_ids
except
:
raise
E
xception
(
logging
.
e
xception
(
'Selenium cannot found the template
\'
s id'
)
def
check_operation_result
(
self
,
operation_id
,
restore
=
True
):
...
...
@@ -350,7 +352,7 @@ class UtilityMixin(object):
self
.
driver
.
get
(
url_save
)
return
out
except
:
raise
E
xception
(
logging
.
e
xception
(
'Selenium cannot check the result of an operation'
)
def
recently
(
self
,
timeline_dict
,
second
=
90
):
...
...
@@ -362,7 +364,7 @@ class UtilityMixin(object):
if
delta
.
total_seconds
()
<=
second
:
return
value
except
:
raise
E
xception
(
logging
.
e
xception
(
'Selenium cannot filter timeline activities to recent'
)
def
get_timeline_elements
(
self
,
code
=
None
):
...
...
@@ -395,7 +397,7 @@ class UtilityMixin(object):
activity_dict
[
key
]
=
activity_id
return
activity_dict
except
:
raise
E
xception
(
'Selenium cannot find the searched activity'
)
logging
.
e
xception
(
'Selenium cannot find the searched activity'
)
def
create_template_from_base
(
self
,
delete_disk
=
True
,
name
=
None
):
try
:
...
...
@@ -433,10 +435,11 @@ class UtilityMixin(object):
if
not
self
.
check_operation_result
(
recent_remove_disk
):
print
(
"Selenium cannot delete disk "
"of the chosen template"
)
raise
E
xception
(
'Cannot delete disk'
)
logging
.
e
xception
(
'Cannot delete disk'
)
return
self
.
save_template_from_vm
(
name
)
except
:
raise
Exception
(
'Selenium cannot start a template from a base one'
)
logging
.
exception
(
'Selenium cannot start a template from a base one'
)
def
delete_template
(
self
,
template_id
):
try
:
...
...
@@ -451,9 +454,10 @@ class UtilityMixin(object):
By
.
CLASS_NAME
,
'alert-success'
)))
url
=
urlparse
.
urlparse
(
self
.
driver
.
current_url
)
if
"/template/list/"
not
in
url
.
path
:
raise
Exception
()
logging
.
exception
(
'System does not redirect to template listing'
)
except
:
raise
E
xception
(
'Selenium cannot delete the desired template'
)
logging
.
e
xception
(
'Selenium cannot delete the desired template'
)
def
create_random_vm
(
self
):
try
:
...
...
@@ -474,7 +478,7 @@ class UtilityMixin(object):
pk
=
re
.
search
(
r'\d+'
,
url
.
path
)
.
group
()
return
pk
except
:
raise
E
xception
(
'Selenium cannot start a VM'
)
logging
.
e
xception
(
'Selenium cannot start a VM'
)
def
view_change
(
self
,
target_box
):
driver
=
self
.
driver
...
...
@@ -522,7 +526,7 @@ class UtilityMixin(object):
print
(
"Selenium cannot destroy "
"the chosen
%(id)
s vm"
%
{
'id'
:
pk
})
raise
E
xception
(
'Cannot destroy the specified vm'
)
logging
.
e
xception
(
'Cannot destroy the specified vm'
)
self
.
driver
.
get
(
'
%
s/dashboard/vm/
%
s/'
%
(
host
,
pk
))
try
:
WebDriverWait
(
self
.
driver
,
wait_max_sec
)
.
until
(
...
...
@@ -533,7 +537,7 @@ class UtilityMixin(object):
except
:
return
False
except
:
raise
E
xception
(
"Selenium can not destroy a VM"
)
logging
.
e
xception
(
"Selenium can not destroy a VM"
)
class
VmDetailTest
(
UtilityMixin
,
SeleniumTestCase
):
...
...
@@ -571,7 +575,7 @@ class VmDetailTest(UtilityMixin, SeleniumTestCase):
chosen
=
template_pool
[
0
]
else
:
print
"Selenium did not found any templates"
raise
E
xception
(
logging
.
e
xception
(
"System did not meet required conditions to continue"
)
self
.
driver
.
get
(
'
%
s/dashboard/template/
%
s/'
%
(
host
,
chosen
))
acces_form
=
self
.
driver
.
find_element_by_css_selector
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment