blob: e8382883c28507cb27e06bcd8eecea34a4be0216 [file] [log] [blame]
*** Settings ***
Documentation 5G SON Usecase functionality
Library RequestsLibrary
Library OperatingSystem
Library Collections
Library String
Library DateTime
Library SSHLibrary
Library JSONLibrary
Library Process
Library ONAPLibrary.JSON
Library ONAPLibrary.Utilities
Resource ../../resources/policy_interface.robot
Resource ../../resources/mr_interface.robot
Resource ../../resources/dcae/ves_interface.robot
Resource ../../resources/usecases/5gbulkpm_interface.robot
Suite Teardown SON Usecase Teardown
*** Variables ***
${POLICY_TYPE_PATH} /policy/api/v1/policytypes
${CL_DATA_PATH} ${POLICY_TYPE_PATH}/onap.policies.controlloop.operational.common.Drools/versions/1.0.0/policies
${MONITORING_DATA_PATH} ${POLICY_TYPE_PATH}/onap.policies.monitoring.docker.sonhandler.app/versions/1.0.0/policies
@{TOPICS} PCI-NOTIF-TOPIC-NGHBR-LIST-CHANGE-INFO unauthenticated.SEC_FAULT_OUTPUT unauthenticated.VES_MEASUREMENT_OUTPUT unauthenticated.DCAE_CL_OUTPUT DCAE_CL_RSP SDNR-CL
${DMAAP_MR_URL} ${GLOBAL_MR_SERVER_PROTOCOL}://${GLOBAL_INJECTED_MR_IP_ADDR}:${GLOBAL_MR_SERVER_PORT}
${INVENTORY_SERVER} ${GLOBAL_INVENTORY_SERVER_PROTOCOL}://${GLOBAL_INVENTORY_SERVER_NAME}:${GLOBAL_INVENTORY_SERVER_PORT}
${DEPLOYMENT_SERVER} ${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PROTOCOL}://${GLOBAL_DEPLOYMENT_HANDLER_SERVER_NAME}:${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PORT}
${INVENTORY_ENDPOINT} /dcae-service-types
${DEPLOYMENT_ENDPOINT} dcae-deployments
${DEPLOY_DATA_PATH} /policy/pap/v1/pdps/policies
${5GSON_RESOURCES_PATH} ${EXECDIR}/robot/assets/usecases/5gson
${CONFIGDB_BLUEPRINT_PATH} ${5GSON_RESOURCES_PATH}/k8s-configdb.yaml
${BLUEPRINT_TEMPLATE_PATH} ${EXECDIR}/robot/assets/usecases/5gbulkpm/blueprintTemplate.json
${CONFIGDB_INSERT_PATH} /api/sdnc-config-db/v3/insertData
${CONFIGDB_CREATENBR_PATH} /api/sdnc-config-db/v3/createNbr
@{NEW_NBRS} Chn0012 Chn0116 Chn0071
*** Test Cases ***
Creating Policy Types
[Tags] 5gson
${monitoring_policy_type}= Get Binary File ${5GSON_RESOURCES_PATH}/monitoring_policy_type.json
${resp}= Run Policy Api Post Request data_path=${POLICY_TYPE_PATH} data=${monitoring_policy_type}
Should Be Equal As Strings ${resp.status_code} 200
Creating SON Policies
[Tags] 5gson
${pci_policy}= Get Binary File ${5GSON_RESOURCES_PATH}/pci.json
${resp}= Run Policy Api Post Request data_path=${CL_DATA_PATH} data=${pci_policy}
Should Be Equal As Strings ${resp.status_code} 200
${anr_policy}= Get Binary File ${5GSON_RESOURCES_PATH}/anr.json
${resp}= Run Policy Api Post Request data_path=${CL_DATA_PATH} data=${anr_policy}
Should Be Equal As Strings ${resp.status_code} 200
${son_policy}= Get Binary File ${5GSON_RESOURCES_PATH}/son_monitoring.json
${resp}= Run Policy Api Post Request data_path=${MONITORING_DATA_PATH} data=${son_policy}
Should Be Equal As Strings ${resp.status_code} 200
Deploying SON Polciies
[Tags] 5gson
${pci_deploy}= Get Binary File ${5GSON_RESOURCES_PATH}/pci_deploy.json
${resp}= Run Policy Pap Post Request data_path=${DEPLOY_DATA_PATH} data=${pci_deploy}
Should Be Equal As Strings ${resp.status_code} 200
${anr_deploy}= Get Binary File ${5GSON_RESOURCES_PATH}/anr_deploy.json
${resp}= Run Policy Pap Post Request data_path=${DEPLOY_DATA_PATH} data=${anr_deploy}
Should Be Equal As Strings ${resp.status_code} 200
${son_deploy}= Get Binary File ${5GSON_RESOURCES_PATH}/son_deploy.json
${resp}= Run Policy Pap Post Request data_path=${DEPLOY_DATA_PATH} data=${son_deploy}
Should Be Equal As Strings ${resp.status_code} 200
Create dmaap topics
[Tags] 5gson
:FOR ${topic} IN @{TOPICS}
\ ${data_path}= Set Variable /events/${topic}
\ ${resp}= Run MR Post Request data_path=${data_path}
\ Should Be Equal As Strings ${resp.status_code} 200
Deploy SON Handler
[Tags] 5gson
${headers}= Create Dictionary content-type=application/json
${session}= Create Session inv ${INVENTORY_SERVER}
${resp}= Get Request inv ${INVENTORY_ENDPOINT}?typeName=k8s-sonhms
${json}= Set Variable ${resp.json()}
${serviceTypeId-sonhms} Set Variable ${json['items'][0]['typeId']}
${sonhms_inputs}= Get Binary File ${5GSON_RESOURCES_PATH}/sonhms_inputs.json
${deployment_data}= Set Variable {"serviceTypeId": "${serviceTypeId-sonhms}", "inputs": ${sonhms_inputs}}
${session}= Create Session deployment-son ${DEPLOYMENT_SERVER}
${resp}= Put Request deployment-son /${DEPLOYMENT_ENDPOINT}/sonhms data=${deployment_data} headers=${headers}
${operationLink} Set Variable ${resp.json().get('links').get('status')}
${operationId} Fetch From Right ${operationLink} /
Wait Until Keyword Succeeds 5 minute 20 sec Deployment Status ${DEPLOYMENT_SERVER} ${DEPLOYMENT_ENDPOINT} sonhms ${operationId}
Deploy Config DB
[Tags] 5gson
${configdb_blueprint_path} Set Variable ${5GSON_RESOURCES_PATH}/k8s-configdb.yaml
${blueprint}= OperatingSystem.Get File ${configdb_blueprint_path}
${templatejson}= Load JSON From File ${BLUEPRINT_TEMPLATE_PATH}
${templatejson}= Update Value To Json ${templatejson} blueprintTemplate ${blueprint}
${templatejson}= Update Value To Json ${templatejson} typeName configdb
${json_data} Convert JSON To String ${templatejson}
${headers}= Create Dictionary content-type=application/json
${session}= Create Session sftp ${INVENTORY_SERVER}
${resp}= Post Request sftp ${INVENTORY_ENDPOINT} data=${json_data} headers=${headers}
${serviceTypeId-configdb}= Set Variable ${resp.json().get('typeId')}
Set Global Variable ${serviceTypeId-configdb}
${deployment_data}= Set Variable {"serviceTypeId": "${serviceTypeId-configdb}" }
${session}= Create Session deployment-configdb ${DEPLOYMENT_SERVER}
${resp}= Put Request deployment-configdb /${DEPLOYMENT_ENDPOINT}/configdb data=${deployment_data} headers=${headers}
${operationLink}= Set Variable ${resp.json().get('links').get('status')}
${operationId} Fetch From Right ${operationLink} /
Wait Until Keyword Succeeds 2 minute 5 sec Deployment Status ${DEPLOYMENT_SERVER} ${DEPLOYMENT_ENDPOINT} configdb ${operationId}
Load Data to Config DB
[Tags] 5gson
Sleep 30 seconds
${initial_dump} Get Binary File ${5GSON_RESOURCES_PATH}/dump_file.json
${headers}= Create Dictionary content-type=application/json
${session}= Create Session configdb http://configdb.onap:8080
${resp}= Put Request configdb ${CONFIGDB_INSERT_PATH} data=${initial_dump} headers=${headers}
Should Be Equal As Strings ${resp.status_code} 201
Post Fault Message to VES Collector
[Tags] 5gson
${session}= Create Session configdb http://configdb.onap:8080
${headers}= Create Dictionary content-type=application/json
:FOR ${NBR} IN @{NEW_NBRS}
\ ${nbr_obj} Set Variable {"targetCellId": "${NBR}", "ho": true}
\ ${resp} Put Request configdb ${CONFIGDB_CREATENBR_PATH}/Chn0005 headers=${headers} data=${nbr_obj}
\ Should Be Equal As Strings ${resp.status_code} 201
${fault_event}= Set Variable ${5GSON_RESOURCES_PATH}/son_fault.json
Send Event to VES Collector event=${fault_event}
Verifying Modify Config message from SDNR-CL
[Tags] 5gson
${no_of_msgs} Set Variable ${0}
Set Global Variable ${no_of_msgs}
Wait Until Keyword Succeeds 4 minutes 30 seconds Verify SDNC Dmaap Message
*** Keywords ***
SON Usecase Teardown
Undeploy Service ${DEPLOYMENT_SERVER} /${DEPLOYMENT_ENDPOINT}/sonhms
Undeploy Service ${DEPLOYMENT_SERVER} /${DEPLOYMENT_ENDPOINT}/configdb
Undeploy Service ${INVENTORY_SERVER} ${INVENTORY_ENDPOINT}/${serviceTypeId-configdb}
Verify SDNC Dmaap Message
${resp}= Run MR Get Request /events/SDNR-CL/robot-cg/robot-cid
@{messages}= Set Variable ${resp.json()}
Should Not Be Empty ${messages}
:FOR ${msg} IN @{messages}
\ ${msg_json}= Convert String to JSON ${msg}
\ ${rpc_name}= Set Variable ${msg_json.get("rpc-name")}
\ ${no_of_msgs}= Set Variable If "${rpc_name}" == "modifyconfig" ${no_of_msgs + 1}
Should Be Equal As Numbers ${no_of_msgs} 4