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:
jlopezgu 2016-05-27 12:11:43 -05:00
parent 21dfd683de
commit b450a03282
5 changed files with 54 additions and 22 deletions

View File

@ -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)

View File

@ -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:

View File

@ -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,)

View File

@ -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):

View File

@ -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):