コード例 #1
0
def test_vm_console(appliance, setup_provider, context, configure_websocket,
                    order_catalog_item_in_ops_ui):
    """Tests Myservice VM Console in SSUI."""
    service_name = order_catalog_item_in_ops_ui
    with appliance.context.use(context):
        appliance.server.login()
        myservice = MyService(appliance, service_name)
        myservice.launch_vm_console()
コード例 #2
0
def test_vm_console_ssui(request, appliance, setup_provider, provider, context,
     configure_console_webmks, configure_console_vnc, order_service, take_screenshot,
     configure_websocket, console_template):
    """Test Myservice VM Console in SSUI.

    Metadata:
        test_flag: ssui

    Polarion:
        assignee: apagac
        casecomponent: Infra
        caseimportance: medium
        initialEstimate: 1/2h
    """
    if provider.one_of(VMwareProvider) and appliance.version < '5.11':
        appliance.server.settings.update_vmware_console({'console_type': 'VNC'})
        request.addfinalizer(lambda: appliance.server.settings.update_vmware_console(
            {'console_type': 'VMware VMRC Plugin'}))
    catalog_item = order_service
    service_name = catalog_item.name
    with appliance.context.use(context):
        myservice = MyService(appliance, service_name)
        vm_obj = myservice.launch_vm_console(catalog_item)
        vm_console = vm_obj.vm_console
        if provider.one_of(OpenStackProvider):
            public_net = provider.data['public_network']
            vm_obj.mgmt.assign_floating_ip(public_net)
        request.addfinalizer(vm_console.close_console_window)
        request.addfinalizer(appliance.server.logout)
        try:
            assert vm_console.wait_for_connect(180), ("VM Console did not reach 'connected'"
                " state")
            # wait for screen text to return non-empty string, which implies console is loaded
            # and has readable text
            wait_for(func=lambda: vm_console.get_screen_text() != '', delay=5, timeout=45)
            assert vm_console.get_screen_text(), "VM Console screen text returned Empty"
        except Exception:
            # Take a screenshot if an exception occurs
            vm_console.switch_to_console()
            take_screenshot("ConsoleScreenshot")
            vm_console.switch_to_appliance()
            raise
