[RIC-571] Fix automation tests
[ric-plt/e2mgr.git] / Automation / Tests / Resource / Keywords.robot
1 ##############################################################################
2 #
3 #   Copyright (c) 2019 AT&T Intellectual Property.
4 #
5 #   Licensed under the Apache License, Version 2.0 (the "License");
6 #   you may not use this file except in compliance with the License.
7 #   You may obtain a copy of the License at
8 #
9 #       http://www.apache.org/licenses/LICENSE-2.0
10 #
11 #   Unless required by applicable law or agreed to in writing, software
12 #   distributed under the License is distributed on an "AS IS" BASIS,
13 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 #   See the License for the specific language governing permissions and
15 #   limitations under the License.
16 #
17 ##############################################################################
18 #
19 #   This source code is part of the near-RT RIC (RAN Intelligent Controller)
20 #   platform project (RICP).
21 #
22
23 *** Settings ***
24 Documentation   Keywords file
25 Library     ../Scripts/cleanup_db.py
26 Library     ../Scripts/k8s_helper.py
27 Resource   ../Resource/resource.robot
28 Library     OperatingSystem
29 Library     Process
30 Variables  ../Scripts/variables.py
31
32 *** Keywords ***
33 Get Request nodeb
34     [Arguments]    ${nodeb_name}=${ranName}
35     Sleep    1s
36     GET      ${getNodeb}/${nodeb_name}
37
38 Update Gnb request
39     Sleep  1s
40     PUT    ${update_gnb_url}   ${update_gnb_body}
41
42 Add eNb Request
43     Sleep  1s
44     POST    ${enb_url}   ${add_enb_request_body}
45
46 Delete eNb Request
47     Sleep  1s
48     DELETE    ${enb_url}/${enb_ran_name}
49
50 Update eNb Request
51     Sleep  1s
52     PUT    ${enb_url}/${enb_ran_name}   ${update_enb_request_body}
53
54 Set General Configuration request
55     Sleep  1s
56     PUT    ${set_general_configuration}   ${set_general_configuration_body}
57
58 Update Gnb request not valid
59     Sleep  1s
60     PUT    ${update_gnb_url}   ${update_gnb_body_notvalid}
61
62 Remove log files
63     Remove File  ${EXECDIR}/${gnb_log_filename}
64     Remove File  ${EXECDIR}/${e2mgr_log_filename}
65     Remove File  ${EXECDIR}/${e2t_log_filename}
66
67 Save logs
68     Sleep   1s
69     Run     ${Save_sim_log}
70     Run     ${Save_e2mgr_log}
71     Run     ${Save_e2t_log}
72
73 Prepare Enviorment
74      [Arguments]     ${need_to_restart_pods}=${False}     ${set_new_timestamp}=${True}
75      Init logs
76      Flush And Populate DB    ${set_new_timestamp}
77      Run keyword if  ${need_to_restart_pods}==${True}   Restart RM and GNB Simulator
78      Wait until keyword succeeds  2 min    10 sec    Validate Required Dockers
79
80 Restart RM and GNB Simulator
81     Restart routing manager
82     Wait until keyword succeeds  2 min    10 sec    Validate Required Dockers
83     Restart simulator
84
85
86 Init logs
87     ${starting_timestamp}    Evaluate   datetime.datetime.now(datetime.timezone.utc).isoformat("T")   modules=datetime
88     ${e2t_log_filename}      Evaluate      "e2t.${SUITE NAME}.log".replace(" ","-")
89     ${e2mgr_log_filename}    Evaluate      "e2mgr.${SUITE NAME}.log".replace(" ","-")
90     ${gnb_log_filename}      Evaluate      "gnb.${SUITE NAME}.log".replace(" ","-")
91     ${Save_sim_log}          Evaluate  "kubectl -n ricplt logs --since-time=${starting_timestamp} $(${gnbe2_sim_pod}) > ${gnb_log_filename}"
92     ${Save_e2mgr_log}        Evaluate   "kubectl -n ricplt logs --since-time=${starting_timestamp} $(${e2mgr_pod}) > ${e2mgr_log_filename}"
93     ${Save_e2t_log}          Evaluate   "kubectl -n ricplt logs --since-time=${starting_timestamp} $(${e2term_pod}) > ${e2t_log_filename}"
94     Set Suite Variable  ${e2t_log_filename}
95     Set Suite Variable  ${e2mgr_log_filename}
96     Set Suite Variable  ${gnb_log_filename}
97     Set Suite Variable  ${Save_sim_log}
98     Set Suite Variable  ${Save_e2mgr_log}
99     Set Suite Variable  ${Save_e2t_log}
100
101 Validate Required Dockers
102     [Arguments]    ${required_number_of_dockers}=${pods_number}
103     Log To Console  Validating all required dockers are up
104     ${result}=  Run And Return Rc And Output     ${verify_all_pods_are_ready_command}
105     Should Be Equal As Integers    ${result[1]}    ${required_number_of_dockers}
106
107 Start E2
108      Log to Console  Starting E2Term
109      Run And Return Rc And Output    ${start_e2}
110      Sleep  5s
111
112 Stop E2
113      Log to Console  Stopping E2Term
114      Run And Return Rc And Output    ${stop_e2}
115      Sleep  5s
116
117 Start E2 Manager
118      Log to Console  Starting E2Mgr
119      Run And Return Rc And Output    ${start_e2mgr}
120      Sleep  5s
121
122 Stop E2 Manager
123      Log to Console  Stopping E2Mgr
124      Run And Return Rc And Output    ${stop_e2mgr}
125      Sleep  5s
126
127 Start Dbass
128      Log to Console  Starting redis
129      Run And Return Rc And Output    ${dbass_start}
130      Sleep  5s
131
132 Stop Dbass
133      Log to Console  Stopping redis
134      Run And Return Rc And Output    ${dbass_stop}
135      Sleep  5s
136
137 Stop Simulator
138     log to console  Stopping gnbe2 simulator
139     Run And Return Rc And Output    ${stop_simu}
140     Sleep  90s
141
142 Start Simulator
143     log to console  Starting gnbe2 simulator
144     Run And Return Rc And Output    ${start_simu}
145
146 Restart simulator
147    Log to Console  Restarting gnbe2 simulator
148    Stop Simulator
149    Start Simulator
150
151 Start Routing Manager
152     Log to Console  Starting routing manager
153     Run And Return Rc And Output    ${start_routing_manager}
154     Sleep  5s
155
156 Stop Routing Manager
157     Log to Console  Stopping routing manager
158     Run And Return Rc And Output    ${stop_routing_manager}
159     Sleep  5s
160
161 Restart Routing Manager
162     Log to Console  Restarting routing manager
163     Stop Routing Manager
164     Start Routing Manager
165
166 Start e2adapter
167      Log to Console  Starting e2adapter
168      Run And Return Rc And Output    ${start_e2adapter}
169      Sleep  5s
170
171 Stop e2adapter
172      Log to Console  Stopping e2adapter
173      Run And Return Rc And Output    ${stop_e2adapter}
174      Sleep  5s
175
176 Restart e2adapter
177     Log to Console  Restarting e2adapter
178     Stop e2adapter
179     Start e2adapter
180
181 Flush And Populate DB
182     [Arguments]    ${set_new_timestamp}=${True}
183     Log To Console  Flushing and populating DB
184     ${flush}=  cleanup_db.flush    ${set_new_timestamp}
185     Sleep  2s
186     Should Be Equal As Strings  ${flush}  True
187
188 Stop All Pods Except Simulator
189     Stop E2 Manager
190     Stop Dbass
191     Stop E2
192     Stop Routing Manager
193     Stop e2adapter
194
195 Send eNB Setup Request
196     Log To Console  Sending eNB setup request form e2adapter
197     Restart e2adapter
198     Wait until keyword succeeds  2 min    3 sec    Validate Required Dockers
199     ${e2adapter_pod} =    Run And Return Rc And Output   kubectl get pods -n ricplt | /bin/grep e2adapter | /bin/grep Running | awk '{{print $1}}'
200     ${send_enb_setup}    Evaluate    "kubectl -n ricplt exec -it ${e2adapter_pod[1]} cli send-e2setup-req 10.0.2.15"
201     Run And Return Rc And Output    ${send_enb_setup}
202
203 Start Redis Monitor
204     Log To Console  Starting redis monitor log
205     ${redis_monitor_log_filename}      Evaluate      "redis_monitor.${SUITE NAME}.log".replace(" ","-")
206     Set Suite Variable  ${redis_monitor_log_filename}
207     Remove File  ${EXECDIR}/${redis_monitor_log_filename}
208     Start Process    kubectl -n ricplt exec -it statefulset-ricplt-dbaas-server-0 redis-cli MONITOR>${EXECDIR}/${redis_monitor_log_filename}  shell=yes
209
210 Stop Redis Monitor
211     Log To Console  Stopping redis monitor log
212     log_scripts.kill_redis_monitor_root_process
213
214
215 Redis Monitor Logs - Verify Publish To Manipulation Channel
216     [Arguments]       ${ran_name}    ${event}
217     Log To Console  Verify Publish To Manipulation Channel
218     Sleep    3s
219     ${result}=  log_scripts.verify_redis_monitor_manipulation_message   ${EXECDIR}/${redis_monitor_log_filename}  ${ran_name}    ${event}
220     Should Be Equal As Strings    ${result}      True
221
222 Redis Monitor Logs - Verify Publish To Connection Status Channel
223     [Arguments]       ${ran_name}    ${event}
224     Log To Console    Verify Publish To Connection Status Channel
225     Sleep    3s
226     ${result}=  log_scripts.verify_redis_monitor_connection_status_message   ${EXECDIR}/${redis_monitor_log_filename}  ${ran_name}    ${event}
227     Should Be Equal As Strings    ${result}      True
228
229 Redis Monitor Logs - Verify NOT Published To Manipulation Channel
230     [Arguments]       ${ran_name}    ${event}
231     Log To Console  Verify NOT Published To Manipulation Channel
232     Sleep    3s
233     ${result}=  log_scripts.verify_redis_monitor_manipulation_message   ${EXECDIR}/${redis_monitor_log_filename}  ${ran_name}    ${event}
234     Should Be Equal As Strings    ${result}      False