def infra_map(appliance, source_provider, provider): """Fixture to create infrastructure mapping""" infra_mapping_data = infra_mapping_default_data(source_provider, provider) infra_mapping_collection = appliance.collections.v2v_infra_mappings mapping = infra_mapping_collection.create(**infra_mapping_data) yield mapping infra_mapping_collection.delete(mapping)
def test_v2v_infra_map_special_chars(request, appliance, source_provider, provider, soft_assert): """ Test infra map with special characters Polarion: assignee: ytale initialEstimate: 1/2h caseimportance: low caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V testSteps: 1. Add source and target provider 2. Create infra map with special characters """ map_collection = appliance.collections.v2v_infra_mappings map_data = infra_mapping_default_data(source_provider, provider) map_data["name"] = fauxfactory.gen_special(length=4) mapping = map_collection.create(**map_data) @request.addfinalizer def _cleanup(): map_collection.delete(mapping) view = navigate_to(map_collection, "All") soft_assert(mapping.name in view.infra_mapping_list.read()) view.infra_mapping_list.delete_mapping(mapping.name) view.wait_displayed() try: assert mapping.name not in view.infra_mapping_list.read() except NoSuchElementException: # meaning there was only one mapping that is deleted, list is empty pass
def test_v2v_infra_map_data(request, appliance, source_provider, provider, soft_assert): """ Test to validate infra map data Polarion: assignee: sshveta initialEstimate: 1/2h caseimportance: critical caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V testSteps: 1. Add source and target provider 2. Create infra map 3. Test infra map UI """ map_data = infra_mapping_default_data(source_provider, provider) map_collection = appliance.collections.v2v_infra_mappings mapping = map_collection.create(**map_data) @request.addfinalizer def _cleanup(): map_collection.delete(mapping) view = navigate_to(map_collection, "All") mapping_list = view.infra_mapping_list # Test1: Check custom map in infra map list soft_assert(mapping.name in mapping_list.read()) # Test2: Validate infra map description soft_assert( str(mapping_list.get_map_description(mapping.name)) == mapping.description) # Test3: Source cluster from UI soft_assert(mapping.clusters[0].sources[0].format() in mapping_list.get_map_source_clusters(mapping.name)[0]) # Test4: Target cluster from UI soft_assert(mapping.clusters[0].targets[0].format() in mapping_list.get_map_target_clusters(mapping.name)[0]) # Test5: Source datastore from UI soft_assert(mapping.datastores[0].sources[0].format() in mapping_list.get_map_source_datastores(mapping.name)[0]) # Test6: Target datastore from UI soft_assert(mapping.datastores[0].targets[0].format() in mapping_list.get_map_target_datastores(mapping.name)[0]) # Test5: Source network from UI soft_assert(mapping.networks[0].sources[0].format() in mapping_list.get_map_source_networks(mapping.name)[0]) # Test6: Target network from UI soft_assert(mapping.networks[0].targets[0].format() in mapping_list.get_map_target_networks(mapping.name)[0])
def test_v2v_infra_map_special_chars(request, appliance, source_provider, provider, soft_assert): """ Test infra map with special characters Polarion: assignee: sshveta initialEstimate: 1/2h caseimportance: low caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V testSteps: 1. Add source and target provider 2. Create infra map with special characters """ map_collection = appliance.collections.v2v_infra_mappings map_data = infra_mapping_default_data(source_provider, provider) map_data["name"] = fauxfactory.gen_special(length=4) mapping = map_collection.create(**map_data) @request.addfinalizer def _cleanup(): map_collection.delete(mapping) view = navigate_to(map_collection, "All") soft_assert(mapping.name in view.infra_mapping_list.read()) view.infra_mapping_list.delete_mapping(mapping.name) view.wait_displayed() try: assert mapping.name not in view.infra_mapping_list.read() except NoSuchElementException: # meaning there was only one mapping that is deleted, list is empty pass
def infra_map(appliance, source_provider, provider): """Fixture to create infrastructure mapping""" infra_mapping_data = infra_mapping_default_data( source_provider, provider) infra_mapping_collection = appliance.collections.v2v_infra_mappings mapping = infra_mapping_collection.create(**infra_mapping_data) yield mapping infra_mapping_collection.delete(mapping)
def test_v2v_infra_map_edit(request, appliance, source_provider, provider, source_type, dest_type, template_type, mapping_data_vm_obj_single_datastore, soft_assert): """ Test migration by editing migration mapping fields Polarion: assignee: sshveta initialEstimate: 1/2h caseimportance: high caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V """ map_collection = appliance.collections.v2v_infra_mappings mapping_data = infra_mapping_default_data(source_provider, provider) mapping = map_collection.create(**mapping_data) @request.addfinalizer def _cleanup(): map_collection.delete(mapping) edited_mapping = mapping_data_vm_obj_single_datastore.infra_mapping_data mapping.update(edited_mapping) view = navigate_to(map_collection, 'All') mapping_list = view.infra_mapping_list # Test1: Check custom map in infra map list soft_assert(mapping.name in mapping_list.read()) # Test2: Validate infra map description soft_assert(mapping.description == str( mapping_list.get_map_description(mapping.name))) # Test3: Source cluster from UI soft_assert(mapping.clusters[0].sources[0].format() in mapping_list.get_map_source_clusters(mapping.name)[0]) # Test4: Target cluster from UI soft_assert(mapping.clusters[0].targets[0].format() in mapping_list.get_map_target_clusters(mapping.name)[0]) # Test5: Source datastore from UI soft_assert(mapping.datastores[0].sources[0].format() in mapping_list.get_map_source_datastores(mapping.name)[0]) # Test6: Target datastore from UI soft_assert(mapping.datastores[0].targets[0].format() in mapping_list.get_map_target_datastores(mapping.name)[0]) # Test5: Source network from UI soft_assert(mapping.networks[0].sources[0].format() in mapping_list.get_map_source_networks(mapping.name)[0]) # Test6: Target network from UI soft_assert(mapping.networks[0].targets[0].format() in mapping_list.get_map_target_networks(mapping.name)[0])
def test_v2v_infra_map_data(request, appliance, source_provider, provider, soft_assert): """ Test to validate infra map data Polarion: assignee: ytale initialEstimate: 1/2h caseimportance: critical caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V testSteps: 1. Add source and target provider 2. Create infra map 3. Test infra map UI """ map_data = infra_mapping_default_data(source_provider, provider) map_collection = appliance.collections.v2v_infra_mappings mapping = map_collection.create(**map_data) @request.addfinalizer def _cleanup(): map_collection.delete(mapping) view = navigate_to(map_collection, "All") mapping_list = view.infra_mapping_list # Test1: Check custom map in infra map list soft_assert(mapping.name in mapping_list.read()) # Test2: Validate infra map description soft_assert(str(mapping_list.get_map_description(mapping.name)) == mapping.description) # Test3: Source cluster from UI soft_assert(mapping.clusters[0].sources[0].format() in mapping_list.get_map_source_clusters(mapping.name)[0]) # Test4: Target cluster from UI soft_assert(mapping.clusters[0].targets[0].format() in mapping_list.get_map_target_clusters(mapping.name)[0]) # Test5: Source datastore from UI soft_assert(mapping.datastores[0].sources[0].format() in mapping_list.get_map_source_datastores(mapping.name)[0]) # Test6: Target datastore from UI soft_assert(mapping.datastores[0].targets[0].format() in mapping_list.get_map_target_datastores(mapping.name)[0]) # Test5: Source network from UI soft_assert(mapping.networks[0].sources[0].format() in mapping_list.get_map_source_networks(mapping.name)[0]) # Test6: Target network from UI soft_assert(mapping.networks[0].targets[0].format() in mapping_list.get_map_target_networks(mapping.name)[0])
def test_v2v_infra_map_edit(request, appliance, source_provider, provider, mapping_data_vm_obj_single_datastore, soft_assert): """ Test migration by editing migration mapping fields Polarion: assignee: ytale initialEstimate: 1/2h caseimportance: high caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V """ map_collection = appliance.collections.v2v_infra_mappings mapping_data = infra_mapping_default_data(source_provider, provider) mapping = map_collection.create(**mapping_data) @request.addfinalizer def _cleanup(): map_collection.delete(mapping) edited_mapping = mapping_data_vm_obj_single_datastore.infra_mapping_data mapping.update(edited_mapping) view = navigate_to(map_collection, 'All') mapping_list = view.infra_mapping_list # Test1: Check custom map in infra map list soft_assert(mapping.name in mapping_list.read()) # Test2: Validate infra map description soft_assert(mapping.description == str(mapping_list.get_map_description(mapping.name))) # Test3: Source cluster from UI soft_assert(mapping.clusters[0].sources[0].format() in mapping_list.get_map_source_clusters(mapping.name)[0]) # Test4: Target cluster from UI soft_assert(mapping.clusters[0].targets[0].format() in mapping_list.get_map_target_clusters(mapping.name)[0]) # Test5: Source datastore from UI soft_assert(mapping.datastores[0].sources[0].format() in mapping_list.get_map_source_datastores(mapping.name)[0]) # Test6: Target datastore from UI soft_assert(mapping.datastores[0].targets[0].format() in mapping_list.get_map_target_datastores(mapping.name)[0]) # Test5: Source network from UI soft_assert(mapping.networks[0].sources[0].format() in mapping_list.get_map_source_networks(mapping.name)[0]) # Test6: Target network from UI soft_assert(mapping.networks[0].targets[0].format() in mapping_list.get_map_target_networks(mapping.name)[0])
def test_migration_long_name(request, appliance, provider, source_provider): """Test to check VM name with 64 character should work Polarion: assignee: sshveta initialEstimate: 1/2h casecomponent: V2V """ source_datastores_list = source_provider.data.get("datastores", []) source_datastore = [ d.name for d in source_datastores_list if d.type == "nfs" ][0] collection = appliance.provider_based_collection(source_provider) # Following code will create vm name with 64 characters vm_name = "{vm_name}{extra_words}".format( vm_name=random_vm_name(context="v2v"), extra_words=fauxfactory.gen_alpha(51)) template = _get_template(source_provider, Templates.RHEL7_MINIMAL) vm_obj = collection.instantiate( name=vm_name, provider=source_provider, template_name=template.name, ) vm_obj.create_on_provider(timeout=2400, find_in_cfme=True, allow_skip="default", datastore=source_datastore) request.addfinalizer(lambda: vm_obj.cleanup_on_provider()) mapping_data = infra_mapping_default_data(source_provider, provider) infrastructure_mapping_collection = appliance.collections.v2v_infra_mappings mapping = infrastructure_mapping_collection.create(**mapping_data) @request.addfinalizer def _cleanup(): infrastructure_mapping_collection.delete(mapping) migration_plan_collection = appliance.collections.v2v_migration_plans migration_plan = migration_plan_collection.create( name=fauxfactory.gen_alphanumeric(20, start="long_name_"), description=fauxfactory.gen_alphanumeric(25, start="desc_long_name_"), infra_map=mapping.name, vm_list=[vm_obj], target_provider=provider) assert migration_plan.wait_for_state("Started") assert migration_plan.wait_for_state("In_Progress") assert migration_plan.wait_for_state("Completed") assert migration_plan.wait_for_state("Successful") migrated_vm = get_migrated_vm(vm_obj, provider) assert vm_obj.mac_address == migrated_vm.mac_address
def test_migration_long_name(request, appliance, provider, source_provider): """Test to check VM name with 64 character should work Polarion: assignee: sshveta initialEstimate: 1/2h casecomponent: V2V """ source_datastores_list = source_provider.data.get("datastores", []) source_datastore = [d.name for d in source_datastores_list if d.type == "nfs"][0] collection = appliance.provider_based_collection(source_provider) # Following code will create vm name with 64 characters vm_name = "{vm_name}{extra_words}".format(vm_name=random_vm_name(context="v2v"), extra_words=fauxfactory.gen_alpha(51)) vm_obj = collection.instantiate( name=vm_name, provider=source_provider, template_name=rhel7_minimal(source_provider)["name"], ) vm_obj.create_on_provider( timeout=2400, find_in_cfme=True, allow_skip="default", datastore=source_datastore) request.addfinalizer(lambda: vm_obj.cleanup_on_provider()) mapping_data = infra_mapping_default_data(source_provider, provider) infrastructure_mapping_collection = appliance.collections.v2v_infra_mappings mapping = infrastructure_mapping_collection.create(**mapping_data) @request.addfinalizer def _cleanup(): infrastructure_mapping_collection.delete(mapping) migration_plan_collection = appliance.collections.v2v_migration_plans migration_plan = migration_plan_collection.create( name="long_name_{}".format(fauxfactory.gen_alphanumeric()), description="desc_long_name{}".format(fauxfactory.gen_alphanumeric()), infra_map=mapping.name, vm_list=[vm_obj], target_provider=provider ) assert migration_plan.wait_for_state("Started") assert migration_plan.wait_for_state("In_Progress") assert migration_plan.wait_for_state("Completed") assert migration_plan.wait_for_state("Successful") migrated_vm = get_migrated_vm(vm_obj, provider) assert vm_obj.mac_address == migrated_vm.mac_address
def test_migration_with_edited_mapping(request, appliance, source_provider, provider, source_type, dest_type, template_type, mapping_data_vm_obj_single_datastore): """ Test migration with edited infrastructure mapping. Polarion: assignee: sshveta caseimportance: medium caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V initialEstimate: 1h """ infrastructure_mapping_collection = appliance.collections.v2v_infra_mappings mapping_data = infra_mapping_default_data(source_provider, provider) mapping = infrastructure_mapping_collection.create(**mapping_data) mapping.update(mapping_data_vm_obj_single_datastore.infra_mapping_data) # vm_obj is a list, with only 1 VM object, hence [0] src_vm_obj = mapping_data_vm_obj_single_datastore.vm_list[0] migration_plan_collection = appliance.collections.v2v_migration_plans migration_plan = migration_plan_collection.create( name=fauxfactory.gen_alphanumeric(start="plan_"), description=fauxfactory.gen_alphanumeric(15, start="plan_desc_"), infra_map=mapping.name, vm_list=mapping_data_vm_obj_single_datastore.vm_list, target_provider=provider) assert migration_plan.wait_for_state("Started") assert migration_plan.wait_for_state("In_Progress") assert migration_plan.wait_for_state("Completed") assert migration_plan.wait_for_state("Successful") migrated_vm = get_migrated_vm(src_vm_obj, provider) @request.addfinalizer def _cleanup(): infrastructure_mapping_collection.delete(mapping) cleanup_target(provider, migrated_vm) assert src_vm_obj.mac_address == migrated_vm.mac_address
def test_migration_with_edited_mapping(request, appliance, source_provider, provider, mapping_data_vm_obj_single_datastore): """ Test migration with edited infrastructure mapping. Polarion: assignee: sshveta caseimportance: medium initialEstimate: 1/4h casecomponent: V2V """ infrastructure_mapping_collection = appliance.collections.v2v_infra_mappings mapping_data = infra_mapping_default_data(source_provider, provider) mapping = infrastructure_mapping_collection.create(**mapping_data) @request.addfinalizer def _cleanup(): infrastructure_mapping_collection.delete(mapping) mapping.update(mapping_data_vm_obj_single_datastore.infra_mapping_data) # vm_obj is a list, with only 1 VM object, hence [0] src_vm_obj = mapping_data_vm_obj_single_datastore.vm_list[0] migration_plan_collection = appliance.collections.v2v_migration_plans migration_plan = migration_plan_collection.create( name="plan_{}".format(fauxfactory.gen_alphanumeric()), description="desc_{}".format(fauxfactory.gen_alphanumeric()), infra_map=mapping.name, vm_list=mapping_data_vm_obj_single_datastore.vm_list, target_provider=provider) assert migration_plan.wait_for_state("Started") assert migration_plan.wait_for_state("In_Progress") assert migration_plan.wait_for_state("Completed") assert migration_plan.wait_for_state("Successful") migrated_vm = get_migrated_vm(src_vm_obj, provider) assert src_vm_obj.mac_address == migrated_vm.mac_address
def test_v2v_infra_map_ui(appliance, source_provider, provider, soft_assert): """ Test to validate non-functional UI tests on infrastructure mappings wizard Polarion: assignee: ytale initialEstimate: 1/2h caseimportance: critical caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V testSteps: 1. Add source and target provider 2. Create infra map 3. Validate non-functional tests """ map_collection = appliance.collections.v2v_infra_mappings map_name = fauxfactory.gen_string("alphanumeric", length=26) map_description = fauxfactory.gen_string("alphanumeric", length=130) map_data = infra_mapping_default_data(source_provider, provider) view = navigate_to(map_collection, "Add") # Test1: 24 characters can be entered in name field view.general.name.fill(map_name) soft_assert(len(view.general.name.read()) == 24) # Test2: 128 characters can be entered in description field view.general.name.fill(map_name) view.general.description.fill(map_description) soft_assert(len(view.general.description.read()) == 128) if map_data['plan_type'] == "osp": view.general.plan_type.fill("Red Hat OpenStack Platform") view.general.next_btn.click() # Test3: Source and target clusters can be mapped cluster_view = view.cluster.MappingFillView(object_type='cluster') cluster_view.wait_displayed("5s") cluster_data = { 'source': map_data['clusters'][0].sources, 'target': map_data['clusters'][0].targets} soft_assert(len(cluster_view.source.all_items) > 0) soft_assert(len(cluster_view.target.all_items) > 0) soft_assert( view.cluster.add_mapping.root_browser.get_attribute('disabled', view.cluster.add_mapping)) cluster_view.fill(cluster_data) # Test4: Multiple source and single target clusters can be mapped view.general.remove_all_mappings.click() cluster_data = { 'source': cluster_view.source.all_items, 'target': map_data['clusters'][0].targets} cluster_view.fill(cluster_data) view.general.next_btn.click() # Test5: Single source and single target datastores can be mapped datastore_view = view.datastore.MappingFillView(object_type='datastore') datastore_view.wait_displayed("5s") datastore_data = { 'source': map_data['datastores'][0].sources, 'target': map_data['datastores'][0].targets} soft_assert(len(datastore_view.source.all_items) > 0) soft_assert(len(datastore_view.target.all_items) > 0) soft_assert(view.datastore.add_mapping.root_browser.get_attribute( 'disabled', view.datastore.add_mapping)) datastore_view.fill(datastore_data) # Test6: Multiple source and single target datastores mapping view.general.remove_all_mappings.click() datastore_data = { 'source': datastore_view.source.all_items, 'target': map_data['datastores'][0].targets} datastore_view.fill(datastore_data) view.general.next_btn.click() # Test7: Single source and single target networks can be mapped network_view = view.network.MappingFillView(object_type='network') network_view.wait_displayed("5s") network_data = { 'source': map_data['networks'][0].sources, 'target': map_data['networks'][0].targets} soft_assert(len(network_view.source.all_items) > 0) soft_assert(len(network_view.target.all_items) > 0) soft_assert( view.network.add_mapping.root_browser.get_attribute('disabled', view.network.add_mapping)) network_view.fill(network_data) # Test8: Multiple source and single target networks can be mapped view.general.remove_all_mappings.click() network_data = { 'source': network_view.source.all_items, 'target': map_data['networks'][0].targets} network_view.fill(network_data) view.general.create_btn.click() view.result.close_btn.click() # Test9: Map with duplicate name view = navigate_to(map_collection, 'Add') view.general.name.fill(map_name) view.general.description.fill(map_description) soft_assert('a unique name' in view.general.name_help_text.read())
def test_v2v_plan_ui( request, appliance, source_provider, provider, mapping_data_vm_obj_mini, soft_assert): """ Test to validate non-functional UI tests on migration plan wizard Polarion: assignee: ytale initialEstimate: 2/4h caseimportance: critical caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V testSteps: 1. Add source and target provider 2. Create migration plan 3. Validate non-functional tests """ map_collection = appliance.collections.v2v_infra_mappings plan_collection = appliance.collections.v2v_migration_plans plan_name = fauxfactory.gen_string("alphanumeric", length=10) plan_description = fauxfactory.gen_string("alphanumeric", length=10) map_data = infra_mapping_default_data(source_provider, provider) mapping = map_collection.create(**map_data) @request.addfinalizer def _cleanup(): map_collection.delete(mapping) view = navigate_to(plan_collection, "Add") # Test1: Migration plan name check view.general.infra_map.select_by_visible_text(mapping.name) soft_assert(view.general.infra_map.read() == mapping.name) # Test2: 24 characters can be entered in name field of migration plan view.general.name.fill(fauxfactory.gen_string("alphanumeric", length=26)) soft_assert(len(view.general.name.read()) == 24) view.general.name.fill(plan_name) # Test3: 128 characters can be entered in description field of migration plan view.general.description.fill(fauxfactory.gen_string("alphanumeric", length=130)) soft_assert(len(view.general.description.read()) == 128) view.general.description.fill(plan_description) view.next_btn.click() view.vms.wait_displayed() # Test4: VM number count check soft_assert(len([row for row in view.vms.table.rows()]) > 0) view.vms.fill({"vm_list": mapping_data_vm_obj_mini.vm_list}) if map_data['plan_type'] == "osp": view.instance_properties.wait_displayed() view.next_btn.click() view.advanced.wait_displayed() view.next_btn.click() view.schedule.run_migration.select("Save migration plan to run later") view.schedule.create.click() view.close_btn.click() # Test5: Plan name displayed in migration plan list page new_view = navigate_to(plan_collection, "NotStarted") soft_assert(plan_name in new_view.plans_not_started_list.read()) # Test6: Plan description displayed in migration plan list page soft_assert(new_view.plans_not_started_list.get_plan_description(plan_name) == plan_description) # Test7: VM number displayed in migration plan list page soft_assert(str(len(mapping_data_vm_obj_mini.vm_list)) in new_view.plans_not_started_list.get_vm_count_in_plan(plan_name)) new_view.plans_not_started_list.select_plan(plan_name) new_view = appliance.browser.create_view(MigrationPlanRequestDetailsView, wait='10s') new_view.items_on_page.item_select("15") # Test8: Plan with duplicate name view = navigate_to(plan_collection, "Add") view.general.wait_displayed() view.general.infra_map.select_by_visible_text(mapping.name) view.general.name.fill(plan_name) view.general.description.fill(fauxfactory.gen_string("alphanumeric", length=10)) soft_assert("a unique name" in view.general.name_help_text.read()) view.cancel_btn.click() # Test9: Associated plan check view = navigate_to(map_collection, "All") soft_assert( view.infra_mapping_list.get_associated_plans_count(mapping.name) == '1 Associated Plan') soft_assert(view.infra_mapping_list.get_associated_plans(mapping.name) == plan_name)
def test_v2v_infra_map_ui(appliance, source_provider, provider, soft_assert): """ Test to validate non-functional UI tests on infrastructure mappings wizard Polarion: assignee: sshveta initialEstimate: 1/2h caseimportance: critical caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V testSteps: 1. Add source and target provider 2. Create infra map 3. Validate non-functional tests """ map_collection = appliance.collections.v2v_infra_mappings map_name = fauxfactory.gen_string("alphanumeric", length=26) map_description = fauxfactory.gen_string("alphanumeric", length=130) map_data = infra_mapping_default_data(source_provider, provider) view = navigate_to(map_collection, "Add") # Test1: 24 characters can be entered in name field view.general.name.fill(map_name) soft_assert(len(view.general.name.read()) == 24) # Test2: 128 characters can be entered in description field view.general.name.fill(map_name) view.general.description.fill(map_description) soft_assert(len(view.general.description.read()) == 128) if map_data['plan_type'] == "osp": view.general.plan_type.fill("Red Hat OpenStack Platform") view.general.next_btn.click() # Test3: Source and target clusters can be mapped cluster_view = view.cluster.MappingFillView(object_type='cluster') cluster_view.wait_displayed("5s") cluster_data = { 'source': map_data['clusters'][0].sources, 'target': map_data['clusters'][0].targets } soft_assert(len(cluster_view.source.all_items) > 0) soft_assert(len(cluster_view.target.all_items) > 0) soft_assert( view.cluster.add_mapping.root_browser.get_attribute( 'disabled', view.cluster.add_mapping)) cluster_view.fill(cluster_data) # Test4: Multiple source and single target clusters can be mapped view.general.remove_all_mappings.click() cluster_data = { 'source': cluster_view.source.all_items, 'target': map_data['clusters'][0].targets } cluster_view.fill(cluster_data) view.general.next_btn.click() # Test5: Single source and single target datastores can be mapped datastore_view = view.datastore.MappingFillView(object_type='datastore') datastore_view.wait_displayed("5s") datastore_data = { 'source': map_data['datastores'][0].sources, 'target': map_data['datastores'][0].targets } soft_assert(len(datastore_view.source.all_items) > 0) soft_assert(len(datastore_view.target.all_items) > 0) soft_assert( view.datastore.add_mapping.root_browser.get_attribute( 'disabled', view.datastore.add_mapping)) datastore_view.fill(datastore_data) # Test6: Multiple source and single target datastores mapping view.general.remove_all_mappings.click() datastore_data = { 'source': datastore_view.source.all_items, 'target': map_data['datastores'][0].targets } datastore_view.fill(datastore_data) view.general.next_btn.click() # Test7: Single source and single target networks can be mapped network_view = view.network.MappingFillView(object_type='network') network_view.wait_displayed("5s") network_data = { 'source': map_data['networks'][0].sources, 'target': map_data['networks'][0].targets } soft_assert(len(network_view.source.all_items) > 0) soft_assert(len(network_view.target.all_items) > 0) soft_assert( view.network.add_mapping.root_browser.get_attribute( 'disabled', view.network.add_mapping)) network_view.fill(network_data) # Test8: Multiple source and single target networks can be mapped view.general.remove_all_mappings.click() network_data = { 'source': network_view.source.all_items, 'target': map_data['networks'][0].targets } network_view.fill(network_data) view.general.create_btn.click() view.result.close_btn.click() # Test9: Map with duplicate name view = navigate_to(map_collection, 'Add') view.general.name.fill(map_name) view.general.description.fill(map_description) soft_assert('a unique name' in view.general.name_help_text.read())
def test_v2v_plan_ui(request, appliance, source_provider, provider, mapping_data_vm_obj_mini, soft_assert): """ Test to validate non-functional UI tests on migration plan wizard Polarion: assignee: sshveta initialEstimate: 2/4h caseimportance: critical caseposneg: positive testtype: functional startsin: 5.10 casecomponent: V2V testSteps: 1. Add source and target provider 2. Create migration plan 3. Validate non-functional tests """ map_collection = appliance.collections.v2v_infra_mappings plan_collection = appliance.collections.v2v_migration_plans plan_name = fauxfactory.gen_string("alphanumeric", length=10) plan_description = fauxfactory.gen_string("alphanumeric", length=10) map_data = infra_mapping_default_data(source_provider, provider) mapping = map_collection.create(**map_data) @request.addfinalizer def _cleanup(): map_collection.delete(mapping) view = navigate_to(plan_collection, "Add") # Test1: Migration plan name check view.general.infra_map.select_by_visible_text(mapping.name) soft_assert(view.general.infra_map.read() == mapping.name) # Test2: 24 characters can be entered in name field of migration plan view.general.name.fill(fauxfactory.gen_string("alphanumeric", length=26)) soft_assert(len(view.general.name.read()) == 24) view.general.name.fill(plan_name) # Test3: 128 characters can be entered in description field of migration plan view.general.description.fill( fauxfactory.gen_string("alphanumeric", length=130)) soft_assert(len(view.general.description.read()) == 128) view.general.description.fill(plan_description) view.next_btn.click() view.vms.wait_displayed() # Test4: VM number count check soft_assert(len([row for row in view.vms.table.rows()]) > 0) view.vms.fill({"vm_list": mapping_data_vm_obj_mini.vm_list}) if map_data['plan_type'] == "osp": view.instance_properties.wait_displayed() view.next_btn.click() view.advanced.wait_displayed() view.next_btn.click() view.schedule.run_migration.select("Save migration plan to run later") view.schedule.create.click() view.close_btn.click() # Test5: Plan name displayed in migration plan list page new_view = navigate_to(plan_collection, "NotStarted") soft_assert(plan_name in new_view.plans_not_started_list.read()) # Test6: Plan description displayed in migration plan list page soft_assert( new_view.plans_not_started_list.get_plan_description(plan_name) == plan_description) # Test7: VM number displayed in migration plan list page soft_assert( str(len(mapping_data_vm_obj_mini.vm_list)) in new_view.plans_not_started_list.get_vm_count_in_plan(plan_name)) new_view.plans_not_started_list.select_plan(plan_name) new_view = appliance.browser.create_view(MigrationPlanRequestDetailsView, wait='10s') new_view.items_on_page.item_select("15") # Test8: Plan with duplicate name view = navigate_to(plan_collection, "Add") view.general.wait_displayed() view.general.infra_map.select_by_visible_text(mapping.name) view.general.name.fill(plan_name) view.general.description.fill( fauxfactory.gen_string("alphanumeric", length=10)) soft_assert("a unique name" in view.general.name_help_text.read()) view.cancel_btn.click() # Test9: Associated plan check view = navigate_to(map_collection, "All") soft_assert( view.infra_mapping_list.get_associated_plans_count(mapping.name) == '1 Associated Plan') soft_assert( view.infra_mapping_list.get_associated_plans(mapping.name) == plan_name)