diff options
author | Katarzyna Wasiel <katarzyna.wasiel@nokia.com> | 2021-02-10 08:50:57 +0100 |
---|---|---|
committer | Marcin Przybysz <marcin.przybysz@nokia.com> | 2021-02-26 10:17:59 +0000 |
commit | d1bc6cbd63f9cd7126baded2a40e78ebb67f65e1 (patch) | |
tree | abcbbd961f411cef1d1cf590a863b812d7e5cce2 /robot/resources/dcaemod_interface.robot | |
parent | c6232933e3c44de7dba7f24cd66ee944816b2941 (diff) |
Add DCAE MOD smoke/verification test using simple app
Issue-ID: INT-1855
Signed-off-by: Katarzyna Wasiel <katarzyna.wasiel@nokia.com>
Change-Id: Idbd385547cd5d0ef9ce7b53060d84ea8d9031e06
Diffstat (limited to 'robot/resources/dcaemod_interface.robot')
-rw-r--r-- | robot/resources/dcaemod_interface.robot | 277 |
1 files changed, 277 insertions, 0 deletions
diff --git a/robot/resources/dcaemod_interface.robot b/robot/resources/dcaemod_interface.robot new file mode 100644 index 00000000..9dda0a00 --- /dev/null +++ b/robot/resources/dcaemod_interface.robot @@ -0,0 +1,277 @@ +*** Settings *** +Library ONAPLibrary.Templating WITH NAME Templating +Library ONAPLibrary.Utilities +Library RequestsLibrary +Library Collections +Library String +Library OperatingSystem +Resource ../resources/global_properties.robot +Resource ../resources/dcae/inventory.robot +Resource ../resources/dcae/deployment.robot + + +*** Variables *** + +${CLIENT_ID} robot123 +${SESSION_NAME} nifi-api +${DCAEMOD_SERVER} http://dcaemod.simpledemo.onap.org +${IS_PROCESS_GROUP_SET} False +${IS_FLOW_DISTRIBUTED} False +${IS_SERVICE_DEPLOYED} False +${PROCESS_GROUP_ID} ${EMPTY} +${TYPE_ID} ${EMPTY} +${BLUEPRINT_NAME} ${EMPTY} +${DISTRIBUTION_TARGET_ID} ${EMPTY} +${REGISTRY_CLIENT_ID} ${EMPTY} +${DCAEMOD_ONBOARDING_API_SERVER} ${GLOBAL_DCAEMOD_ONBOARDING_API_SERVER_PROTOCOL}://${GLOBAL_DCAEMOD_ONBOARDING_API_SERVER_NAME}:${GLOBAL_DCAEMOD_ONBOARDING_API_SERVER_PORT} +${DCAEMOD_DESIGNTOOL_SERVER} ${GLOBAL_DCAEMOD_DESIGNTOOL_SERVER_PROTOCOL}://${GLOBAL_DCAEMOD_DESIGNTOOL_SERVER_NAME}:${GLOBAL_DCAEMOD_DESIGNTOOL_SERVER_PORT} +${DCAEMOD_DISTRIBUTOR_API_SERVER} ${GLOBAL_DCAEMOD_DISTRIBUTOR_API_SERVER_PROTOCOL}://${GLOBAL_DCAEMOD_DISTRIBUTOR_API_SERVER_NAME}:${GLOBAL_DCAEMOD_DISTRIBUTOR_API_SERVER_PORT} + +*** Keywords *** + +Deploy DCAE Application + [Arguments] ${componentSpec} ${dict_values} ${compSpecName} ${processGroupName} + + Onboard Component Spec ${componentSpec} ${dict_values} ${compSpecName} + ${processGroupId} = Create Process Group ${processGroupName} + Set Test Variable ${IS_PROCESS_GROUP_SET} True + Set Test Variable ${PROCESS_GROUP_ID} ${processGroupId} + + Create Processor ${PROCESS_GROUP_ID} ${compSpecName} + Save Flow By Version Controlling ${processGroupName} ${PROCESS_GROUP_ID} + Distribute The Flow ${PROCESS_GROUP_ID} + Set Test Variable ${IS_FLOW_DISTRIBUTED} True + + ${typeId} ${blueprintName} = Deploy Blueprint From Inventory ${processGroupName} ${compSpecName} + Set Test Variable ${IS_SERVICE_DEPLOYED} True + Set Test Variable ${TYPE_ID} ${typeId} + Set Test Variable ${BLUEPRINT_NAME} ${blueprintName} + + +Delete Config Map With Mounted Config File + ${configMapStatus} = Run Keyword And Return Status Config Map Exists ${CONFIG_MAP_NAME} + Run Keyword If ${configMapStatus} Delete Config Map ${CONFIG_MAP_NAME} + Remove File ${CONFIG_MAP_FILE} + +Delete Config Map + [Arguments] ${configMapName} + ${configMapDelete} = Run And Return Rc kubectl -n onap delete configmap ${configMapName} + Should Be Equal As Integers ${configMapDelete} 0 + +Create Config Map From File + [Arguments] ${configMapName} ${configMapFilePath} + + ${createConfigMapRC} = Run And Return Rc kubectl -n onap create configmap ${configMapName} --from-file=${configMapFilePath} + Should Be Equal As Integers ${createConfigMapRC} 0 + Wait Until Keyword Succeeds 1 min 5s Config Map Exists ${configMapName} + +Config Map Exists + [Arguments] ${configMapName} + ${configMapExists} = Run And Return Rc kubectl -n onap get configmap | grep ${configMapName} + Should Be Equal As Integers ${configMapExists} 0 + +Get Pod Yaml + [Arguments] ${compSpecName} + ${podYaml} = Run And Return Rc And Output kubectl -n onap get pod $(kubectl get pod -n onap | grep ${compSpecName} | awk '{print $1}') -o yaml + Should Be Equal As Integers ${podYaml[0]} 0 + ${podYaml} = Set Variable ${podYaml[1]} + + [Return] ${podYaml} + +Get Content Of Mounted Folder Inside Container + [Arguments] ${compSpecName} ${volumeMountPath} + ${mountedFolderContent} = Run And Return Rc And Output kubectl -n onap exec $(kubectl get pod -n onap | grep ${compSpecName} | awk '{print $1}') -- ls ${volumeMountPath} + Should Be Equal As Integers ${mountedFolderContent[0]} 0 + ${mountedFolderContent} = Set Variable ${mountedFolderContent[1]} + + [Return] ${mountedFolderContent} + +Verify If Volume Is Mounted + [Arguments] ${podYaml} ${volumeMountPath} + Should Contain ${podYaml} ${volumeMountPath} + +Verify If Config Map Is Mounted As Volume + [Arguments] ${podYaml} ${configMapName} + Should Contain ${podYaml} ${configMapName} + +Verify If Mounted Folder Is Empty + [Arguments] ${mountedFolderContent} + Should Be Empty ${mountedFolderContent} + +Verify If Mounted Folder Contains File + [Arguments] ${compSpecName} ${fileName} ${configMapDir} + + ${dirContent} = Run And Return Rc And Output kubectl -n onap exec $(kubectl get pod -n onap | grep ${compSpecName} | awk '{print $1}') -- ls ${configMapDir} + Should Be Equal As Integers ${dirContent[0]} 0 + Should Contain ${dirContent[1]} ${fileName} + +Verify File Content + [Arguments] ${compSpecName} ${configMapFilePath} ${content} + + ${fileContent} = Run And Return Rc And Output kubectl -n onap exec $(kubectl get pod -n onap | grep ${compSpecName} | awk '{print $1}') -- cat ${configMapFilePath} + Should Be Equal As Integers ${fileContent[0]} 0 + Should Contain ${fileContent[1]} ${content} + +Verify If Component Is Onboarded + [Arguments] ${compSpecName} + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_ONBOARDING_API_SERVER} + ${headers}= Create Dictionary content-type=application/json + ${resp} = Get Request ${SESSION_NAME} /onboarding/components?name=${compSpecName} headers=${headers} + Log ${resp.json()} + Should Not Be Empty ${resp.json().get('components')} + + +Onboard Component Spec + [Arguments] ${componentSpec} ${dict_values} ${compSpecName} + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_ONBOARDING_API_SERVER} + ${headers}= Create Dictionary content-type=application/json + Templating.Create Environment dcaemod ${GLOBAL_TEMPLATE_FOLDER} + ${componentSpec}= Templating.Apply Template dcaemod ${componentSpec} ${dict_values} + ${resp} = Post Request ${SESSION_NAME} /onboarding/components data=${componentSpec} headers=${headers} + Should Be True ${resp.status_code} < 300 + + Wait Until Keyword Succeeds 2 min 5s Verify If Component Is Onboarded ${compSpecName} + + Log ${resp.json()} + +Add Registry Client + + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_DESIGNTOOL_SERVER} + ${headers}= Create Dictionary content-type=application/json + ${data} = Set Variable {"revision": {"version": 0}, "component": {"name": "registry_test", "uri": "http://dcaemod-nifi-registry:18080"}} + ${resp} = Post Request ${SESSION_NAME} /nifi-api/controller/registry-clients data=${data} headers=${headers} + Should Be True ${resp.status_code} < 300 + + Set Global Variable ${REGISTRY_CLIENT_ID} ${resp.json().get('id')} + Set Global Variable ${REGISTRY_CLIENT_VERSION} ${resp.json().get('revision').get('version')} + +Add Distribution Target + + ${session}= Create Session distributor ${DCAEMOD_DISTRIBUTOR_API_SERVER} + ${headers}= Create Dictionary content-type=application/json + ${data} = Set Variable {"name": "runtime_test", "runtimeApiUrl": "http://dcaemod-runtime-api:9090"} + ${resp} = Post Request distributor /distributor/distribution-targets data=${data} headers=${headers} + Should Be True ${resp.status_code} < 300 + Set Global Variable ${DISTRIBUTION_TARGET_ID} ${resp.json().get('id')} + +Create Process Group + [Arguments] ${name} + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_DESIGNTOOL_SERVER} + ${headers}= Create Dictionary content-type=application/json + ${resp} = Get Request ${SESSION_NAME} /nifi-api/flow/process-groups/root/ headers=${headers} + Should Be True ${resp.status_code} < 300 + Log ${resp.json()} + ${parentGroupId} = Set Variable ${resp.json().get('processGroupFlow').get('id')} + + ${data} = Set Variable {"revision": {"clientId": "${CLIENT_ID}", "version": 0}, "component" : {"parentGroupId" : "${parentGroupId}", "name" : "${name}"}} + ${resp} = Post Request ${SESSION_NAME} /nifi-api/process-groups/${parentGroupId}/process-groups data=${data} headers=${headers} + Should Be True ${resp.status_code} < 300 + Log ${resp.json()} + + ${processGroupId} = Set Variable ${resp.json().get('id')} + + [Return] ${processGroupId} + + +Verify If NIFI Processor Is Created + [Arguments] ${typeName} + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_DESIGNTOOL_SERVER} + ${headers}= Create Dictionary content-type=application/json + ${resp} = Get Request ${SESSION_NAME} /nifi-api/flow/processor-types?type=org.onap.dcae.${typeName} headers=${headers} + Log ${resp.json()} + Should Not Be Empty ${resp.json().get('processorTypes')} + +Create Processor + [Arguments] ${processGroupId} ${compSpecName} + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_DESIGNTOOL_SERVER} + ${headers}= Create Dictionary content-type=application/json + ${typeName} = Evaluate $compSpecName.title() + ${data} = Set Variable {"revision": {"clientId": "${CLIENT_ID}", "version": 0},"component": {"parentGroupId": "${processGroupId}", "name": "${compSpecName}", "type": "org.onap.dcae.${typeName}"}} + Wait Until Keyword Succeeds 60s 5s Verify If NIFI Processor Is Created ${typeName} + ${resp} = Post Request ${SESSION_NAME} /nifi-api/process-groups/${processGroupId}/processors data=${data} headers=${headers} + Should Be True ${resp.status_code} < 300 + + +Save Flow By Version Controlling + [Arguments] ${flowName} ${processGroupId} + + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_DESIGNTOOL_SERVER} + ${headers}= Create Dictionary content-type=application/json + + ${resp} = Get Request ${SESSION_NAME} /nifi-api/flow/registries/${REGISTRY_CLIENT_ID}/buckets headers=${headers} + Should Be True ${resp.status_code} < 300 + Log ${resp.json()} + ${bucketId} = Set Variable ${resp.json().get('buckets')[0].get('id')} + + ${processGrVersion} ${_}= Get Process Group Revision ${processGroupId} + + ${data} = Set Variable {"versionedFlow": {"flowName": "${flowName}", "bucketId": "${bucketId}", "registryId": "${REGISTRY_CLIENT_ID}"}, "processGroupRevision": {"clientId": "${CLIENT_ID}", "version": ${processGrVersion}}} + ${resp} = Post Request ${SESSION_NAME} /nifi-api/versions/process-groups/${processGroupId} data=${data} headers=${headers} + Should Be True ${resp.status_code} < 300 + +Distribute The Flow + [Arguments] ${processGroupId} + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_DESIGNTOOL_SERVER} + ${session}= Create Session distributor ${DCAEMOD_DISTRIBUTOR_API_SERVER} + ${headers}= Create Dictionary content-type=application/json + ${resp} = Get Request ${SESSION_NAME} /nifi-api/process-groups/${processGroupId} headers=${headers} + Should Be True ${resp.status_code} < 300 + Log ${resp.json()} + ${flowId} = Set Variable ${resp.json().get('component').get('versionControlInformation').get('flowId')} + ${data} = Set Variable {"processGroupId": "${flowId}"} + ${resp} = Post Request distributor /distributor/distribution-targets/${DISTRIBUTION_TARGET_ID}/process-groups data=${data} headers=${headers} + Should Be True ${resp.status_code} < 300 + +Deploy Blueprint From Inventory + [Arguments] ${processGroupName} ${compSpecName} + ${blueprintName} = Set Variable ${processGroupName}_${compSpecName} + ${resp} = Wait Until Keyword Succeeds 7 min 20s Get Blueprint From Inventory ${blueprintName} + ${typeId} = Set Variable ${resp.json().get('items')[0].get('typeId')} + ${data} = Set Variable {"serviceTypeId": "${typeId}"} + Deploy Service ${data} ${blueprintName} 10 minute + + [Return] ${typeId} ${blueprintName} + +Get Process Group Revision + [Arguments] ${processGroupId} + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_DESIGNTOOL_SERVER} + ${headers}= Create Dictionary content-type=application/json + ${resp} = Get Request ${SESSION_NAME} /nifi-api/versions/process-groups/${processGroupId} headers=${headers} + Should Be True ${resp.status_code} < 300 + ${currentProcessGrVersion} = Set Variable ${resp.json().get('processGroupRevision').get('version')} + ${clientId} = Set Variable ${resp.json().get('processGroupRevision').get('clientId')} + + [Return] ${currentProcessGrVersion} ${clientId} + +Delete Distribution Target + ${session}= Create Session distributor ${DCAEMOD_DISTRIBUTOR_API_SERVER} + ${resp} = Delete Request distributor /distributor/distribution-targets/${DISTRIBUTION_TARGET_ID} + Should Be True ${resp.status_code} < 300 + +Delete Process Group + [Arguments] ${processGroupId} + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_DESIGNTOOL_SERVER} + ${processGrVersion} ${clientId}= Get Process Group Revision ${processGroupId} + ${resp} = Delete Request ${SESSION_NAME} /nifi-api/process-groups/${processGroupId}?version=${processGrVersion}&clientId=${clientId} + Should Be True ${resp.status_code} < 300 + +Delete Registry Client + ${session}= Create Session ${SESSION_NAME} ${DCAEMOD_DESIGNTOOL_SERVER} + ${resp} = Delete Request ${SESSION_NAME} /nifi-api/controller/registry-clients/${REGISTRY_CLIENT_ID}?version=${REGISTRY_CLIENT_VERSION} + Should Be True ${resp.status_code} < 300 + +Configure Nifi Registry And Distribution Target + Add Registry Client + Add Distribution Target + +Delete Nifi Registry And Distribution Target + Run Keyword If '${DISTRIBUTION_TARGET_ID}' != '${EMPTY}' Wait Until Keyword Succeeds 2 min 5s Delete Distribution Target + Run Keyword If '${REGISTRY_CLIENT_ID}' != '${EMPTY}' Wait Until Keyword Succeeds 2 min 5s Delete Registry Client + +Delete Process Group And Blueprint And Deployment + Run Keyword If ${IS_PROCESS_GROUP_SET} Run Keywords Delete Process Group ${PROCESS_GROUP_ID} + ... AND Set Suite Variable ${IS_PROCESS_GROUP_SET} False + Run Keyword If ${IS_FLOW_DISTRIBUTED} Run Keywords Delete Blueprint From Inventory ${TYPE_ID} + ... AND Set Suite Variable ${IS_FLOW_DISTRIBUTED} False + Run Keyword If ${IS_SERVICE_DEPLOYED} Run Keywords Undeploy Service ${BLUEPRINT_NAME} + ... AND Set Suite Variable ${IS_SERVICE_DEPLOYED} False
\ No newline at end of file |