Automation of nodeb state API
[ric-plt/e2mgr.git] / Automation / Tests / Resource / Keywords.robot
old mode 100755 (executable)
new mode 100644 (file)
index 94fc870..552f4ab
 #   limitations under the License.
 #
 ##############################################################################
+#
+#   This source code is part of the near-RT RIC (RAN Intelligent Controller)
+#   platform project (RICP).
+#
 
 *** Settings ***
 Documentation   Keywords file
-Library     ${CURDIR}/scripts.py
+Library     ../Scripts/cleanup_db.py
+Library     ../Scripts/k8s_helper.py
 Resource   ../Resource/resource.robot
 Library     OperatingSystem
-
-
-
-
+Library     Process
+Variables  ../Scripts/variables.py
 
 *** Keywords ***
-Post Request setup node b x-2
-    Set Headers     ${header}
-    POST        /v1/nodeb/x2-setup    ${json}
-
-
-
-Get Request node b enb test1
-    Sleep    1s
-    GET      /v1/nodeb/test1
-
-
-Get Request node b enb test2
+Get Request nodeb
+    [Arguments]    ${nodeb_name}=${ranName}
     Sleep    1s
-    GET      /v1/nodeb/test2
-
-
-
-Post Request setup node b endc-setup
-    Set Headers     ${header}
-    POST        /v1/nodeb/endc-setup    ${endcjson}
-
-Stop Simulator
-    Run And Return Rc And Output    ${stop_simu}
-
-
-Prepare Simulator For Load Information
-     Run And Return Rc And Output    ${stop_simu}
-     Run And Return Rc And Output    ${docker_Remove}
-     ${flush}  scripts.flush
-     Should Be Equal As Strings  ${flush}  True
-     Run And Return Rc And Output    ${run_simu_load}
-     ${result}=  Run And Return Rc And Output     ${docker_command}
-     Should Be Equal As Integers    ${result[1]}    5
+    GET      ${getNodeb}/${nodeb_name}
+
+Update Gnb request
+    Sleep  1s
+    PUT    ${update_gnb_url}   ${update_gnb_body}
+
+Add eNb Request
+    [Arguments]    ${request}=${add_enb_request_body}
+    Sleep  1s
+    POST    ${enb_url}   ${request}
+
+Get NodeB state request
+    [Arguments]     ${request}=${nodeb_state_url}
+    Sleep  1s
+    GET    ${request}
+
+Delete eNb Request
+    Sleep  1s
+    DELETE    ${enb_url}/${enb_ran_name}
+
+Update eNb Request
+    [Arguments]    ${request}=${update_enb_request_body}
+    Sleep  1s
+    PUT    ${enb_url}/${enb_ran_name}   ${request}
+
+Set General Configuration request
+    Sleep  1s
+    PUT    ${set_general_configuration}   ${set_general_configuration_body}
+
+Update Gnb request not valid
+    Sleep  1s
+    PUT    ${update_gnb_url}   ${update_gnb_body_notvalid}
+
+Remove log files
+    Remove File  ${EXECDIR}/${gnb_log_filename}
+    Remove File  ${EXECDIR}/${e2mgr_log_filename}
+    Remove File  ${EXECDIR}/${e2t_log_filename}
+
+Save logs
+    Sleep   1s
+    Run     ${Save_sim_log}
+    Run     ${Save_e2mgr_log}
+    Run     ${Save_e2t_log}
 
 Prepare Enviorment
