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