Added tests create windows services in muranodashboard-tests
Change-Id: Ibe74d7a9a0923c48e6d1086094badbaf3613bea5
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import testtools
|
||||
import ConfigParser
|
||||
import random
|
||||
|
||||
from selenium import webdriver
|
||||
import selenium.webdriver.common.by as by
|
||||
@@ -29,6 +30,7 @@ class UITestCase(testtools.TestCase):
|
||||
cls.linux_image = cfg.common.linux_image
|
||||
cls.windows_image = cfg.common.windows_image
|
||||
cls.keypair = cfg.common.keypair_name
|
||||
cls.asp_git_repository = cfg.common.asp_git_repository
|
||||
|
||||
cls.elements = ConfigParser.RawConfigParser()
|
||||
cls.elements.read('common.ini')
|
||||
@@ -47,13 +49,13 @@ class UITestCase(testtools.TestCase):
|
||||
self.murano_client.environments.delete(env.id)
|
||||
|
||||
def log_in(self):
|
||||
self.find_clean_send(by.By.ID, 'id_username', cfg.common.user)
|
||||
self.find_clean_send(by.By.ID, 'id_password', cfg.common.password)
|
||||
self.fill_field(by.By.ID, 'id_username', cfg.common.user)
|
||||
self.fill_field(by.By.ID, 'id_password', cfg.common.password)
|
||||
sign_in = self.elements.get('button', 'ButtonSubmit')
|
||||
self.driver.find_element_by_xpath(sign_in).click()
|
||||
self.navigate_to_environments()
|
||||
|
||||
def find_clean_send(self, by_find, find_element, send):
|
||||
def fill_field(self, by_find, find_element, send):
|
||||
self.driver.find_element(by=by_find, value=find_element).clear()
|
||||
self.driver.find_element(by=by_find, value=find_element).send_keys(send)
|
||||
|
||||
@@ -64,7 +66,7 @@ class UITestCase(testtools.TestCase):
|
||||
def create_environment(self, env_name):
|
||||
self.driver.find_element_by_id(
|
||||
'murano__action_CreateEnvironment').click()
|
||||
self.find_clean_send(by.By.ID, 'id_name', env_name)
|
||||
self.fill_field(by.By.ID, 'id_name', env_name)
|
||||
create = self.elements.get('button', 'InputSubmit')
|
||||
self.driver.find_element_by_xpath(create).click()
|
||||
|
||||
@@ -77,7 +79,7 @@ class UITestCase(testtools.TestCase):
|
||||
def edit_environment(self, old_name, new_name):
|
||||
self.click_on_more(old_name)
|
||||
self.click_on_edit(old_name)
|
||||
self.find_clean_send(by.By.ID, 'id_name', new_name)
|
||||
self.fill_field(by.By.ID, 'id_name', new_name)
|
||||
save = self.elements.get('button', 'InputSubmit')
|
||||
self.driver.find_element_by_xpath(save).click()
|
||||
|
||||
@@ -128,7 +130,7 @@ class UITestCase(testtools.TestCase):
|
||||
Next = self.elements.get('button', 'Next')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.find_clean_send(by.By.ID, 'id_demoService-0-name', service_name)
|
||||
self.fill_field(by.By.ID, 'id_demoService-0-name', service_name)
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
@@ -143,7 +145,7 @@ class UITestCase(testtools.TestCase):
|
||||
Next = self.elements.get('button', 'Next')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.find_clean_send(by.By.ID, 'id_linuxTelnetService-0-name',
|
||||
self.fill_field(by.By.ID, 'id_linuxTelnetService-0-name',
|
||||
service_name)
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
@@ -162,7 +164,7 @@ class UITestCase(testtools.TestCase):
|
||||
Next = self.elements.get('button', 'Next')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.find_clean_send(by.By.ID, 'id_linuxApacheService-0-name',
|
||||
self.fill_field(by.By.ID, 'id_linuxApacheService-0-name',
|
||||
service_name)
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
@@ -173,6 +175,196 @@ class UITestCase(testtools.TestCase):
|
||||
Next = self.elements.get('button', 'Create')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
def create_ad_service(self, service_name):
|
||||
self.driver.find_element_by_id('services__action_CreateService').click()
|
||||
|
||||
self.select_from_list('service_choice-service', 'Active Directory')
|
||||
Next = self.elements.get('button', 'Next')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_activeDirectory-0-name', service_name)
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_activeDirectory-0-adminPassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_activeDirectory-0-adminPassword-clone', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_activeDirectory-0-recoveryPassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_activeDirectory-0-recoveryPassword-clone', 'P@ssw0rd')
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.select_from_list('activeDirectory-1-osImage', self.windows_image)
|
||||
Next = self.elements.get('button', 'Create')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
def create_iis_service(self, service_name):
|
||||
self.driver.find_element_by_id('services__action_CreateService').click()
|
||||
|
||||
self.select_from_list(
|
||||
'service_choice-service', 'Internet Information Services')
|
||||
Next = self.elements.get('button', 'Next')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.fill_field(by.By.ID, 'id_webServer-0-name', service_name)
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_webServer-0-adminPassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_webServer-0-adminPassword-clone', 'P@ssw0rd')
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.select_from_list('webServer-1-osImage', self.windows_image)
|
||||
Next = self.elements.get('button', 'Create')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
def create_asp_service(self, service_name):
|
||||
self.driver.find_element_by_id('services__action_CreateService').click()
|
||||
|
||||
self.select_from_list('service_choice-service', 'ASP.NET Application')
|
||||
Next = self.elements.get('button', 'Next')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.fill_field(by.By.ID, 'id_aspNetApp-0-name', service_name)
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_aspNetApp-0-adminPassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_aspNetApp-0-adminPassword-clone', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_aspNetApp-0-repository', self.asp_git_repository)
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.select_from_list('aspNetApp-1-osImage', self.windows_image)
|
||||
Next = self.elements.get('button', 'Create')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
def create_iisfarm_service(self, service_name):
|
||||
self.driver.find_element_by_id('services__action_CreateService').click()
|
||||
|
||||
self.select_from_list(
|
||||
'service_choice-service', 'Internet Information Services Web Farm')
|
||||
Next = self.elements.get('button', 'Next')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.fill_field(by.By.ID, 'id_webServerFarm-0-name', service_name)
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_webServerFarm-0-adminPassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_webServerFarm-0-adminPassword-clone', 'P@ssw0rd')
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.select_from_list('webServerFarm-1-osImage', self.windows_image)
|
||||
Next = self.elements.get('button', 'Create')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
def create_aspfarm_service(self, service_name):
|
||||
self.driver.find_element_by_id('services__action_CreateService').click()
|
||||
|
||||
self.select_from_list(
|
||||
'service_choice-service', 'ASP.NET Application Web Farm')
|
||||
Next = self.elements.get('button', 'Next')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.fill_field(by.By.ID, 'id_aspNetAppFarm-0-name', service_name)
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_aspNetAppFarm-0-adminPassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_aspNetAppFarm-0-adminPassword-clone', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_aspNetAppFarm-0-repository', self.asp_git_repository)
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.select_from_list('aspNetAppFarm-1-osImage', self.windows_image)
|
||||
Next = self.elements.get('button', 'Create')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
def create_mssql_service(self, service_name):
|
||||
self.driver.find_element_by_id('services__action_CreateService').click()
|
||||
|
||||
self.select_from_list('service_choice-service', 'MS SQL Server')
|
||||
Next = self.elements.get('button', 'Next')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.fill_field(by.By.ID, 'id_msSqlServer-0-name', service_name)
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlServer-0-adminPassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlServer-0-adminPassword-clone', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlServer-0-saPassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlServer-0-saPassword-clone', 'P@ssw0rd')
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.select_from_list('msSqlServer-1-osImage', self.windows_image)
|
||||
Next = self.elements.get('button', 'Create')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
def create_sql_cluster_service(self, service_name, domain_name):
|
||||
self.driver.find_element_by_id('services__action_CreateService').click()
|
||||
|
||||
self.select_from_list('service_choice-service', 'MS SQL Server Cluster')
|
||||
Next = self.elements.get('button', 'Next')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-0-name', service_name)
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-0-adminPassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-0-adminPassword-clone', 'P@ssw0rd')
|
||||
self.select_from_list('msSqlClusterServer-0-domain', domain_name)
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-0-saPassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-0-saPassword-clone', 'P@ssw0rd')
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-1-clusterIp', '1.1.1.1')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-1-clusterName', 'cluster')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-1-agGroupName', 'ag-name')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-1-agListenerName', 'listener_name')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-1-agListenerIP', 'listener_name')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-1-sqlServiceUserName', 'admin')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-1-sqlServicePassword', 'P@ssw0rd')
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-1-sqlServicePassword-clone',
|
||||
'P@ssw0rd')
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
cluster_ip = self.get_env_subnet()
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-1-clusterIp', cluster_ip)
|
||||
listener_ip = self.get_env_subnet()
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-1-agListenerIP', listener_ip)
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.fill_field(
|
||||
by.By.ID, 'id_msSqlClusterServer-2-databases', 'testbase')
|
||||
Next = self.elements.get('button', 'Next2')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
self.select_from_list(
|
||||
'msSqlClusterServer-3-osImage', self.windows_image)
|
||||
Next = self.elements.get('button', 'Create')
|
||||
self.driver.find_element_by_xpath(Next).click()
|
||||
|
||||
def get_element_id(self, element_name):
|
||||
path = self.driver.find_element_by_link_text(
|
||||
element_name).get_attribute("href")
|
||||
@@ -183,3 +375,10 @@ class UITestCase(testtools.TestCase):
|
||||
self.driver.find_element_by_id('services__row_%s__action_delete'
|
||||
% id).click()
|
||||
self.driver.find_element_by_link_text('Delete Service').click()
|
||||
|
||||
def get_env_subnet(self):
|
||||
help_text = self.driver.find_element_by_xpath(
|
||||
"(.//span[@class = 'help-inline'])[1]").text
|
||||
subnet = help_text.split('.')[-2]
|
||||
num = random.randint(0, 255)
|
||||
return '10.0.%s.%d' % (subnet, num)
|
||||
@@ -33,7 +33,10 @@ CommonGroup = [
|
||||
help='image for windows services'),
|
||||
cfg.StrOpt('keypair_name',
|
||||
default='default_key',
|
||||
help='keypair for murano services')
|
||||
help='keypair for murano services'),
|
||||
cfg.StrOpt('asp_git_repository',
|
||||
default='git://github.com/',
|
||||
help='git repository with asp application')
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -9,3 +9,4 @@ demo_image = demo_image
|
||||
linux_image = linux_image
|
||||
windows_image = windows_image
|
||||
keypair_name = default_keypair
|
||||
asp_git_repository = git_repo_for_asp_app
|
||||
|
||||
@@ -33,7 +33,7 @@ class UISanityTests(UITestCase):
|
||||
'marked_images__action_mark_image').click()
|
||||
|
||||
self.select_from_list('image', 'TestImageForDeletion')
|
||||
self.find_clean_send(by.By.ID, 'id_title', 'New Image')
|
||||
self.fill_field(by.By.ID, 'id_title', 'New Image')
|
||||
self.select_from_list('type', ' Windows Server 2012')
|
||||
|
||||
mark = self.elements.get('button', 'MarkImage')
|
||||
@@ -46,7 +46,7 @@ class UISanityTests(UITestCase):
|
||||
'marked_images__action_mark_image').click()
|
||||
|
||||
self.select_from_list('image', 'TestImageForDeletion')
|
||||
self.find_clean_send(by.By.ID, 'id_title', 'Image for deletion')
|
||||
self.fill_field(by.By.ID, 'id_title', 'Image for deletion')
|
||||
self.select_from_list('type', ' Windows Server 2012')
|
||||
|
||||
mark = self.elements.get('button', 'MarkImage')
|
||||
@@ -102,4 +102,114 @@ class UISanityTests(UITestCase):
|
||||
self.delete_service('linuxapache')
|
||||
|
||||
self.assertFalse(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'linuxapache'))
|
||||
'linuxapache'))
|
||||
|
||||
def test_create_and_delete_ad_service(self):
|
||||
self.log_in()
|
||||
self.navigate_to_environments()
|
||||
self.create_environment('test')
|
||||
self.env_to_service('test')
|
||||
self.create_ad_service('muranotest.domain')
|
||||
|
||||
self.assertTrue(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'muranotest.domain'))
|
||||
|
||||
self.delete_service('muranotest.domain')
|
||||
|
||||
self.assertFalse(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'muranotest.domain'))
|
||||
|
||||
def test_create_and_delete_iis_service(self):
|
||||
self.log_in()
|
||||
self.navigate_to_environments()
|
||||
self.create_environment('test')
|
||||
self.env_to_service('test')
|
||||
self.create_iis_service('IISService')
|
||||
|
||||
self.assertTrue(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'IISService'))
|
||||
|
||||
self.delete_service('IISService')
|
||||
|
||||
self.assertFalse(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'IISService'))
|
||||
|
||||
def test_create_and_delete_asp_service(self):
|
||||
self.log_in()
|
||||
self.navigate_to_environments()
|
||||
self.create_environment('test')
|
||||
self.env_to_service('test')
|
||||
self.create_asp_service('ASPService')
|
||||
|
||||
self.assertTrue(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'ASPService'))
|
||||
|
||||
self.delete_service('ASPService')
|
||||
|
||||
self.assertFalse(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'ASPService'))
|
||||
|
||||
def test_create_and_delete_iisfarm_service(self):
|
||||
self.log_in()
|
||||
self.navigate_to_environments()
|
||||
self.create_environment('test')
|
||||
self.env_to_service('test')
|
||||
self.create_iisfarm_service('IISFarmService')
|
||||
|
||||
self.assertTrue(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'IISFarmService'))
|
||||
|
||||
self.delete_service('IISFarmService')
|
||||
|
||||
self.assertFalse(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'IISFarmService'))
|
||||
|
||||
def test_create_and_delete_aspfarm_service(self):
|
||||
self.log_in()
|
||||
self.navigate_to_environments()
|
||||
self.create_environment('test')
|
||||
self.env_to_service('test')
|
||||
self.create_aspfarm_service('ASPFarmService')
|
||||
|
||||
self.assertTrue(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'ASPFarmService'))
|
||||
|
||||
self.delete_service('ASPFarmService')
|
||||
|
||||
self.assertFalse(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'ASPFarmService'))
|
||||
|
||||
def test_create_and_delete_mssql_service(self):
|
||||
self.log_in()
|
||||
self.navigate_to_environments()
|
||||
self.create_environment('test')
|
||||
self.env_to_service('test')
|
||||
self.create_mssql_service('ASPFarmService')
|
||||
|
||||
self.assertTrue(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'MSSQLService'))
|
||||
|
||||
self.delete_service('MSSQLService')
|
||||
|
||||
self.assertFalse(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'MSSQLService'))
|
||||
|
||||
def test_create_and_delete_sql_cluster_service(self):
|
||||
self.log_in()
|
||||
self.navigate_to_environments()
|
||||
self.create_environment('test')
|
||||
self.env_to_service('test')
|
||||
self.create_ad_service('activeDirectory.mssql')
|
||||
|
||||
self.assertTrue(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'activeDirectory.mssql'))
|
||||
|
||||
self.driver.find_element_by_link_text('Create Service').click()
|
||||
self.create_sql_cluster_service('SQLCluster', 'activeDirectory.mssql')
|
||||
self.assertTrue(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'SQLCluster'))
|
||||
|
||||
self.delete_service('SQLCluster')
|
||||
|
||||
self.assertFalse(self.check_element_on_page(by.By.LINK_TEXT,
|
||||
'SQLCluster'))
|
||||
|
||||
Reference in New Issue
Block a user