24bb1a344b432677c72c74dcc9678b378b650e51
[integration/test.git] / csit / libraries / DevstackUtils.robot
1 *** Settings ***
2 Documentation     General Utils library. This library has broad scope, it can be used by any robot system tests.
3 Library           SSHLibrary
4 Library           String
5 Library           DateTime
6 Library           Process
7 Library           Collections
8 Library           RequestsLibrary
9 Library           ./UtilLibrary.py
10 Resource          KarafKeywords.robot
11 Resource          OpenStackOperations.robot
12 Variables         ../variables/Variables.py
13
14 *** Variables ***
15 ${default_devstack_prompt_timeout}    10s
16 ${DEVSTACK_SYSTEM_PASSWORD}    \    # set to empty, but provide for others to override if desired
17
18 *** Keywords ***
19 Run Tempest Tests
20     [Arguments]    ${tempest_regex}    ${exclusion_file}=/dev/null    ${tempest_conf}=""    ${tempest_directory}=/opt/stack/tempest    ${timeout}=600s
21     [Documentation]    Execute the tempest tests.
22     Return From Keyword If    "skip_if_${OPENSTACK_BRANCH}" in @{TEST_TAGS}
23     Return From Keyword If    "skip_if_${SECURITY_GROUP_MODE}" in @{TEST_TAGS}
24     ${devstack_conn_id}=    Get ControlNode Connection
25     Switch Connection    ${devstack_conn_id}
26     # There seems to be a bug in the mitaka version of os-testr that does not allow --regex to work in conjunction
27     # with a blacklist-file. Upgrading with pip should resolve this. This can probably go away once mitaka is no
28     # longer tested in this environment. But, while it's being tested the mitaka devstack setup will be bringing
29     # in this broken os-testr, so we manually upgrade here.
30     Write Commands Until Prompt    sudo pip install os-testr --upgrade    timeout=120s
31     Write Commands Until Prompt    source ${DEVSTACK_DEPLOY_PATH}/openrc admin admin
32     Write Commands Until Prompt    cd ${tempest_directory}
33     # From Ocata and moving forward, we can replace 'ostestr' with 'tempest run'
34     ${results}=    Write Commands Until Prompt    ostestr --regex ${tempest_regex} -b ${exclusion_file}    timeout=${timeout}
35     Log    ${results}
36     # Save stdout to file
37     Create File    tempest_output_${tempest_regex}.log    data=${results}
38     # output tempest generated log file which may have different debug levels than what stdout would show
39     # FIXME: having the INFO level tempest logs is helpful as it gives details like the UUIDs of nouns used in the
40     # the tests which can sometimes be tracked in ODL and Openstack logs when debugging. However, this "cat" step
41     # does not even complete for the tempest.api.network tests in under 2min. We need a faster way to get this
42     # info. Probably pulling the log file and storing it on the log server is best. Hopefully someone can get
43     # to this. For now, commenting out this next debug step.
44     # ${output}=    Write Commands Until Prompt    cat ${tempest_directory}/tempest.log    timeout=120s
45     # Log    ${output}
46     Should Contain    ${results}    Failed: 0
47     # TODO: also need to verify some non-zero pass count as well as other results are ok (e.g. skipped, etc)
48
49 Devstack Suite Setup
50     [Arguments]    ${source_pwd}=no    ${odl_ip}=${ODL_SYSTEM_IP}
51     [Documentation]    Login to the Openstack Control Node to run tempest suite
52     Create Session    session    http://${odl_ip}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
53     ${devstack_conn_id}=    SSHLibrary.Open Connection    ${OS_CONTROL_NODE_IP}    prompt=${DEFAULT_LINUX_PROMPT}
54     Set Suite Variable    ${devstack_conn_id}
55     Set Suite Variable    ${source_pwd}
56     Log    ${devstack_conn_id}
57     Utils.Flexible SSH Login    ${OS_USER}    ${DEVSTACK_SYSTEM_PASSWORD}
58     SSHLibrary.Set Client Configuration    timeout=${default_devstack_prompt_timeout}
59
60 Write Commands Until Prompt
61     [Arguments]    ${cmd}    ${timeout}=${default_devstack_prompt_timeout}
62     [Documentation]    quick wrapper for Write and Read Until Prompt Keywords to make test cases more readable
63     Log    ${cmd}
64     SSHLibrary.Set Client Configuration    timeout=${timeout}
65     SSHLibrary.Read
66     SSHLibrary.Write    ${cmd};echo Command Returns $?
67     ${output}=    SSHLibrary.Read Until Prompt
68     [Return]    ${output}