Tidy after recent merges
[integration/test.git] / csit / suites / sfc / Full_Deploy / 010__sfc_full_deploy.robot
1 *** Settings ***
2 Documentation     Test suite for SFC Service Functions, Operates functions from Restconf APIs.
3 Suite Setup       Init Suite
4 Suite Teardown    Delete All Sessions
5 Library           SSHLibrary
6 Library           Collections
7 Library           OperatingSystem
8 Library           RequestsLibrary
9 Variables         ../../../variables/Variables.py
10 Resource          ../../../variables/sfc/Variables.robot
11 Resource          ../../../libraries/Utils.robot
12 Resource          ../../../libraries/TemplatedRequests.robot
13
14 *** Variables ***
15 ${CREATE_RSP1_INPUT}    {"input":{"parent-service-function-path":"SFP-1","name":"SFP-1-Path-1"}}
16 ${CREATE_RSP_FAILURE_INPUT}    {"input":{"parent-service-function-path":"SFC1-empty","name":"SFC1-empty-Path-1"}}
17
18 *** Test Cases ***
19 Basic Environment Setup Tests
20     [Documentation]    Prepare Basic Test Environment
21     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
22     Add Elements To URI From File    ${SERVICE_NODES_URI}    ${SERVICE_NODES_FILE}
23     Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
24     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
25     Add Elements To URI From File    ${SERVICE_FUNCTION_PATHS_URI}    ${SERVICE_FUNCTION_PATHS_FILE}
26
27 Create and Get Rendered Service Path
28     [Documentation]    Create and Get Rendered Service Path Through RESTConf APIs
29     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
30     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
31     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
32     ${elements}=    Create List    SFP-1-Path-1    "parent-service-function-path":"SFP-1"    "hop-number":0    "service-index":255    "hop-number":1
33     ...    "service-index":254
34     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
35
36 Clean Datastore After Tests
37     [Documentation]    Clean All Items In Datastore After Tests
38     Sleep    1
39     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
40     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
41     Remove All Elements At URI    ${SERVICE_NODES_URI}
42     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
43     Remove All Elements At URI    ${SERVICE_FUNCTION_PATHS_URI}
44
45 *** Keywords ***
46 Post Elements To URI As JSON
47     [Arguments]    ${uri}    ${data}
48     ${resp}    RequestsLibrary.Post Request    session    ${uri}    data=${data}    headers=${headers}
49     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
50
51 Get JSON Elements From URI
52     [Arguments]    ${uri}
53     ${resp}    RequestsLibrary.Get Request    session    ${uri}
54     ${value}    To Json    ${resp.content}
55     [Return]    ${value}
56
57 Init Suite
58     [Documentation]    Connect Create session and initialize ODL version specific variables
59     SSHLibrary.Open Connection    ${TOOLS_SYSTEM_IP}    timeout=3s
60     Utils.Flexible Mininet Login
61     SSHLibrary.Put File    ${CURDIR}/docker-ovs.sh    .    mode=0755
62     SSHLibrary.Put File    ${CURDIR}/Dockerfile    .    mode=0755
63     SSHLibrary.Put File    ${CURDIR}/setup-docker-image.sh    .    mode=0755
64     ${result}    SSHLibrary.Execute Command    ./setup-docker-image.sh > >(tee myFile.log) 2> >(tee myFile.log)    return_stderr=True    return_stdout=True    return_rc=True
65     log    ${result}
66     Should be equal as integers    ${result[2]}    0
67     ${result}    SSHLibrary.Execute Command    ./docker-ovs.sh spawn --nodes=6 --guests=1 --tun=vxlan-gpe --odl=${ODL_SYSTEM_IP} > >(tee myFile2.log) 2> >(tee myFile2.log)    return_stderr=True    return_stdout=True    return_rc=True
68     log    ${result}
69     Should be equal as integers    ${result[2]}    0
70     SSHLibrary.Close Connection
71     Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
72     log    ${ODL_STREAM}
73     Run Keyword If    '${ODL_STREAM}' == 'stable-lithium'    Set Suite Variable    ${VERSION_DIR}    lithium
74     ...    ELSE    Set Suite Variable    ${VERSION_DIR}    master
75     Set Suite Variable    ${SERVICE_FUNCTIONS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-functions.json
76     Set Suite Variable    ${SERVICE_FORWARDERS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-function-forwarders.json
77     Set Suite Variable    ${SERVICE_NODES_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-nodes.json
78     Set Suite Variable    ${SERVICE_CHAINS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-function-chains.json
79     Set Suite Variable    ${SERVICE_FUNCTION_PATHS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-function-paths.json
80     Set Suite Variable    ${SERVICE_RANDOM_SCHED_TYPE_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-random-schedule-type.json
81     Set Suite Variable    ${SERVICE_ROUNDROBIN_SCHED_TYPE_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-roundrobin-schedule-type.json