19e5b18f09148cc32e4aba3eb3bb9c87d2c8e7f3
[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     [Arguments]    ${request}=${add_enb_request_body}
44     Sleep  1s
45     POST    ${enb_url}   ${request}
46
47 Delete eNb Request
48     Sleep  1s
49     DELETE    ${enb_url}/${enb_ran_name}
50
51 Update eNb Request
52     [Arguments]    ${request}=${update_enb_request_body}
53     Sleep  1s
54     PUT    ${enb_url}/${enb_ran_name}   ${request}
55
56 Set General Configuration request
57     Sleep  1s
58     PUT    ${set_general_configuration}   ${set_general_configuration_body}
59
60 Update Gnb request not valid
61     Sleep  1s
62     PUT    ${update_gnb_url}   ${update_gnb_body_notvalid}
63
64 Remove log files
65     Remove File  ${EXECDIR}/${gnb_log_filename}
66     Remove File  ${EXECDIR}/${e2mgr_log_filename}
67     Remove File  ${EXECDIR}/${e2t_log_filename}
68
69 Save logs
70     Sleep   1s
71     Run     ${Save_sim_log}
72     Run     ${Save_e2mgr_log}
73     Run     ${Save_e2t_log}
74
75 Prepare Enviorment
76      [Arguments]     ${need_to_restart_pods}=${False}     ${set_new_timestamp}=${True}
77      Init logs
78      Flush And Populate DB    ${set_new_timestamp}
79      Run keyword if  ${need_to_restart_pods}==${True}   Restart RM and GNB Simulator
80      Wait until keyword succeeds  2 min    10 sec    Validate Required Dockers
81
82 Restart RM and GNB Simulator
83     Restart routing manager
84     Wait until keyword succeeds  2 min    10 sec    Validate Required Dockers
85     Restart simulator
86
87
88 Init logs
89     ${starting_timestamp}    Evaluate   datetime.datetime.now(datetime.timezone.utc).isoformat("T")   modules=datetime
90     ${e2t_log_filename}      Evaluate      "e2t.${SUITE NAME}.log".replace(" ","-")
91     ${e2mgr_log_filename}    Evaluate      "e2mgr.${SUITE NAME}.log".replace(" ","-")
92     ${gnb_log_filename}      Evaluate      "gnb.${SUITE NAME}.log".replace(" ","-")
93     ${Save_sim_log}          Evaluate  "kubectl -n ricplt logs --since-time=${starting_timestamp} $(${gnbe2_sim_pod}) > ${gnb_log_filename}"
94     ${Save_e2mgr_log}        Evaluate   "kubectl -n ricplt logs --since-time=${starting_timestamp} $(${e2mgr_pod}) > ${e2mgr_log_filename}"
95     ${Save_e2t_log}          Evaluate   "kubectl -n ricplt logs --since-time=${starting_timestamp} $(${e2term_pod}) > ${e2t_log_filename}"
96     Set Suite Variable  ${e2t_log_filename}
97     Set Suite Variable  ${e2mgr_log_filename}
98     Set Suite Variable  ${gnb_log_filename}
99     Set Suite Variable  ${Save_sim_log}
100     Set Suite Variable  ${Save_e2mgr_log}
101     Set Suite Variable  ${Save_e2t_log}
102
103 Validate Required Dockers
104     [Arguments]    ${required_number_of_dockers}=${pods_number}
105     Log To Console  Validating all required dockers are up
106     ${result}=  Run And Return Rc And Output     ${verify_all_pods_are_ready_command}
107     Should Be Equal As Integers    ${result[1]}    ${required_number_of_dockers}
108
109 Start E2
110      Log to Console  Starting E2Term
111      Run And Return Rc And Output    ${start_e2}
112      Sleep  5s
113
114 Stop E2
115      Log to Console  Stopping E2Term
116      Run And Return Rc And Output    ${stop_e2}
117      Sleep  5s
118
119 Start E2 Manager
120      Log to Console  Starting E2Mgr
121      Run And Return Rc And Output    ${start_e2mgr}
122      Sleep  5s
123
124 Stop E2 Manager
125      Log to Console  Stopping E2Mgr
126      Run And Return Rc And Output    ${stop_e2mgr}
127      Sleep  5s
128
129 Start Dbass
130      Log to Console  Starting redis
131      Run And Return Rc And Output    ${dbass_start}
132      Sleep  5s
133
134 Stop Dbass
135      Log to Console  Stopping redis
136      Run And Return Rc And Output    ${dbass_stop}
137      Sleep  5s
138
139 Stop Simulator
140     log to console  Stopping gnbe2 simulator
141     Run And Return Rc And Output    ${stop_simu}
142     Sleep  90s
143
144 Start Simulator
145     log to console  Starting gnbe2 simulator
146     Run And Return Rc And Output    ${start_simu}
147
148 Restart simulator
149    Log to Console  Restarting gnbe2 simulator
150    Stop Simulator
151    Start Simulator
152
153 Start Routing Manager
154     Log to Console  Starting routing manager
155     Run And Return Rc And Output    ${start_routing_manager}
156     Sleep  5s
157
158 Stop Routing Manager
159     Log to Console  Stopping routing manager
160     Run And Return Rc And Output    ${stop_routing_manager}
161     Sleep  5s
162
163 Restart Routing Manager
164     Log to Console  Restarting routing manager
165     Stop Routing Manager
166     Start Routing Manager
167
168 Start e2adapter
169      Log to Console  Starting e2adapter
170      Run And Return Rc And Output    ${start_e2adapter}
171      Sleep  5s
172
173 Stop e2adapter
174      Log to Console  Stopping e2adapter
175      Run And Return Rc And Output    ${stop_e2adapter}
176      Sleep  90s
177
178 Restart e2adapter
179     Log to Console  Restarting e2adapter
180     Stop e2adapter
181     Start e2adapter
182
183 Flush And Populate DB
184     [Arguments]    ${set_new_timestamp}=${True}
185     Log To Console  Flushing and populating DB
186     ${flush}=  cleanup_db.flush    ${set_new_timestamp}
187     Sleep  2s
188     Should Be Equal As Strings  ${flush}  True
189
190 Stop All Pods Except Simulator
191     Stop E2 Manager
192     Stop Dbass
193     Stop E2
194     Stop Routing Manager
195     Stop e2adapter
196
197 Send eNB Setup Request
198     Log To Console  Sending eNB setup request form e2adapter
199     Restart e2adapter
200     Wait until keyword succeeds  2 min    3 sec    Validate Required Dockers
201     ${e2adapter_pod} =    Run And Return Rc And Output   kubectl get pods -n ricplt | /bin/grep e2adapter | /bin/grep Running | awk '{{print $1}}'
202     ${send_enb_setup}    Evaluate    "kubectl -n ricplt exec -it ${e2adapter_pod[1]} cli send-e2setup-req 10.0.2.15"
203     Run And Return Rc And Output    ${send_enb_setup}
204
205 Start Redis Monitor
206     Log To Console  Starting redis monitor log
207     ${redis_monitor_log_filename}      Evaluate      "redis_monitor.${SUITE NAME}.log".replace(" ","-")
208     Set Suite Variable  ${redis_monitor_log_filename}
209     Remove File  ${EXECDIR}/${redis_monitor_log_filename}
210     Start Process    kubectl -n ricplt exec -it statefulset-ricplt-dbaas-server-0 redis-cli MONITOR>${EXECDIR}/${redis_monitor_log_filename}  shell=yes
211
212 Stop Redis Monitor
213     Log To Console  Stopping redis monitor log
214     log_scripts.kill_redis_monitor_root_process
215
216
217 Redis Monitor Logs - Verify Publish To Manipulation Channel
218     [Arguments]       ${ran_name}    ${event}
219     Log To Console  Verify Publish To Manipulation Channel
220     Sleep    3s
221     ${result}=  log_scripts.verify_redis_monitor_manipulation_message   ${EXECDIR}/${redis_monitor_log_filename}  ${ran_name}    ${event}
222     Should Be Equal As Strings    ${result}      True
223
224 Redis Monitor Logs - Verify Publish To Connection Status Channel
225     [Arguments]       ${ran_name}    ${event}
226     Log To Console    Verify Publish To Connection Status Channel
227     Sleep    3s
228     ${result}=  log_scripts.verify_redis_monitor_connection_status_message   ${EXECDIR}/${redis_monitor_log_filename}  ${ran_name}    ${event}
229     Should Be Equal As Strings    ${result}      True
230
231 Redis Monitor Logs - Verify NOT Published To Manipulation Channel
232     [Arguments]       ${ran_name}    ${event}
233     Log To Console  Verify NOT Published To Manipulation Channel
234     Sleep    3s
235     ${result}=  log_scripts.verify_redis_monitor_manipulation_message   ${EXECDIR}/${redis_monitor_log_filename}  ${ran_name}    ${event}
236     Should Be Equal As Strings    ${result}      False