-     ${flush}  scripts.flush
-     Should Be Equal As Strings  ${flush}  True
-     Run And Return Rc And Output    ${stop_simu}
-     Run And Return Rc And Output    ${docker_Remove}
-     Run And Return Rc And Output    ${run_simu_regular}
-     Run And Return Rc And Output    ${restart_e2adapter}
-     Sleep  2s
-     ${result}=  Run And Return Rc And Output     ${docker_command}
-     log to console   ${result}
-     Should Be Equal As Integers    ${result[1]}    5
+     [Arguments]     ${need_to_restart_pods}=${False}     ${set_new_timestamp}=${True}
+     Init logs
+     Flush And Populate DB    ${set_new_timestamp}
+     Run keyword if  ${need_to_restart_pods}==${True}   Restart RM and GNB Simulator
+     Wait until keyword succeeds  2 min    10 sec    Validate Required Dockers
+
+Restart RM and GNB Simulator
+    Restart routing manager
+    Wait until keyword succeeds  2 min    10 sec    Validate Required Dockers
+    Restart simulator
+
+
+Init logs
+    ${starting_timestamp}    Evaluate   datetime.datetime.now(datetime.timezone.utc).isoformat("T")   modules=datetime
+    ${e2t_log_filename}      Evaluate      "e2t.${SUITE NAME}.log".replace(" ","-")
+    ${e2mgr_log_filename}    Evaluate      "e2mgr.${SUITE NAME}.log".replace(" ","-")
+    ${gnb_log_filename}      Evaluate      "gnb.${SUITE NAME}.log".replace(" ","-")
+    ${Save_sim_log}          Evaluate  "kubectl -n ricplt logs --since-time=${starting_timestamp} $(${gnbe2_sim_pod}) > ${gnb_log_filename}"
+    ${Save_e2mgr_log}        Evaluate   "kubectl -n ricplt logs --since-time=${starting_timestamp} $(${e2mgr_pod}) > ${e2mgr_log_filename}"
+    ${Save_e2t_log}          Evaluate   "kubectl -n ricplt logs --since-time=${starting_timestamp} $(${e2term_pod}) > ${e2t_log_filename}"
+    Set Suite Variable  ${e2t_log_filename}
+    Set Suite Variable  ${e2mgr_log_filename}
+    Set Suite Variable  ${gnb_log_filename}
+    Set Suite Variable  ${Save_sim_log}
+    Set Suite Variable  ${Save_e2mgr_log}
+    Set Suite Variable  ${Save_e2t_log}
+
+Validate Required Dockers
+    [Arguments]    ${required_number_of_dockers}=${pods_number}
+    Log To Console  Validating all required dockers are up
+    ${result}=  Run And Return Rc And Output     ${verify_all_pods_are_ready_command}
+    Should Be Equal As Integers    ${result[1]}    ${required_number_of_dockers}
 
 Start E2
+     Log to Console  Starting E2Term
      Run And Return Rc And Output    ${start_e2}
-     ${result}=  Run And Return Rc And Output     ${docker_command}
-     Should Be Equal As Integers    ${result[1]}    5
-     Sleep  2s
+     Sleep  5s
 
-Start Redis
-     Run And Return Rc And Output    ${redis_remove}
-     Run And Return Rc And Output    ${start_redis}
-     ${result}=  Run And Return Rc And Output     ${docker_command}
-     Should Be Equal As Integers    ${result[1]}    5
+Stop E2
+     Log to Console  Stopping E2Term
+     Run And Return Rc And Output    ${stop_e2}
+     Sleep  5s
 
+Start E2 Manager
+     Log to Console  Starting E2Mgr
+     Run And Return Rc And Output    ${start_e2mgr}
+     Sleep  5s
 
+Stop E2 Manager
+     Log to Console  Stopping E2Mgr
+     Run And Return Rc And Output    ${stop_e2mgr}
+     Sleep  5s
 
+Start Dbass
+     Log to Console  Starting redis
+     Run And Return Rc And Output    ${dbass_start}
+     Sleep  5s
 
+Stop Dbass
+     Log to Console  Stopping redis
+     Run And Return Rc And Output    ${dbass_stop}
+     Sleep  5s
 
