Merge "Uplift of PMS source from ONAP"
[nonrtric.git] / test / auto-test / FTC1.sh
1 #!/bin/bash
2
3 #  ============LICENSE_START===============================================
4 #  Copyright (C) 2020 Nordix Foundation. All rights reserved.
5 #  ========================================================================
6 #  Licensed under the Apache License, Version 2.0 (the "License");
7 #  you may not use this file except in compliance with the License.
8 #  You may obtain a copy of the License at
9 #
10 #       http://www.apache.org/licenses/LICENSE-2.0
11 #
12 #  Unless required by applicable law or agreed to in writing, software
13 #  distributed under the License is distributed on an "AS IS" BASIS,
14 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 #  See the License for the specific language governing permissions and
16 #  limitations under the License.
17 #  ============LICENSE_END=================================================
18 #
19
20
21 TC_ONELINE_DESCR="Sanity test, create service and then create,update and delete a policy using http/https and Agent REST/DMAAP with/without SDNC controller"
22
23 #App names to include in the test when running docker, space separated list
24 DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR DMAAPMR PA RICSIM SDNC NGW"
25
26 #App names to include in the test when running kubernetes, space separated list
27 KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
28 #Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
29 KUBE_PRESTARTED_IMAGES=""
30
31 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
32 #the image is not configured in the supplied env_file
33 #Used for images not applicable to all supported profile
34 CONDITIONALLY_IGNORED_IMAGES="NGW"
35
36 #Supported test environment profiles
37 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE"
38 #Supported run modes
39 SUPPORTED_RUNMODES="DOCKER KUBE"
40
41 . ../common/testcase_common.sh  $@
42 . ../common/agent_api_functions.sh
43 . ../common/consul_cbs_functions.sh
44 . ../common/control_panel_api_functions.sh
45 . ../common/controller_api_functions.sh
46 . ../common/cr_api_functions.sh
47 . ../common/mr_api_functions.sh
48 . ../common/ricsimulator_api_functions.sh
49 . ../common/http_proxy_api_functions.sh
50 . ../common/kube_proxy_api_functions.sh
51 . ../common/gateway_api_functions.sh
52
53 setup_testenvironment
54
55 #### TEST BEGIN ####
56
57 generate_policy_uuid
58
59 # Tested variants of REST/DMAAP/SDNC config
60 TESTED_VARIANTS="REST   DMAAP   REST+SDNC   DMAAP+SDNC"
61 #Test agent and simulator protocol versions (others are http only)
62 TESTED_PROTOCOLS="HTTP HTTPS"
63 for __httpx in $TESTED_PROTOCOLS ; do
64     for interface in $TESTED_VARIANTS ; do
65
66         echo "#####################################################################"
67         echo "#####################################################################"
68         echo "### Testing agent: $interface using $__httpx"
69         echo "#####################################################################"
70         echo "#####################################################################"
71
72         clean_environment
73
74         if [ $RUNMODE == "KUBE" ]; then
75             start_kube_proxy
76         fi
77
78         if [ $__httpx == "HTTPS" ]; then
79             use_agent_rest_https
80         else
81             use_agent_rest_http
82         fi
83
84         start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/$POLICY_AGENT_CONFIG_FILE
85
86         set_agent_trace
87
88         # Create service to be able to receive events when rics becomes available
89         # Must use rest towards the agent since dmaap is not configured yet
90         api_put_service 201 "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
91
92         if [ $__httpx == "HTTPS" ]; then
93             use_cr_https
94             use_simulator_https
95             use_mr_https
96             if [[ $interface = *"SDNC"* ]]; then
97                 use_sdnc_https
98             fi
99             if [[ $interface = *"DMAAP"* ]]; then
100                 use_agent_dmaap_https
101             else
102                 use_agent_rest_https
103             fi
104         else
105             use_cr_http
106             use_simulator_http
107             use_mr_http
108             if [[ $interface = *"SDNC"* ]]; then
109                 use_sdnc_http
110             fi
111             if [[ $interface = *"DMAAP"* ]]; then
112                 use_agent_dmaap_http
113             else
114                 use_agent_rest_http
115             fi
116         fi
117
118         start_ric_simulators ricsim_g1 1  OSC_2.1.0
119         start_ric_simulators ricsim_g2 1  STD_1.1.3
120         if [ "$PMS_VERSION" == "V2" ]; then
121             start_ric_simulators ricsim_g3 1  STD_2.0.0
122         fi
123
124         start_mr
125
126         start_cr
127
128         start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
129
130         if [ ! -z "$NRT_GATEWAY_APP_NAME" ]; then
131             start_gateway $SIM_GROUP/$NRT_GATEWAY_COMPOSE_DIR/$NRT_GATEWAY_CONFIG_FILE
132         fi
133
134         if [ $RUNMODE == "DOCKER" ]; then
135             start_consul_cbs
136         fi
137
138         if [[ $interface = *"SDNC"* ]]; then
139             start_sdnc
140             prepare_consul_config      SDNC    ".consul_config.json"
141         else
142             prepare_consul_config      NOSDNC  ".consul_config.json"
143         fi
144
145         if [ $RUNMODE == "KUBE" ]; then
146             agent_load_config                       ".consul_config.json"
147         else
148             consul_config_app                      ".consul_config.json"
149         fi
150
151         mr_equal requests_submitted 0
152
153         sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
154
155         if [ "$PMS_VERSION" == "V2" ]; then
156
157             sim_put_policy_type 201 ricsim_g3_1 STD_QOS_0_2_0 testdata/STD2/sim_qos.json
158
159             api_equal json:rics 3 300
160
161             api_equal json:policy-types 3 120
162
163             api_equal json:policies 0
164
165             api_equal json:policy-instances 0
166
167             cr_equal received_callbacks 3 120
168
169             cr_api_check_all_sync_events 200 ric-registration ricsim_g1_1 ricsim_g2_1 ricsim_g3_1
170
171         else
172             api_equal json:rics 2 300
173
174             api_equal json:policy_schemas 2 120
175
176             api_equal json:policy_types 2
177
178             api_equal json:policies 0
179
180             api_equal json:policy_ids 0
181         fi
182
183         echo "############################################"
184         echo "############## Health check ################"
185         echo "############################################"
186
187         api_get_status 200
188
189         echo "############################################"
190         echo "##### Service registry and supervision #####"
191         echo "############################################"
192
193         api_put_service 201 "serv1" 1000 "$CR_SERVICE_PATH/1"
194
195         api_get_service_ids 200 "serv1" "ric-registration"
196
197         api_put_services_keepalive 200 "serv1"
198
199         echo "############################################"
200         echo "############## RIC Repository ##############"
201         echo "############################################"
202
203         if [ "$PMS_VERSION" == "V2" ]; then
204             api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:AVAILABLE  ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0:AVAILABLE"
205         else
206             api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:AVAILABLE  ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE"
207         fi
208
209         echo "############################################"
210         echo "########### A1 Policy Management ###########"
211         echo "############################################"
212
213         if [ "$PMS_VERSION" == "V2" ]; then
214             notificationurl=$CR_SERVICE_PATH"/test"
215         else
216             notificationurl=""
217         fi
218         api_put_policy 201 "serv1" ricsim_g1_1 1 5000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json
219         api_put_policy 200 "serv1" ricsim_g1_1 1 5000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json
220         if [ "$PMS_VERSION" == "V2" ]; then
221             api_put_policy 201 "serv1" ricsim_g3_1 STD_QOS_0_2_0 5200 true $notificationurl testdata/STD2/pi_qos_template.json
222             api_put_policy 200 "serv1" ricsim_g3_1 STD_QOS_0_2_0 5200 true $notificationurl testdata/STD2/pi_qos_template.json
223         fi
224
225         api_put_policy 201 "serv1" ricsim_g2_1 NOTYPE 5100 NOTRANSIENT $notificationurl testdata/STD/pi1_template.json
226         api_put_policy 200 "serv1" ricsim_g2_1 NOTYPE 5100 NOTRANSIENT $notificationurl testdata/STD/pi1_template.json
227
228         if [ "$PMS_VERSION" == "V2" ]; then
229             api_equal json:policies 3
230         else
231             api_equal json:policies 2
232         fi
233
234         api_delete_policy 204 5000
235
236         api_delete_policy 204 5100
237
238         if [ "$PMS_VERSION" == "V2" ]; then
239             api_delete_policy 204 5200
240         fi
241
242         if [ "$PMS_VERSION" == "V2" ]; then
243             api_equal json:policies 0
244
245             api_equal json:policy-instances 0
246         else
247             api_equal json:policies 0
248
249             api_equal json:policy_ids 0
250         fi
251
252         if [ "$PMS_VERSION" == "V2" ]; then
253             cr_equal received_callbacks 3
254         fi
255
256         if [[ $interface = *"DMAAP"* ]]; then
257
258             if [ "$PMS_VERSION" == "V2" ]; then
259                 VAL=14 # Number of Agent API calls over DMAAP
260             else
261                 VAL=11 # Number of Agent API calls over DMAAP
262             fi
263             mr_equal requests_fetched $VAL
264             mr_equal responses_submitted $VAL
265             mr_equal responses_fetched $VAL
266             mr_equal current_requests 0
267             mr_equal current_responses 0
268         else
269             mr_equal requests_submitted 0
270         fi
271
272         if [[ $interface = *"SDNC"* ]]; then
273             sim_contains_str ricsim_g1_1 remote_hosts $SDNC_APP_NAME
274             sim_contains_str ricsim_g2_1 remote_hosts $SDNC_APP_NAME
275             if [ "$PMS_VERSION" == "V2" ]; then
276                 sim_contains_str ricsim_g3_1 remote_hosts $SDNC_APP_NAME
277             fi
278         else
279             sim_contains_str ricsim_g1_1 remote_hosts $POLICY_AGENT_APP_NAME
280             sim_contains_str ricsim_g2_1 remote_hosts $POLICY_AGENT_APP_NAME
281             if [ "$PMS_VERSION" == "V2" ]; then
282                 sim_contains_str ricsim_g3_1 remote_hosts $POLICY_AGENT_APP_NAME
283             fi
284         fi
285
286         check_policy_agent_logs
287
288
289         if [[ $interface = *"SDNC"* ]]; then
290             check_sdnc_logs
291         fi
292
293         store_logs          "${__httpx}__${interface}"
294
295     done
296
297 done
298
299 #### TEST COMPLETE ####
300
301
302 print_result
303
304 auto_clean_environment