コード例 #3
0
def test_vm_console(request, appliance, setup_provider, context,
                    configure_websocket, configure_console_vnc, order_service,
                    take_screenshot, console_template, provider):
    """Test Myservice VM Console in SSUI.

    Metadata:
        test_flag: ssui

    Polarion:
        assignee: apagac
        casecomponent: Infra
        caseimportance: medium
        initialEstimate: 1/2h
    """
    if (provider.one_of(VMwareProvider) and provider.version >= 6.5 or
            'html5_console' in provider.data.get('excluded_test_flags', [])):
        pytest.skip(
            'VNC consoles are unsupported on VMware ESXi 6.5 and later')

    catalog_item = order_service
    service_name = catalog_item.name
    console_vm_username = credentials[
        provider.data.templates.console_template.creds].username
    console_vm_password = credentials[
        provider.data.templates.console_template.creds].password
    with appliance.context.use(context):
        myservice = MyService(appliance, service_name)
        vm_obj = myservice.launch_vm_console(catalog_item)
        vm_console = vm_obj.vm_console
        if provider.one_of(OpenStackProvider):
            public_net = provider.data['public_network']
            vm_obj.mgmt.assign_floating_ip(public_net)
        request.addfinalizer(vm_console.close_console_window)
        request.addfinalizer(appliance.server.logout)
        ssh_who_command = ("who --count"
                           if not provider.one_of(OpenStackProvider) else
                           "who -aH")
        with ssh.SSHClient(hostname=vm_obj.ip_address,
                           username=console_vm_username,
                           password=console_vm_password) as vm_ssh_client:
            try:
                assert vm_console.wait_for_connect(180), (
                    "VM Console did not reach 'connected'"
                    " state")
                user_count_before_login = vm_ssh_client.run_command(
                    ssh_who_command, ensure_user=True)
                logger.info("Output of '{}' is {} before login".format(
                    ssh_who_command, user_count_before_login))
                assert vm_console.wait_for_text(
                    text_to_find="login:"******"VM Console"
                                   " didn't prompt for Login")
                # Enter Username:
                vm_console.send_keys("{}".format(console_vm_username))
                assert vm_console.wait_for_text(
                    text_to_find="Password",
                    timeout=200), ("VM Console"
                                   " didn't prompt for Password")
                # Enter Password:
                vm_console.send_keys("{}".format(console_vm_password))
                logger.info("Wait to get the '$' prompt")
                if not provider.one_of(OpenStackProvider):
                    vm_console.wait_for_text(
                        text_to_find=provider.data.templates.console_template.
                        prompt_text,
                        timeout=200)

                def _validate_login():
                    # the following try/except is required to handle the exception thrown by SSH
                    # while connecting to VMware VM.It throws "[Error 104]Connection reset by Peer".
                    try:
                        user_count_after_login = vm_ssh_client.run_command(
                            ssh_who_command, ensure_user=True)
                        logger.info("Output of '{}' is {} after login".format(
                            ssh_who_command, user_count_after_login))
                        return user_count_before_login < user_count_after_login
                    except Exception as e:
                        logger.info("Exception: {}".format(e))
                        logger.info(
                            "Trying again to perform 'who --count' over ssh.")
                        return False

                # Number of users before login would be 0 and after login would be 180
                # If below assertion would fail user_count_after_login is also 0,
                # denoting login failed
                wait_for(func=_validate_login, timeout=300, delay=5)
                # create file on system
                vm_console.send_keys("touch blather")
                wait_for(func=vm_ssh_client.run_command,
                         func_args=["ls blather"],
                         func_kwargs={'ensure_user': True},
                         fail_condition=lambda result: result.rc != 0,
                         delay=1,
                         num_sec=10)
                # if file was created in previous steps it will be removed here
                # we will get instance of SSHResult
                command_result = vm_ssh_client.run_command("rm blather",
                                                           ensure_user=True)
                assert command_result

            except Exception:
                # Take a screenshot if an exception occurs
                vm_console.switch_to_console()
                take_screenshot("ConsoleScreenshot")
                vm_console.switch_to_appliance()
                raise
コード例 #4
0
def test_vm_console(request, appliance, setup_provider, context, configure_websocket,
        configure_console_vnc, order_catalog_item_in_ops_ui, take_screenshot,
        console_template):
    """Test Myservice VM Console in SSUI."""
    catalog_item = order_catalog_item_in_ops_ui
    service_name = catalog_item.name
    console_vm_username = credentials[catalog_item.provider.data.templates.console_template
                            .creds].username
    console_vm_password = credentials[catalog_item.provider.data.templates.console_template
                            .creds].password
    with appliance.context.use(context):
        myservice = MyService(appliance, service_name)
        vm_obj = myservice.launch_vm_console(catalog_item)
        vm_console = vm_obj.vm_console
        request.addfinalizer(vm_console.close_console_window)
        request.addfinalizer(appliance.server.logout)
        with ssh.SSHClient(hostname=vm_obj.ip_address, username=console_vm_username,
                password=console_vm_password) as vm_ssh_client:
            try:
                assert vm_console.wait_for_connect(180), ("VM Console did not reach 'connected'"
                    " state")
                user_count_before_login = vm_ssh_client.run_command("who --count", ensure_user=True)
                logger.info("Output of who --count is {} before login"
                    .format(user_count_before_login))
                assert vm_console.wait_for_text(text_to_find="login:"******"VM Console"
                    " didn't prompt for Login")
                # Enter Username:
                vm_console.send_keys("{}".format(console_vm_username))
                assert vm_console.wait_for_text(text_to_find="Password", timeout=200), ("VM Console"
                " didn't prompt for Password")
                # Enter Password:
                vm_console.send_keys("{}".format(console_vm_password))
                logger.info("Wait to get the '$' prompt")
                vm_console.wait_for_text(text_to_find=catalog_item.provider.data.templates.
                    console_template.prompt_text, timeout=200)

                def _validate_login():
                    # the following try/except is required to handle the exception thrown by SSH
                    # while connecting to VMware VM.It throws "[Error 104]Connection reset by Peer".
                    try:
                        user_count_after_login = vm_ssh_client.run_command("who --count",
                                                    ensure_user=True)
                        logger.info("Output of 'who --count' is {} after login"
                        .format(user_count_after_login))
                        return user_count_before_login < user_count_after_login
                    except Exception as e:
                        logger.info("Exception: {}".format(e))
                        logger.info("Trying again to perform 'who --count' over ssh.")
                        return False

                # Number of users before login would be 0 and after login would be 180
                # If below assertion would fail user_count_after_login is also 0,
                # denoting login failed
                wait_for(func=_validate_login, timeout=300, delay=5)
                # create file on system
                vm_console.send_keys("touch blather")
                wait_for(func=vm_ssh_client.run_command, func_args=["ls blather"],
                    func_kwargs={'ensure_user': True},
                    fail_condition=lambda result: result.rc != 0, delay=1, num_sec=10)
                # if file was created in previous steps it will be removed here
                # we will get instance of SSHResult
                command_result = vm_ssh_client.run_command("rm blather", ensure_user=True)
                assert command_result

            except Exception as e:
                # Take a screenshot if an exception occurs
                vm_console.switch_to_console()
                take_screenshot("ConsoleScreenshot")
                vm_console.switch_to_appliance()
                raise e
