Step 1: Move vm scripts to the right place
[integration/test.git] / test / csit / suites / sfc / SFC_Basic / 010__sfc_service_functions.robot
1 *** Settings ***
2 Documentation     Test suite for SFC Service Functions, Operates functions from Restconf APIs.
3 Suite Setup       Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
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          ../../../libraries/Utils.robot
11
12 *** Variables ***
13 ${SERVICE_FUNCTIONS_URI}    /restconf/config/service-function:service-functions/
14 ${SERVICE_FUNCTIONS_FILE}    ../../../variables/sfc/service-functions.json
15 ${SF_DPI102100_URI}    /restconf/config/service-function:service-functions/service-function/dpi-102-100/
16 ${SF_DPI102100_FILE}    ../../../variables/sfc/sf_dpi_102_100.json
17 ${SF_DPL101_FILE}    ../../../variables/sfc/sf_dpl_101.json
18
19 *** Test Cases ***
20 Add Service Functions
21     [Documentation]    Add Service Functions from JSON file
22     Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
23     ${body}    OperatingSystem.Get File    ${SERVICE_FUNCTIONS_FILE}
24     ${jsonbody}    To Json    ${body}
25     ${functions}    Get From Dictionary    ${jsonbody}    service-functions
26     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FUNCTIONS_URI}
27     Should Be Equal As Strings    ${resp.status_code}    200
28     ${result}    To JSON    ${resp.content}
29     ${function}    Get From Dictionary    ${result}    service-functions
30     Lists Should be Equal    ${function}    ${functions}
31
32 Delete All Service Functions
33     [Documentation]    Delete all Service Functions
34     ${body}    OperatingSystem.Get File    ${SERVICE_FUNCTIONS_FILE}
35     Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
36     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FUNCTIONS_URI}
37     Should Be Equal As Strings    ${resp.status_code}    200
38     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
39     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FUNCTIONS_URI}
40     Should Be Equal As Strings    ${resp.status_code}    404
41
42 Get one Service Function
43     [Documentation]    Get one Service Function
44     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
45     Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
46     ${elements}=    Create List    dpi-102-1    service-function-type:dpi
47     Check For Elements At URI    ${SERVICE_FUNCTIONS_URI}service-function/dpi-102-1    ${elements}
48
49 Get A Non-existing Service Function
50     [Documentation]    Get A Non-existing Service Function
51     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
52     Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
53     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FUNCTIONS_URI}service-function/non-existing-sf
54     Should Be Equal As Strings    ${resp.status_code}    404
55
56 Delete A Service Function
57     [Documentation]    Delete A Service Function
58     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
59     Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
60     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}service-function/dpi-102-1
61     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FUNCTIONS_URI}
62     Should Be Equal As Strings    ${resp.status_code}    200
63     Should Not Contain    ${resp.content}    dpi-102-1
64
65 Delete A Non-existing Empty Service Function
66     [Documentation]    Delete A Non existing Service Function
67     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
68     Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
69     ${body}    OperatingSystem.Get File    ${SERVICE_FUNCTIONS_FILE}
70     ${jsonbody}    To Json    ${body}
71     ${functions}    Get From Dictionary    ${jsonbody}    service-functions
72     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}service-function/non-existing-sf
73     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FUNCTIONS_URI}
74     Should Be Equal As Strings    ${resp.status_code}    200
75     ${result}    To JSON    ${resp.content}
76     ${function}    Get From Dictionary    ${result}    service-functions
77     Lists Should be Equal    ${function}    ${functions}
78
79 Put one Service Function
80     [Documentation]    Put one Service Function
81     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
82     Add Elements To URI From File    ${SF_DPI102100_URI}    ${SF_DPI102100_FILE}
83     ${elements}=    Create List    dpi-102-100    service-function-type:dpi
84     Check For Elements At URI    ${SF_DPI102100_URI}    ${elements}
85     Check For Elements At URI    ${SERVICE_FUNCTIONS_URI}    ${elements}
86
87 Get Service Function DPL
88     [Documentation]    Get Service Function Data Plane Locator
89     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
90     Add Elements To URI From File    ${SF_DPI102100_URI}    ${SF_DPI102100_FILE}
91     ${elements}=    Create List    100    10100
92     Check For Elements At URI    ${SF_DPI102100_URI}sf-data-plane-locator/dpl-100    ${elements}
93
94 Put Service Function DPL
95     [Documentation]    Put Service Function Data Plane Locator
96     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
97     Add Elements To URI From File    ${SF_DPI102100_URI}    ${SF_DPI102100_FILE}
98     Add Elements To URI From File    ${SF_DPI102100_URI}sf-data-plane-locator/dpl-101    ${SF_DPL101_FILE}
99     ${elements}=    Create List    dpl-101    10101
100     Check For Elements At URI    ${SF_DPI102100_URI}sf-data-plane-locator/dpl-101    ${elements}
101     Check For Elements At URI    ${SF_DPI102100_URI}    ${elements}
102
103 Put Service Function DPL to a Non-existing Service Function
104     [Documentation]    Put Service Function DPL to a Non-existing Service Function
105     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
106     Add Elements To URI From File    ${SF_DPI102100_URI}sf-data-plane-locator/dpl-101    ${SF_DPL101_FILE}
107     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FUNCTIONS_URI}
108     Should Be Equal As Strings    ${resp.status_code}    200
109     Should Contain    ${resp.content}    dpi-102-100
110     ${elements}=    Create List    dpl-101    10101
111     Check For Elements At URI    ${SF_DPI102100_URI}sf-data-plane-locator/dpl-101    ${elements}
112     Check For Elements At URI    ${SF_DPI102100_URI}    ${elements}
113
114 Delete Service Function DPL
115     [Documentation]    Delete Service Function Data Plane Locator
116     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
117     Add Elements To URI From File    ${SF_DPI102100_URI}    ${SF_DPI102100_FILE}
118     Remove All Elements At URI    ${SF_DPI102100_URI}sf-data-plane-locator/dpl-100
119     ${resp}    RequestsLibrary.Get    session    ${SF_DPI102100_URI}
120     Should Be Equal As Strings    ${resp.status_code}    200
121     Should Not Contain    ${resp.content}    dpl-100
122
123 Clean Datastore After Tests
124     [Documentation]    Clean All Service Functions In Datastore After Tests
125     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}