+Stop Simulator
+    log to console  Stopping gnbe2 simulator
+    Run And Return Rc And Output    ${stop_simu}
+    Sleep  90s
+
+Start Simulator
+    log to console  Starting gnbe2 simulator
+    Run And Return Rc And Output    ${start_simu}
+
+Restart simulator
+   Log to Console  Restarting gnbe2 simulator
+   Stop Simulator
+   Start Simulator
+
+Start Routing Manager
+    Log to Console  Starting routing manager
+    Run And Return Rc And Output    ${start_routing_manager}
+    Sleep  5s
+
+Stop Routing Manager
+    Log to Console  Stopping routing manager
+    Run And Return Rc And Output    ${stop_routing_manager}
+    Sleep  5s
+
+Restart Routing Manager
+    Log to Console  Restarting routing manager
+    Stop Routing Manager
+    Start Routing Manager
+
+Start e2adapter
+     Log to Console  Starting e2adapter
+     Run And Return Rc And Output    ${start_e2adapter}
+     Sleep  5s
+
+Stop e2adapter
+     Log to Console  Stopping e2adapter
+     Run And Return Rc And Output    ${stop_e2adapter}
+     Sleep  90s
+
+Restart e2adapter
+    Log to Console  Restarting e2adapter
+    Stop e2adapter
+    Start e2adapter
+
+Flush And Populate DB
+    [Arguments]    ${set_new_timestamp}=${True}
+    Log To Console  Flushing and populating DB
+    ${flush}=  cleanup_db.flush    ${set_new_timestamp}
+    Sleep  2s
+    Should Be Equal As Strings  ${flush}  True
+
+Stop All Pods Except Simulator
+    Stop E2 Manager
+    Stop Dbass
+    Stop E2
+    Stop Routing Manager
+    Stop e2adapter
+
+Send eNB Setup Request
+    Log To Console  Sending eNB setup request form e2adapter
+    Restart e2adapter
+    Wait until keyword succeeds  2 min    3 sec    Validate Required Dockers
+    ${e2adapter_pod} =    Run And Return Rc And Output   kubectl get pods -n ricplt | /bin/grep e2adapter | /bin/grep Running | awk '{{print $1}}'
+    ${send_enb_setup}    Evaluate    "kubectl -n ricplt exec -it ${e2adapter_pod[1]} cli send-e2setup-req 10.0.2.15"
+    Run And Return Rc And Output    ${send_enb_setup}
+
+Start Redis Monitor
+    Log To Console  Starting redis monitor log
+    ${redis_monitor_log_filename}      Evaluate      "redis_monitor.${SUITE NAME}.log".replace(" ","-")
+    Set Suite Variable  ${redis_monitor_log_filename}
+    Remove File  ${EXECDIR}/${redis_monitor_log_filename}
+    Start Process    kubectl -n ricplt exec -it statefulset-ricplt-dbaas-server-0 redis-cli MONITOR>${EXECDIR}/${redis_monitor_log_filename}  shell=yes
+
+Stop Redis Monitor
+    Log To Console  Stopping redis monitor log
+    log_scripts.kill_redis_monitor_root_process
+
+
+Redis Monitor Logs - Verify Publish To Manipulation Channel
+    [Arguments]       ${ran_name}    ${event}
+    Log To Console  Verify Publish To Manipulation Channel
+    Sleep    3s
+    ${result}=  log_scripts.verify_redis_monitor_manipulation_message   ${EXECDIR}/${redis_monitor_log_filename}  ${ran_name}    ${event}
+    Should Be Equal As Strings    ${result}      True
+
+Redis Monitor Logs - Verify Publish To Connection Status Channel
+    [Arguments]       ${ran_name}    ${event}
+    Log To Console    Verify Publish To Connection Status Channel
+    Sleep    3s
+    ${result}=  log_scripts.verify_redis_monitor_connection_status_message   ${EXECDIR}/${redis_monitor_log_filename}  ${ran_name}    ${event}
+    Should Be Equal As Strings    ${result}      True
+
+Redis Monitor Logs - Verify NOT Published To Manipulation Channel
+    [Arguments]       ${ran_name}    ${event}
+    Log To Console  Verify NOT Published To Manipulation Channel
+    Sleep    3s
+    ${result}=  log_scripts.verify_redis_monitor_manipulation_message   ${EXECDIR}/${redis_monitor_log_filename}  ${ran_name}    ${event}
+    Should Be Equal As Strings    ${result}      False
\ No newline at end of file