Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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
Exemplo n.º 5
0
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])
Exemplo n.º 7
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])
Exemplo n.º 8
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
Exemplo n.º 13
0
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())
Exemplo n.º 14
0
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)