Merge "NONRTRIC - PMS Persistent storage of policies and type definitions"
[nonrtric.git] / test / auto-test / FTC1800.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="ECS Create 10000 jobs and restart, test job persistency"
22
23 #App names to include in the test when running docker, space separated list
24 DOCKER_INCLUDED_IMAGES="ECS PRODSTUB CR CP NGW"
25
26 #App names to include in the test when running kubernetes, space separated list
27 KUBE_INCLUDED_IMAGES="ECS PRODSTUB CP CR 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-HONOLULU  ORAN-CHERRY ORAN-DAWN"
38 #Supported run modes
39 SUPPORTED_RUNMODES="DOCKER KUBE"
40
41 . ../common/testcase_common.sh  $@
42 . ../common/ecs_api_functions.sh
43 . ../common/prodstub_api_functions.sh
44 . ../common/control_panel_api_functions.sh
45 . ../common/controller_api_functions.sh
46 . ../common/cr_api_functions.sh
47 . ../common/kube_proxy_api_functions.sh
48 . ../common/gateway_api_functions.sh
49
50 setup_testenvironment
51
52 #### TEST BEGIN ####
53
54 FLAT_A1_EI="1"
55
56 clean_environment
57
58 if [ $RUNMODE == "KUBE" ]; then
59     start_kube_proxy
60 fi
61
62 use_ecs_rest_http
63
64 use_prod_stub_http
65
66 start_ecs NOPROXY $SIM_GROUP/$ECS_COMPOSE_DIR/$ECS_CONFIG_FILE
67
68 start_prod_stub
69
70 set_ecs_trace
71
72 start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
73
74 if [ ! -z "$NRT_GATEWAY_APP_NAME" ]; then
75     start_gateway $SIM_GROUP/$NRT_GATEWAY_COMPOSE_DIR/$NRT_GATEWAY_CONFIG_FILE
76 fi
77
78 start_cr
79
80 CB_JOB="$PROD_STUB_SERVICE_PATH$PROD_STUB_JOB_CALLBACK"
81 CB_SV="$PROD_STUB_SERVICE_PATH$PROD_STUB_SUPERVISION_CALLBACK"
82 TARGET="http://localhost:80/target"  # Dummy target
83
84 NUM_JOBS=10000
85
86 # Setup prodstub sim to accept calls for producers, types and jobs
87 prodstub_arm_producer 200 prod-a
88 prodstub_arm_producer 200 prod-b
89 prodstub_arm_producer 200 prod-c
90 prodstub_arm_producer 200 prod-d
91
92 prodstub_arm_type 200 prod-a type1
93
94 prodstub_arm_type 200 prod-b type1
95 prodstub_arm_type 200 prod-b type2
96
97 prodstub_arm_type 200 prod-c type1
98 prodstub_arm_type 200 prod-c type2
99 prodstub_arm_type 200 prod-c type3
100
101 prodstub_arm_type 200 prod-d type4
102 prodstub_arm_type 200 prod-d type5
103
104 for ((i=1; i<=$NUM_JOBS; i++))
105 do
106     if [ $(($i%5)) -eq 0 ]; then
107         prodstub_arm_job_create 200 prod-a job$i
108         prodstub_arm_job_create 200 prod-b job$i
109         prodstub_arm_job_create 200 prod-c job$i
110     fi
111     if [ $(($i%5)) -eq 1 ]; then
112         prodstub_arm_job_create 200 prod-b job$i
113         prodstub_arm_job_create 200 prod-c job$i
114     fi
115     if [ $(($i%5)) -eq 2 ]; then
116         prodstub_arm_job_create 200 prod-c job$i
117     fi
118     if [ $(($i%5)) -eq 3 ]; then
119         prodstub_arm_job_create 200 prod-d job$i
120     fi
121     if [ $(($i%5)) -eq 4 ]; then
122         prodstub_arm_job_create 200 prod-d job$i
123     fi
124 done
125
126 if [ $ECS_VERSION == "V1-1" ]; then
127
128     ecs_api_edp_put_producer 201 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1 testdata/ecs/ei-type-1.json
129
130     ecs_api_edp_put_producer 201 prod-b $CB_JOB/prod-b $CB_SV/prod-b type1 testdata/ecs/ei-type-1.json type2 testdata/ecs/ei-type-2.json
131
132     ecs_api_edp_put_producer 201 prod-c $CB_JOB/prod-c $CB_SV/prod-c type1 testdata/ecs/ei-type-1.json type2 testdata/ecs/ei-type-2.json type3 testdata/ecs/ei-type-3.json
133
134     ecs_api_edp_put_producer 201 prod-d $CB_JOB/prod-d $CB_SV/prod-d type4 testdata/ecs/ei-type-4.json type5 testdata/ecs/ei-type-5.json
135
136 else
137
138     ecs_api_edp_put_type_2 201 type1 testdata/ecs/ei-type-1.json
139     ecs_api_edp_put_type_2 201 type2 testdata/ecs/ei-type-2.json
140     ecs_api_edp_put_type_2 201 type3 testdata/ecs/ei-type-3.json
141     ecs_api_edp_put_type_2 201 type4 testdata/ecs/ei-type-4.json
142     ecs_api_edp_put_type_2 201 type5 testdata/ecs/ei-type-5.json
143
144     ecs_api_edp_put_producer_2 201 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1
145
146     ecs_api_edp_put_producer_2 201 prod-b $CB_JOB/prod-b $CB_SV/prod-b type1 type2
147
148     ecs_api_edp_put_producer_2 201 prod-c $CB_JOB/prod-c $CB_SV/prod-c type1 type2 type3
149
150     ecs_api_edp_put_producer_2 201 prod-d $CB_JOB/prod-d $CB_SV/prod-d type4 type5
151 fi
152
153 ecs_equal json:ei-producer/v1/eiproducers 4
154
155 ecs_api_edp_get_producer_status 200 prod-a ENABLED
156 ecs_api_edp_get_producer_status 200 prod-b ENABLED
157 ecs_api_edp_get_producer_status 200 prod-c ENABLED
158 ecs_api_edp_get_producer_status 200 prod-d ENABLED
159
160 for ((i=1; i<=$NUM_JOBS; i++))
161 do
162     if [ $(($i%5)) -eq 0 ]; then
163         ecs_api_a1_put_job 201 job$i type1 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
164         if [  -z "$FLAT_A1_EI" ]; then
165             ecs_api_a1_get_job_status 200 type1 job$i ENABLED
166         else
167             ecs_api_a1_get_job_status 200 job$i ENABLED 120
168         fi
169     fi
170     if [ $(($i%5)) -eq 1 ]; then
171         ecs_api_a1_put_job 201 job$i type2 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
172         if [  -z "$FLAT_A1_EI" ]; then
173             ecs_api_a1_get_job_status 200 type2 job$i ENABLED
174         else
175             ecs_api_a1_get_job_status 200 job$i ENABLED 120
176         fi
177     fi
178     if [ $(($i%5)) -eq 2 ]; then
179         ecs_api_a1_put_job 201 job$i type3 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
180         if [  -z "$FLAT_A1_EI" ]; then
181             ecs_api_a1_get_job_status 200 type3 job$i ENABLED
182         else
183             ecs_api_a1_get_job_status 200 job$i ENABLED 120
184         fi
185     fi
186     if [ $(($i%5)) -eq 3 ]; then
187         ecs_api_a1_put_job 201 job$i type4 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
188         if [  -z "$FLAT_A1_EI" ]; then
189             ecs_api_a1_get_job_status 200 type4 job$i ENABLED
190         else
191             ecs_api_a1_get_job_status 200 job$i ENABLED 120
192         fi
193     fi
194     if [ $(($i%5)) -eq 4 ]; then
195         ecs_api_a1_put_job 201 job$i type5 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
196         if [  -z "$FLAT_A1_EI" ]; then
197             ecs_api_a1_get_job_status 200 type5 job$i ENABLED
198         else
199             ecs_api_a1_get_job_status 200 job$i ENABLED 120
200         fi
201     fi
202 done
203
204 if [  -z "$FLAT_A1_EI" ]; then
205     ecs_equal json:A1-EI/v1/eitypes/type1/eijobs $(($NUM_JOBS/5))
206     ecs_equal json:A1-EI/v1/eitypes/type2/eijobs $(($NUM_JOBS/5))
207     ecs_equal json:A1-EI/v1/eitypes/type3/eijobs $(($NUM_JOBS/5))
208     ecs_equal json:A1-EI/v1/eitypes/type4/eijobs $(($NUM_JOBS/5))
209     ecs_equal json:A1-EI/v1/eitypes/type5/eijobs $(($NUM_JOBS/5))
210 else
211     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 $(($NUM_JOBS/5))
212     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 $(($NUM_JOBS/5))
213     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 $(($NUM_JOBS/5))
214     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 $(($NUM_JOBS/5))
215     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 $(($NUM_JOBS/5))
216 fi
217
218 restart_ecs
219
220 set_ecs_trace
221
222 for ((i=1; i<=$NUM_JOBS; i++))
223 do
224     if [ $(($i%5)) -eq 0 ]; then
225         prodstub_delete_jobdata 204 prod-a job$i
226         prodstub_delete_jobdata 204 prod-b job$i
227         prodstub_delete_jobdata 204 prod-c job$i
228     fi
229     if [ $(($i%5)) -eq 1 ]; then
230         prodstub_delete_jobdata 204 prod-b job$i
231         prodstub_delete_jobdata 204 prod-c job$i
232     fi
233     if [ $(($i%5)) -eq 2 ]; then
234         prodstub_delete_jobdata 204 prod-c job$i
235     fi
236     if [ $(($i%5)) -eq 3 ]; then
237         prodstub_delete_jobdata 204 prod-d job$i
238     fi
239     if [ $(($i%5)) -eq 4 ]; then
240         prodstub_delete_jobdata 204 prod-d job$i
241     fi
242 done
243
244 ecs_api_edp_get_producer_status 404 prod-a
245 ecs_api_edp_get_producer_status 404 prod-b
246 ecs_api_edp_get_producer_status 404 prod-c
247 ecs_api_edp_get_producer_status 404 prod-d
248
249 for ((i=1; i<=$NUM_JOBS; i++))
250 do
251     if [ $(($i%5)) -eq 0 ]; then
252         if [  -z "$FLAT_A1_EI" ]; then
253             ecs_api_a1_get_job_status 200 type1 job$i DISABLED
254         else
255             ecs_api_a1_get_job_status 200 job$i DISABLED 120
256         fi
257     fi
258     if [ $(($i%5)) -eq 1 ]; then
259         if [  -z "$FLAT_A1_EI" ]; then
260             ecs_api_a1_get_job_status 200 type2 job$i DISABLED
261         else
262             ecs_api_a1_get_job_status 200 job$i DISABLED 120
263         fi
264     fi
265     if [ $(($i%5)) -eq 2 ]; then
266         if [  -z "$FLAT_A1_EI" ]; then
267             ecs_api_a1_get_job_status 200 type3 job$i DISABLED
268         else
269             ecs_api_a1_get_job_status 200 job$i DISABLED 120
270         fi
271     fi
272     if [ $(($i%5)) -eq 3 ]; then
273         if [  -z "$FLAT_A1_EI" ]; then
274             ecs_api_a1_get_job_status 200 type4 job$i DISABLED
275         else
276             ecs_api_a1_get_job_status 200 job$i DISABLED 120
277         fi
278     fi
279     if [ $(($i%5)) -eq 4 ]; then
280         if [  -z "$FLAT_A1_EI" ]; then
281             ecs_api_a1_get_job_status 200 type5 job$i DISABLED
282         else
283             ecs_api_a1_get_job_status 200 job$i DISABLED 120
284         fi
285     fi
286 done
287
288 if [ $ECS_VERSION == "V1-1" ]; then
289
290     ecs_api_edp_put_producer 201 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1 testdata/ecs/ei-type-1.json
291
292     ecs_api_edp_put_producer 201 prod-b $CB_JOB/prod-b $CB_SV/prod-b type1 testdata/ecs/ei-type-1.json type2 testdata/ecs/ei-type-2.json
293
294     ecs_api_edp_put_producer 201 prod-c $CB_JOB/prod-c $CB_SV/prod-c type1 testdata/ecs/ei-type-1.json type2 testdata/ecs/ei-type-2.json type3 testdata/ecs/ei-type-3.json
295
296     ecs_api_edp_put_producer 201 prod-d $CB_JOB/prod-d $CB_SV/prod-d type4 testdata/ecs/ei-type-4.json type5 testdata/ecs/ei-type-5.json
297
298 else
299     ecs_api_edp_put_producer_2 201 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1
300
301     ecs_api_edp_put_producer_2 201 prod-b $CB_JOB/prod-b $CB_SV/prod-b type1 type2
302
303     ecs_api_edp_put_producer_2 201 prod-c $CB_JOB/prod-c $CB_SV/prod-c type1 type2 type3
304
305     ecs_api_edp_put_producer_2 201 prod-d $CB_JOB/prod-d $CB_SV/prod-d type4 type5
306
307 fi
308
309 ecs_equal json:ei-producer/v1/eiproducers 4
310
311 ecs_api_edp_get_producer_status 200 prod-a ENABLED
312 ecs_api_edp_get_producer_status 200 prod-b ENABLED
313 ecs_api_edp_get_producer_status 200 prod-c ENABLED
314 ecs_api_edp_get_producer_status 200 prod-d ENABLED
315
316 for ((i=1; i<=$NUM_JOBS; i++))
317 do
318     if [ $(($i%5)) -eq 0 ]; then
319         if [  -z "$FLAT_A1_EI" ]; then
320             ecs_api_a1_get_job_status 200 type1 job$i ENABLED
321         else
322             ecs_api_a1_get_job_status 200 job$i ENABLED 120
323         fi
324     fi
325     if [ $(($i%5)) -eq 1 ]; then
326         if [  -z "$FLAT_A1_EI" ]; then
327             ecs_api_a1_get_job_status 200 type2 job$i ENABLED
328         else
329             ecs_api_a1_get_job_status 200 job$i ENABLED 120
330         fi
331     fi
332     if [ $(($i%5)) -eq 2 ]; then
333         if [  -z "$FLAT_A1_EI" ]; then
334             ecs_api_a1_get_job_status 200 type3 job$i ENABLED
335         else
336             ecs_api_a1_get_job_status 200 job$i ENABLED 120
337         fi
338     fi
339     if [ $(($i%5)) -eq 3 ]; then
340         if [  -z "$FLAT_A1_EI" ]; then
341             ecs_api_a1_get_job_status 200 type4 job$i ENABLED
342         else
343             ecs_api_a1_get_job_status 200 job$i ENABLED 120
344         fi
345     fi
346     if [ $(($i%5)) -eq 4 ]; then
347         if [  -z "$FLAT_A1_EI" ]; then
348             ecs_api_a1_get_job_status 200 type5 job$i ENABLED
349         else
350             ecs_api_a1_get_job_status 200 job$i ENABLED 120
351         fi
352     fi
353 done
354
355
356 if [  -z "$FLAT_A1_EI" ]; then
357     ecs_equal json:A1-EI/v1/eitypes/type1/eijobs $(($NUM_JOBS/5))
358     ecs_equal json:A1-EI/v1/eitypes/type2/eijobs $(($NUM_JOBS/5))
359     ecs_equal json:A1-EI/v1/eitypes/type3/eijobs $(($NUM_JOBS/5))
360     ecs_equal json:A1-EI/v1/eitypes/type4/eijobs $(($NUM_JOBS/5))
361     ecs_equal json:A1-EI/v1/eitypes/type5/eijobs $(($NUM_JOBS/5))
362 else
363     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 $(($NUM_JOBS/5))
364     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 $(($NUM_JOBS/5))
365     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 $(($NUM_JOBS/5))
366     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 $(($NUM_JOBS/5))
367     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 $(($NUM_JOBS/5))
368 fi
369
370 for ((i=1; i<=$NUM_JOBS; i++))
371 do
372     if [ $(($i%5)) -eq 0 ]; then
373         if [ $ECS_VERSION == "V1-1" ]; then
374             prodstub_check_jobdata 200 prod-a job$i type1 $TARGET ric1 testdata/ecs/job-template.json
375             prodstub_check_jobdata 200 prod-b job$i type1 $TARGET ric1 testdata/ecs/job-template.json
376             prodstub_check_jobdata 200 prod-c job$i type1 $TARGET ric1 testdata/ecs/job-template.json
377         else
378             prodstub_check_jobdata_2 200 prod-a job$i type1 $TARGET ric1 testdata/ecs/job-template.json
379             prodstub_check_jobdata_2 200 prod-b job$i type1 $TARGET ric1 testdata/ecs/job-template.json
380             prodstub_check_jobdata_2 200 prod-c job$i type1 $TARGET ric1 testdata/ecs/job-template.json
381         fi
382
383     fi
384     if [ $(($i%5)) -eq 1 ]; then
385         if [ $ECS_VERSION == "V1-1" ]; then
386             prodstub_check_jobdata 200 prod-b job$i type2 $TARGET ric1 testdata/ecs/job-template.json
387             prodstub_check_jobdata 200 prod-c job$i type2 $TARGET ric1 testdata/ecs/job-template.json
388         else
389             prodstub_check_jobdata_2 200 prod-b job$i type2 $TARGET ric1 testdata/ecs/job-template.json
390             prodstub_check_jobdata_2 200 prod-c job$i type2 $TARGET ric1 testdata/ecs/job-template.json
391         fi
392     fi
393     if [ $(($i%5)) -eq 2 ]; then
394         if [ $ECS_VERSION == "V1-1" ]; then
395             prodstub_check_jobdata 200 prod-c job$i type3 $TARGET ric1 testdata/ecs/job-template.json
396         else
397             prodstub_check_jobdata_2 200 prod-c job$i type3 $TARGET ric1 testdata/ecs/job-template.json
398         fi
399     fi
400     if [ $(($i%5)) -eq 3 ]; then
401         if [ $ECS_VERSION == "V1-1" ]; then
402             prodstub_check_jobdata 200 prod-d job$i type4 $TARGET ric1 testdata/ecs/job-template.json
403         else
404             prodstub_check_jobdata_2 200 prod-d job$i type4 $TARGET ric1 testdata/ecs/job-template.json
405         fi
406     fi
407     if [ $(($i%5)) -eq 4 ]; then
408         if [ $ECS_VERSION == "V1-1" ]; then
409             prodstub_check_jobdata 200 prod-d job$i type5 $TARGET ric1 testdata/ecs/job-template.json
410         else
411             prodstub_check_jobdata_2 200 prod-d job$i type5 $TARGET ric1 testdata/ecs/job-template.json
412         fi
413     fi
414 done
415
416
417 for ((i=1; i<=$NUM_JOBS; i++))
418 do
419     if [ $(($i%5)) -eq 0 ]; then
420         ecs_api_a1_delete_job 204 job$i
421     fi
422     if [ $(($i%5)) -eq 1 ]; then
423         ecs_api_a1_delete_job 204 job$i
424     fi
425     if [ $(($i%5)) -eq 2 ]; then
426         ecs_api_a1_delete_job 204 job$i
427     fi
428     if [ $(($i%5)) -eq 3 ]; then
429         ecs_api_a1_delete_job 204 job$i
430     fi
431     if [ $(($i%5)) -eq 4 ]; then
432         ecs_api_a1_delete_job 204 job$i
433     fi
434 done
435
436 ecs_equal json:ei-producer/v1/eiproducers 4
437
438 ecs_api_edp_get_producer_status 200 prod-a ENABLED
439 ecs_api_edp_get_producer_status 200 prod-b ENABLED
440 ecs_api_edp_get_producer_status 200 prod-c ENABLED
441 ecs_api_edp_get_producer_status 200 prod-d ENABLED
442
443 if [  -z "$FLAT_A1_EI" ]; then
444     ecs_equal json:A1-EI/v1/eitypes/type1/eijobs 0
445     ecs_equal json:A1-EI/v1/eitypes/type2/eijobs 0
446     ecs_equal json:A1-EI/v1/eitypes/type3/eijobs 0
447     ecs_equal json:A1-EI/v1/eitypes/type4/eijobs 0
448     ecs_equal json:A1-EI/v1/eitypes/type5/eijobs 0
449 else
450     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 0
451     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 0
452     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 0
453     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 0
454     ecs_equal json:A1-EI/v1/eijobs?eiTypeId=type1 0
455 fi
456
457 check_ecs_logs
458
459 store_logs END
460
461 #### TEST COMPLETE ####
462
463
464 print_result
465
466 auto_clean_environment