From 319d0ad25fc3c0f088b8cc6cebd1e03463bbb9d3 Mon Sep 17 00:00:00 2001 From: eHanan Date: Tue, 3 Sep 2019 13:45:18 +0000 Subject: [PATCH] Create VNF Instantiation Testing Change-Id: I230e569c0b25d31aaf63d5476c7585673c9eb58b Issue-ID: SO-2238 Signed-off-by: eHanan --- plans/so/integration-etsi-testing/config/env | 2 +- .../bpmn-infra/onapheat/override.yaml | 6 +++ .../vnfm-adapter/onapheat/override.yaml | 19 ++++++++ .../so/integration-etsi-testing/docker-compose.yml | 4 +- tests/so/etsi/data/vnfInstantiationRequest.json | 49 +++++++++++++++++++ tests/so/etsi/etsi_tests.robot | 56 ++++++++++++++++++---- 6 files changed, 123 insertions(+), 13 deletions(-) create mode 100644 plans/so/integration-etsi-testing/config/override-files/vnfm-adapter/onapheat/override.yaml create mode 100644 tests/so/etsi/data/vnfInstantiationRequest.json diff --git a/plans/so/integration-etsi-testing/config/env b/plans/so/integration-etsi-testing/config/env index 54d67205..61603aac 100644 --- a/plans/so/integration-etsi-testing/config/env +++ b/plans/so/integration-etsi-testing/config/env @@ -1,5 +1,5 @@ NEXUS_DOCKER_REPO_MSO=nexus3.onap.org:10001 -TAG=1.4.0-STAGING-latest +TAG=1.4.3-STAGING-latest TIME_OUT_DEFAULT_VALUE_SEC=1200 PROJECT_NAME=etsiintegrationtesting DEFAULT_NETWORK_NAME=etsiintegrationtesting_default diff --git a/plans/so/integration-etsi-testing/config/override-files/bpmn-infra/onapheat/override.yaml b/plans/so/integration-etsi-testing/config/override-files/bpmn-infra/onapheat/override.yaml index d38888d5..66e3b206 100644 --- a/plans/so/integration-etsi-testing/config/override-files/bpmn-infra/onapheat/override.yaml +++ b/plans/so/integration-etsi-testing/config/override-files/bpmn-infra/onapheat/override.yaml @@ -258,6 +258,12 @@ sdnc: svc: types: PORT-MIRROR,PPROBE +so: + vnfm: + adapter: + url: http://vnfm-adapter:9092/so/vnfm-adapter/v1/ + auth: Basic dm5mbTpwYXNzd29yZDEk + appc: client: topic: diff --git a/plans/so/integration-etsi-testing/config/override-files/vnfm-adapter/onapheat/override.yaml b/plans/so/integration-etsi-testing/config/override-files/vnfm-adapter/onapheat/override.yaml new file mode 100644 index 00000000..e2f8cc14 --- /dev/null +++ b/plans/so/integration-etsi-testing/config/override-files/vnfm-adapter/onapheat/override.yaml @@ -0,0 +1,19 @@ +server: + port: 9092 + tomcat: + max-threads: 4 +ssl-enable: false +aai: + auth: 221187EFA3AD4E33600DE0488F287099934CE65C3D0697BCECC00BB58E784E07CD74A24581DC31DBC086FF63DF116378776E9BE3D1325885 + version: v15 + endpoint: https://aai-simulator:9993 +mso: + key: 07a7159d3bf51a0e53be7a8f89699be7 +sdc: + username: mso + password: 76966BDD3C7414A03F7037264FF2E6C8EEC6C28F2B67F2840A1ED857C0260FEE731D73F47F828E5527125D29FD25D3E0DE39EE44C058906BF1657DE77BF897EECA93BDC07FA64F + key: 566B754875657232314F5548556D3665 + endpoint: http://sdc-simulator:9991/ + toscametapath: Artifacts/Deployment/OTHER/TOSCA.meta +vnfmadapter: + endpoint: http://vnfm-adapter:9092 \ No newline at end of file diff --git a/plans/so/integration-etsi-testing/docker-compose.yml b/plans/so/integration-etsi-testing/docker-compose.yml index 2c7261c2..76dd7b6a 100644 --- a/plans/so/integration-etsi-testing/docker-compose.yml +++ b/plans/so/integration-etsi-testing/docker-compose.yml @@ -234,7 +234,7 @@ services: ports: - "30224:30224" volumes: - - ${TEST_LAB_DIR}/volumes/so/config/api-handler-infra/onapheat:/app/config + - ${CONFIG_DIR_PATH}/override-files/so-monitoring/onapheat:/app/config environment: - APP=so-monitoring - JVM_ARGS=-Xms64m -Xmx512m @@ -251,7 +251,7 @@ services: - "9092:9092" volumes: - ${TEST_LAB_DIR}/volumes/so/ca-certificates/onapheat:/app/ca-certificates - - ${TEST_LAB_DIR}/volumes/so/config/vnfm-adapter/onapheat:/app/config + - ${CONFIG_DIR_PATH}/override-files/vnfm-adapter/onapheat:/app/config environment: - APP=vnfm-adapter - JVM_ARGS=-Xms64m -Xmx512m diff --git a/tests/so/etsi/data/vnfInstantiationRequest.json b/tests/so/etsi/data/vnfInstantiationRequest.json new file mode 100644 index 00000000..a4cc5c90 --- /dev/null +++ b/tests/so/etsi/data/vnfInstantiationRequest.json @@ -0,0 +1,49 @@ +{ + "requestDetails": { + "requestInfo": { + "instanceName": "CsitEtsiVnfInstance", + "source": "VID", + "suppressRollback": false, + "requestorId": "demo", + "productFamilyId": "f13844f4-dbf8-4d0e-a979-45204f3ddb4e" + }, + "modelInfo": { + "modelType": "vnf", + "modelInvariantId": "0a0b9979-863d-4b7e-b7f4-d27725a182b3", + "modelVersionId": "8f43a8c9-c677-462a-ae36-8ddb5990a60d", + "modelName": "manualDistributionTestVNF", + "modelVersion": "1.0", + "modelCustomizationId": "82ad3aa0-edc6-410c-a217-655fb064323f", + "modelCustomizationName": "manualDistributionTestVNF 0" + }, + "requestParameters": { + "userParams": [], + "testApi": "GR_API" + }, + "cloudConfiguration": { + "lcpCloudRegionId": "EtsiCloudRegion", + "cloudOwner": "CloudOwner", + "tenantId": "693c7729b2364a26a3ca602e6f66187d" + }, + "lineOfBusiness": { + "lineOfBusinessName": "EtsiCsitLineOfBusiness" + }, + "platform": { + "platformName": "EtsiCsitPlatform" + }, + "relatedInstanceList": [ + { + "relatedInstance": { + "instanceId": "", + "modelInfo": { + "modelType": "service", + "modelName": "Sol004Zip4Service", + "modelInvariantId": "0ddc448d-5513-44bc-8b02-5759d84600d5", + "modelVersion": "1.0", + "modelVersionId": "99d59273-4450-4034-9141-027f0c1a807a" + } + } + } + ] + } +} \ No newline at end of file diff --git a/tests/so/etsi/etsi_tests.robot b/tests/so/etsi/etsi_tests.robot index b2bf3ede..4459c07a 100644 --- a/tests/so/etsi/etsi_tests.robot +++ b/tests/so/etsi/etsi_tests.robot @@ -5,7 +5,8 @@ Library OperatingSystem Library json *** Variables *** - +${SLEEP_INTERVAL_SEC}= 5 +${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT}= 48 # Represents the maximum number of attempts that will be made before a timeout. It sleeps for SLEEP_INTERVAL_SEC seconds before retry. *** Test Cases *** Distribute Service Template @@ -23,20 +24,55 @@ Invoke Service Instantiation ${service_instantiation_request}= Post Request api_handler_session /onap/so/infra/serviceInstantiation/v7/serviceInstances data=${data} headers=${headers} Run Keyword If '${service_instantiation_request.status_code}' == '200' log to console \nexecuted with expected result log to console ${service_instantiation_request.content} - ${service_instantiation_json_responce}= Evaluate json.loads("""${service_instantiation_request.content}""") json - - ${actual_request_state}= SET VARIABLE "" + ${service_instantiation_json_response}= Evaluate json.loads("""${service_instantiation_request.content}""") json + ${request_ID}= Set Variable ${service_instantiation_json_response}[requestReferences][requestId] + ${service_instance_Id}= Set Variable ${service_instantiation_json_response}[requestReferences][instanceId] + SET GLOBAL VARIABLE ${service_instance_Id} + ${actual_request_state}= Set Variable "" - : FOR ${INDEX} IN RANGE 48 - \ ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${service_instantiation_json_responce}[requestReferences][requestId] + : FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} + \ ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} \ Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result \ log to console ${orchestration_status_request.content} - \ ${orchestration_json_responce}= Evaluate json.loads("""${orchestration_status_request.content}""") json - \ ${actual_request_state}= SET VARIABLE ${orchestration_json_responce}[request][requestStatus][requestState] + \ ${orchestration_json_response}= Evaluate json.loads("""${orchestration_status_request.content}""") json + \ ${actual_request_state}= SET VARIABLE ${orchestration_json_response}[request][requestStatus][requestState] \ Log To Console Received actual repsonse status:${actual_request_state} \ RUN KEYWORD IF '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop - \ log to console Will try again after 5 seconds - \ SLEEP 5s + \ log to console Will try again after ${SLEEP_INTERVAL_SEC} seconds + \ SLEEP ${SLEEP_INTERVAL_SEC}s + Log To Console final repsonse status received: ${actual_request_state} Run Keyword If '${actual_request_state}' == 'COMPLETE' log to console \nexecuted with expected result Should Be Equal As Strings '${actual_request_state}' 'COMPLETE' + +Invoke VNF Instantiation + Run Keyword If "${service_instance_Id}"!="${EMPTY}" Log to Console Service Instance ID :${service_instance_Id} received + ... ELSE Fail Log to Console Invalid Service Instance ID :${service_instance_Id} recieved + + Create Session api_handler_session http://${REPO_IP}:8080 + ${data}= Get Binary File ${CURDIR}${/}data${/}vnfInstantiationRequest.json + ${vnf_instantiate_request_json}= evaluate json.loads('''${data}''') json + set to dictionary ${vnf_instantiate_request_json}[requestDetails][relatedInstanceList][0][relatedInstance] instanceId=${service_instance_Id} + ${vnf_instantiate_request_string}= evaluate json.dumps(${vnf_instantiate_request_json}) json + + &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json + ${vnf_instantiate_request}= Post Request api_handler_session /onap/so/infra/serviceInstantiation/v7/serviceInstances/${service_instance_Id}/vnfs data=${vnf_instantiate_request_string} headers=${headers} + Run Keyword If '${vnf_instantiate_request.status_code}' == '200' log to console \nexecuted with expected result + ${vnf_instantiate_json_response}= Evaluate json.loads("""${vnf_instantiate_request.content}""") json + ${request_ID}= Set Variable ${vnf_instantiate_json_response}[requestReferences][requestId] + ${actual_request_state}= SET VARIABLE "" + + : FOR ${INDEX} IN RANGE ${MAXIMUM_ATTEMPTS_BEFORE_TIMEOUT} + \ ${orchestration_status_request}= Get Request api_handler_session /onap/so/infra/orchestrationRequests/v7/${request_ID} + \ Run Keyword If '${orchestration_status_request.status_code}' == '200' log to console \nexecuted with expected result + \ Log To Console ${orchestration_status_request.content} + \ ${orchestration_json_response}= Evaluate json.loads("""${orchestration_status_request.content}""") json + \ ${actual_request_state}= SET VARIABLE ${orchestration_json_response}[request][requestStatus][requestState] + \ ${service_instance_Id}= SET VARIABLE ${orchestration_json_response}[request][instanceReferences][serviceInstanceId] + \ RUN KEYWORD IF '${actual_request_state}' == 'COMPLETE' or '${actual_request_state}' == 'FAILED' Exit For Loop + \ Log To Console Will try again after ${SLEEP_INTERVAL_SEC} seconds + \ SLEEP ${SLEEP_INTERVAL_SEC}s + + Log To Console final repsonse status received: ${actual_request_state} + Run Keyword If '${actual_request_state}' == 'COMPLETE' log to console \nexecuted with expected result + Should Be Equal As Strings '${actual_request_state}' 'COMPLETE' \ No newline at end of file -- 2.16.6