コード例 #5
0
def test_vm_console(request, appliance, setup_provider, context, configure_websocket,
        configure_console_vnc, order_service, take_screenshot,
        console_template, provider):
    """Test Myservice VM Console in SSUI.

    Metadata:
        test_flag: ssui

    Polarion:
        assignee: apagac
        casecomponent: Infra
        caseimportance: medium
        initialEstimate: 1/2h
    """
    if (provider.one_of(VMwareProvider) and provider.version >= 6.5 or
            'html5_console' in provider.data.get('excluded_test_flags', [])):
        pytest.skip('VNC consoles are unsupported on VMware ESXi 6.5 and later')

    catalog_item = order_service
    service_name = catalog_item.name
    console_vm_username = credentials[provider.data.templates.console_template
                            .creds].username
    console_vm_password = credentials[provider.data.templates.console_template
                            .creds].password
    with appliance.context.use(context):
        myservice = MyService(appliance, service_name)
        vm_obj = myservice.launch_vm_console(catalog_item)
        vm_console = vm_obj.vm_console
        if provider.one_of(OpenStackProvider):
            public_net = provider.data['public_network']
            vm_obj.mgmt.assign_floating_ip(public_net)
        request.addfinalizer(vm_console.close_console_window)
        request.addfinalizer(appliance.server.logout)
        ssh_who_command = ("who --count" if not provider.one_of(OpenStackProvider)
            else "who -aH")
        with ssh.SSHClient(hostname=vm_obj.ip_address, username=console_vm_username,
                password=console_vm_password) as vm_ssh_client:
            try:
                assert vm_console.wait_for_connect(180), ("VM Console did not reach 'connected'"
                    " state")
                user_count_before_login = vm_ssh_client.run_command(ssh_who_command,
                    ensure_user=True)
                logger.info("Output of '{}' is {} before login"
                    .format(ssh_who_command, user_count_before_login))
                assert vm_console.wait_for_text(text_to_find="login:"******"VM Console"
                    " didn't prompt for Login")
                # Enter Username:
                vm_console.send_keys("{}".format(console_vm_username))
                assert vm_console.wait_for_text(text_to_find="Password", timeout=200), ("VM Console"
                " didn't prompt for Password")
                # Enter Password:
                vm_console.send_keys("{}".format(console_vm_password))
                logger.info("Wait to get the '$' prompt")
                if not provider.one_of(OpenStackProvider):
                    vm_console.wait_for_text(text_to_find=provider.data.templates.
                        console_template.prompt_text, timeout=200)

                def _validate_login():
                    # the following try/except is required to handle the exception thrown by SSH
                    # while connecting to VMware VM.It throws "[Error 104]Connection reset by Peer".
                    try:
                        user_count_after_login = vm_ssh_client.run_command(ssh_who_command,
                            ensure_user=True)
                        logger.info("Output of '{}' is {} after login"
                            .format(ssh_who_command, user_count_after_login))
                        return user_count_before_login < user_count_after_login
                    except Exception as e:
                        logger.info("Exception: {}".format(e))
                        logger.info("Trying again to perform 'who --count' over ssh.")
                        return False

                # Number of users before login would be 0 and after login would be 180
                # If below assertion would fail user_count_after_login is also 0,
                # denoting login failed
                wait_for(func=_validate_login, timeout=300, delay=5)
                # create file on system
                vm_console.send_keys("touch blather")
                wait_for(func=vm_ssh_client.run_command, func_args=["ls blather"],
                    func_kwargs={'ensure_user': True},
                    fail_condition=lambda result: result.rc != 0, delay=1, num_sec=10)
                # if file was created in previous steps it will be removed here
                # we will get instance of SSHResult
                command_result = vm_ssh_client.run_command("rm blather", ensure_user=True)
                assert command_result

            except Exception as e:
                # Take a screenshot if an exception occurs
                vm_console.switch_to_console()
                take_screenshot("ConsoleScreenshot")
                vm_console.switch_to_appliance()
                raise e
