771b6d96477d0eb1f631ccf092ab54a0acdaf027
[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}    ${tempest_exclusion_regex}=""    ${tempest_conf}=""    ${tempest_directory}=/opt/stack/tempest    ${timeout}=600s
21     [Documentation]    Execute the tempest tests.
22     ${devstack_conn_id}=    Get ControlNode Connection
23     Switch Connection    ${devstack_conn_id}
24     Write Commands Until Prompt    source ${DEVSTACK_DEPLOY_PATH}/openrc admin admin
25     Write Commands Until Prompt    cd ${tempest_directory}
26     # From Ocata and moving forward, we can replace 'ostestr' with 'tempest run'
27     # Note: If black-regex cancels out the entire regex (white-regex), all tests are run
28     # --black-regex ${tempest_exclusion_regex} is removed for now since it only seems to work from newton
29     ${results}=    Write Commands Until Prompt    ostestr --regex ${tempest_regex}    timeout=${timeout}
30     Log    ${results}
31     # Save stdout to file
32     Create File    tempest_output_${tempest_regex}.log    data=${results}
33     # output tempest generated log file which may have different debug levels than what stdout would show
34     # FIXME: having the INFO level tempest logs is helpful as it gives details like the UUIDs of nouns used in the
35     # the tests which can sometimes be tracked in ODL and Openstack logs when debugging. However, this "cat" step
36     # does not even complete for the tempest.api.network tests in under 2min. We need a faster way to get this
37     # info. Probably pulling the log file and storing it on the log server is best. Hopefully someone can get
38     # to this. For now, commenting out this next debug step.
39     # ${output}=    Write Commands Until Prompt    cat ${tempest_directory}/tempest.log    timeout=120s
40     # Log    ${output}
41     Should Contain    ${results}    Failed: 0
42     # TODO: also need to verify some non-zero pass count as well as other results are ok (e.g. skipped, etc)
43
44 Devstack Suite Setup
45     [Arguments]    ${source_pwd}=no    ${odl_ip}=${ODL_SYSTEM_IP}
46     [Documentation]    Login to the Openstack Control Node to run tempest suite
47     Create Session    session    http://${odl_ip}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
48     ${devstack_conn_id}=    SSHLibrary.Open Connection    ${OS_CONTROL_NODE_IP}    prompt=${DEFAULT_LINUX_PROMPT}
49     Set Suite Variable    ${devstack_conn_id}
50     Set Suite Variable    ${source_pwd}
51     Log    ${devstack_conn_id}
52     Utils.Flexible SSH Login    ${OS_USER}    ${DEVSTACK_SYSTEM_PASSWORD}
53     SSHLibrary.Set Client Configuration    timeout=${default_devstack_prompt_timeout}
54
55 Write Commands Until Prompt
56     [Arguments]    ${cmd}    ${timeout}=${default_devstack_prompt_timeout}
57     [Documentation]    quick wrapper for Write and Read Until Prompt Keywords to make test cases more readable
58     SSHLibrary.Set Client Configuration    timeout=${timeout}
59     SSHLibrary.Read
60     SSHLibrary.Write    ${cmd}
61     ${output}=    SSHLibrary.Read Until Prompt
62     [Return]    ${output}