Improved table deletion efficiency
Volumes and instances integration tests deleted and validated entities one row at a time, now they are able to delete and validate multiple rows at a time. Change-Id: I7f8fdc7e0ccefdd0f6d71f9f92c8a2aefeec8d54 Closes-bug: #1585209
This commit is contained in:
parent
21dfd683de
commit
b450a03282
openstack_dashboard/test/integration_tests
pages/project/compute
regions
tests
@ -68,6 +68,10 @@ class InstancesPage(basepage.BaseNavigationPage):
|
||||
return self.instances_table.get_row(self.INSTANCES_TABLE_NAME_COLUMN,
|
||||
name)
|
||||
|
||||
def _get_rows_with_instances_names(self, names):
|
||||
return [self.instances_table.get_row(
|
||||
self.INSTANCES_TABLE_IMAGE_NAME_COLUMN, n) for n in names]
|
||||
|
||||
@property
|
||||
def instances_table(self):
|
||||
return InstancesTable(self.driver, self.conf)
|
||||
@ -110,10 +114,20 @@ class InstancesPage(basepage.BaseNavigationPage):
|
||||
confirm_delete_instances_form = self.instances_table.delete_instance()
|
||||
confirm_delete_instances_form.submit()
|
||||
|
||||
def delete_instances(self, instances_names):
|
||||
for instance_name in instances_names:
|
||||
self._get_row_with_instance_name(instance_name).mark()
|
||||
confirm_delete_instances_form = self.instances_table.delete_instance()
|
||||
confirm_delete_instances_form.submit()
|
||||
|
||||
def is_instance_deleted(self, name):
|
||||
return self.instances_table.is_row_deleted(
|
||||
lambda: self._get_row_with_instance_name(name))
|
||||
|
||||
def are_instances_deleted(self, instances_names):
|
||||
return self.instances_table.are_rows_deleted(
|
||||
lambda: self._get_rows_with_instances_names(instances_names))
|
||||
|
||||
def is_instance_active(self, name):
|
||||
def cell_getter():
|
||||
row = self._get_row_with_instance_name(name)
|
||||
|
@ -104,6 +104,10 @@ class VolumesPage(basepage.BaseNavigationPage):
|
||||
return self.volumes_table.get_row(
|
||||
self.VOLUMES_TABLE_NAME_COLUMN, name)
|
||||
|
||||
def _get_rows_with_volumes_names(self, names):
|
||||
return [self.volumes_table.get_row(self.VOLUMES_TABLE_NAME_COLUMN, n)
|
||||
for n in names]
|
||||
|
||||
@property
|
||||
def volumes_table(self):
|
||||
return VolumesTable(self.driver, self.conf)
|
||||
@ -137,6 +141,12 @@ class VolumesPage(basepage.BaseNavigationPage):
|
||||
confirm_delete_volumes_form = self.volumes_table.delete_volume()
|
||||
confirm_delete_volumes_form.submit()
|
||||
|
||||
def delete_volumes(self, volumes_names):
|
||||
for volume_name in volumes_names:
|
||||
self._get_row_with_volume_name(volume_name).mark()
|
||||
confirm_delete_volumes_form = self.volumes_table.delete_volume()
|
||||
confirm_delete_volumes_form.submit()
|
||||
|
||||
def edit_volume(self, name, new_name=None, description=None):
|
||||
row = self._get_row_with_volume_name(name)
|
||||
volume_edit_form = self.volumes_table.edit_volume(row)
|
||||
@ -160,6 +170,10 @@ class VolumesPage(basepage.BaseNavigationPage):
|
||||
return self.volumes_table.is_row_deleted(
|
||||
lambda: self._get_row_with_volume_name(name))
|
||||
|
||||
def are_volumes_deleted(self, volumes_names):
|
||||
return self.volumes_table.are_rows_deleted(
|
||||
lambda: self._get_rows_with_volumes_names(volumes_names))
|
||||
|
||||
def _get_source_name(self, volume_form, volume_source_type, conf,
|
||||
volume_source):
|
||||
if volume_source_type == IMAGE_SOURCE_TYPE:
|
||||
|
@ -150,12 +150,12 @@ class TableRegion(baseregion.BaseRegion):
|
||||
return [RowRegion(self.driver, self.conf, elem, self.column_names)
|
||||
for elem in self._get_elements(*self._rows_locator)]
|
||||
|
||||
def is_row_deleted(self, row_getter):
|
||||
def _is_row_deleted(self, evaluator):
|
||||
def predicate(driver):
|
||||
if self._is_element_present(*self._empty_table_locator):
|
||||
return True
|
||||
with self.waits_disabled():
|
||||
return not self._is_element_displayed(row_getter())
|
||||
return evaluator()
|
||||
try:
|
||||
self._wait_until(predicate)
|
||||
except exceptions.TimeoutException:
|
||||
@ -164,6 +164,15 @@ class TableRegion(baseregion.BaseRegion):
|
||||
return True
|
||||
return True
|
||||
|
||||
def is_row_deleted(self, row_getter):
|
||||
return self._is_row_deleted(
|
||||
lambda: not self._is_element_displayed(row_getter()))
|
||||
|
||||
def are_rows_deleted(self, rows_getter):
|
||||
return self._is_row_deleted(
|
||||
lambda: all([not self._is_element_displayed(row) for row
|
||||
in rows_getter()]))
|
||||
|
||||
def wait_cell_status(self, cell_getter, statuses):
|
||||
if not isinstance(statuses, (list, tuple)):
|
||||
statuses = (statuses,)
|
||||
|
@ -73,7 +73,6 @@ class TestInstances(helpers.TestCase):
|
||||
second_page_definition = {'Next': False, 'Prev': False,
|
||||
'Count': items_per_page,
|
||||
'Names': [instance_list[0]]}
|
||||
|
||||
settings_page = self.home_pg.go_to_settings_usersettingspage()
|
||||
settings_page.change_pagesize(items_per_page)
|
||||
self.assertTrue(
|
||||
@ -104,11 +103,10 @@ class TestInstances(helpers.TestCase):
|
||||
settings_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
|
||||
instances_page = self.instances_page
|
||||
for instance_name in instance_list:
|
||||
instances_page.delete_instance(instance_name)
|
||||
self.assertTrue(
|
||||
instances_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertTrue(instances_page.is_instance_deleted(instance_name))
|
||||
instances_page.delete_instances(instance_list)
|
||||
self.assertTrue(
|
||||
instances_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertTrue(instances_page.are_instances_deleted(instance_list))
|
||||
|
||||
def test_instances_pagination_and_filtration(self):
|
||||
"""This test checks instance pagination and filtration
|
||||
@ -176,11 +174,10 @@ class TestInstances(helpers.TestCase):
|
||||
settings_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
|
||||
instances_page = self.instances_page
|
||||
for instance_name in instance_list:
|
||||
instances_page.delete_instance(instance_name)
|
||||
self.assertTrue(
|
||||
instances_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertTrue(instances_page.is_instance_deleted(instance_name))
|
||||
instances_page.delete_instances(instance_list)
|
||||
self.assertTrue(
|
||||
instances_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertTrue(instances_page.are_instances_deleted(instance_list))
|
||||
|
||||
def test_filter_instances(self):
|
||||
"""This test checks filtering of instances by Instance Name
|
||||
@ -225,11 +222,10 @@ class TestInstances(helpers.TestCase):
|
||||
self.assertEqual(instances_page.instances_table.rows, [])
|
||||
instances_page.instances_table.filter('')
|
||||
|
||||
for instance in instance_list:
|
||||
instances_page.delete_instance(instance)
|
||||
self.assertTrue(
|
||||
instances_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertTrue(instances_page.is_instance_deleted(instance))
|
||||
instances_page.delete_instances(instance_list)
|
||||
self.assertTrue(
|
||||
instances_page.find_message_and_dismiss(messages.SUCCESS))
|
||||
self.assertTrue(instances_page.are_instances_deleted(instance_list))
|
||||
|
||||
|
||||
class TestAdminInstances(helpers.AdminTestCase, TestInstances):
|
||||
|
@ -140,10 +140,9 @@ class TestVolumesBasic(helpers.TestCase):
|
||||
settings_page.find_message_and_dismiss(messages.SUCCESS)
|
||||
|
||||
volumes_page = self.volumes_page
|
||||
for volume_name in volumes_names:
|
||||
volumes_page.delete_volume(volume_name)
|
||||
volumes_page.find_message_and_dismiss(messages.SUCCESS)
|
||||
self.assertTrue(volumes_page.is_volume_deleted(volume_name))
|
||||
volumes_page.delete_volumes(volumes_names)
|
||||
volumes_page.find_message_and_dismiss(messages.SUCCESS)
|
||||
self.assertTrue(volumes_page.are_volumes_deleted(volumes_names))
|
||||
|
||||
|
||||
class TestAdminVolumes(helpers.AdminTestCase, TestVolumesBasic):
|
||||
|
Loading…
x
Reference in New Issue
Block a user