コード例 #6
0
def test_vm_console(request, appliance, setup_provider, context, configure_websocket,
        order_catalog_item_in_ops_ui, take_screenshot, console_template):
    """Test Myservice VM Console in SSUI."""
    catalog_item = order_catalog_item_in_ops_ui
    service_name = catalog_item.name
    console_vm_username = credentials[catalog_item.provider.data.templates.console_template
                            .creds].username
    console_vm_password = credentials[catalog_item.provider.data.templates.console_template
                            .creds].password
    with appliance.context.use(context):
        myservice = MyService(appliance, service_name)
        vm_obj = myservice.launch_vm_console(catalog_item)
        vm_console = vm_obj.vm_console
        request.addfinalizer(vm_console.close_console_window)
        request.addfinalizer(appliance.server.logout)
        with ssh.SSHClient(hostname=vm_obj.ip_address, username=console_vm_username,
                password=console_vm_password) as vm_ssh_client:
            try:
                assert vm_console.wait_for_connect(180), ("VM Console did not reach 'connected'"
                    " state")
                user_count_before_login = vm_ssh_client.run_command("who --count", ensure_user=True)
                logger.info("Output of who --count is {} before login"
                    .format(user_count_before_login))
                assert vm_console.wait_for_text(text_to_find="login:"******"VM Console"
                    " didn't prompt for Login")
                # Enter Username:
                vm_console.send_keys("{}".format(console_vm_username))
                assert vm_console.wait_for_text(text_to_find="Password", timeout=200), ("VM Console"
                " didn't prompt for Password")
                # Enter Password:
                vm_console.send_keys("{}".format(console_vm_password))
                logger.info("Wait to get the '$' prompt")
                vm_console.wait_for_text(text_to_find=catalog_item.provider.data.templates.
                    console_template.prompt_text, timeout=200)

                def _validate_login():
                    # the following try/except is required to handle the exception thrown by SSH
                    # while connecting to VMware VM.It throws "[Error 104]Connection reset by Peer".
                    try:
                        user_count_after_login = vm_ssh_client.run_command("who --count",
                                                    ensure_user=True)
                        logger.info("Output of 'who --count' is {} after login"
                        .format(user_count_after_login))
                        return user_count_before_login < user_count_after_login
                    except Exception as e:
                        logger.info("Exception: {}".format(e))
                        logger.info("Trying again to perform 'who --count' over ssh.")
                        return False

                # Number of users before login would be 0 and after login would be 180
                # If below assertion would fail user_count_after_login is also 0,
                # denoting login failed
                wait_for(func=_validate_login, timeout=300, delay=5)
                # create file on system
                vm_console.send_keys("touch blather")
                wait_for(func=vm_ssh_client.run_command, func_args=["ls blather"],
                    func_kwargs={'ensure_user': True},
                    fail_condition=lambda result: result.rc != 0, delay=1, num_sec=10)
                # if file was created in previous steps it will be removed here
                # we will get instance of SSHResult
                command_result = vm_ssh_client.run_command("rm blather", ensure_user=True)
                assert command_result

            except Exception as e:
                # Take a screenshot if an exception occurs
                vm_console.switch_to_console()
                take_screenshot("ConsoleScreenshot")
                vm_console.switch_to_appliance()
                raise e