diff options
15 files changed, 861 insertions, 128 deletions
diff --git a/plans/cli/sanity-check/setup.sh b/plans/cli/sanity-check/setup.sh index 7945ff56..5050cb6e 100644 --- a/plans/cli/sanity-check/setup.sh +++ b/plans/cli/sanity-check/setup.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright 2017 Huawei Technologies Co., Ltd. +# Copyright 2020 Huawei Technologies Co., Ltd. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,33 +15,11 @@ # limitations under the License. # # Place the scripts in run order: -source ${SCRIPTS}/common_functions.sh - -#start msb -docker run -d -p 8500:8500 --name msb_consul consul:0.9.3 -MSB_CONSUL_IP=`get-instance-ip.sh msb_consul` -echo MSB_CONSUL_IP=${MSB_CONSUL_IP} - -docker run -d -p 10081:10081 -e CONSUL_IP=$MSB_CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery -MSB_DISCOVERY_IP=`get-instance-ip.sh msb_discovery` -echo DISCOVERY_IP=${MSB_DISCOVERY_IP} - -docker run -d -p 80:80 -e CONSUL_IP=$MSB_CONSUL_IP -e SDCLIENT_IP=$MSB_DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway -MSB_IAG_IP=`get-instance-ip.sh msb_internal_apigateway` -echo MSB_IAG_IP=${MSB_IAG_IP} -# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway) -for i in {1..10}; do - curl -sS -m 1 ${MSB_CONSUL_IP}:8500 && curl -sS -m 1 ${MSB_DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IAG_IP}:80 && break - echo sleep $i - sleep $i -done - -#Need some time for the initialization of MSB services -sleep 60 +source ${SCRIPTS}/common_functions.sh # Start cli -docker run -d --name cli -e CLI_MODE=daemon nexus3.onap.org:10001/onap/cli:v1.1.0 +docker run -d --name cli -e OPEN_CLI_MODE=daemon nexus3.onap.org:10001/onap/cli:6.0.0 # Wait for cli initialization echo Wait for CLI initialization @@ -52,4 +30,4 @@ done CLI_IP=`get-instance-ip.sh cli` # Pass any variables required by Robot test suites in ROBOT_VARIABLES -ROBOT_VARIABLES="-v CLI_IP:${CLI_IP} -v MSB_IAG_IP:${MSB_IAG_IP}" +ROBOT_VARIABLES="-v CLI_IP:${CLI_IP}" diff --git a/plans/dcaegen2-services-pmsh/testsuite/assets/aai_sim/aai-initializer.json b/plans/dcaegen2-services-pmsh/testsuite/assets/aai_sim/aai-initializer.json index 5705e325..0aff46ad 100644 --- a/plans/dcaegen2-services-pmsh/testsuite/assets/aai_sim/aai-initializer.json +++ b/plans/dcaegen2-services-pmsh/testsuite/assets/aai_sim/aai-initializer.json @@ -1,7 +1,7 @@ [ { "httpRequest": { - "path": "/aai/v20/query.*" + "path": "/aai/v21/query.*" }, "httpResponse": { "statusCode": 200, @@ -62,7 +62,7 @@ }, { "httpRequest":{ - "path":"/aai/v20/service-design-and-creation/models/model.*" + "path":"/aai/v21/service-design-and-creation/models/model.*" }, "httpResponse":{ "statusCode":200, diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/apply-workarounds.sh b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/apply-workarounds.sh index 5833a9ef..cb61ca34 100755 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/apply-workarounds.sh +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/apply-workarounds.sh @@ -67,10 +67,10 @@ apply_workaround() BEGIN; insert into $WORKFLOW_TABLE_NAME(artifact_uuid, artifact_name, name, operation_name, version, description, body, resource_target, source) values - ('4752c287-c5a8-40a6-8fce-077e1d54104b','PNFSoftwareUpgrade','PNFSoftwareUpgrade','PNFSoftwareUpgrade',1.0,'Pnf Workflow to upgrade software',null,'pnf','native'); + ('4752c287-c5a8-40a6-8fce-077e1d54104b','GenericPnfSoftwareUpgrade','GenericPnfSoftwareUpgrade','GenericPnfSoftwareUpgrade',1.0,'Pnf Workflow to upgrade software',null,'pnf','native'); insert into $WORKFLOW_TABLE_NAME(artifact_uuid, artifact_name, name, operation_name, version, description, body, resource_target, source) values - ('02bffbd9-6af0-4f8d-bf9b-d1dfccd28c84','PNFSWUPDownload','PNFSWUPDownload','PNFSWUPDownload',1.0,'Pnf Workflow to download software',null,'pnf','native'); + ('02bffbd9-6af0-4f8d-bf9b-d1dfccd28c84','GenericPnfSWUPDownload','GenericPnfSWUPDownload','GenericPnfSWUPDownload',1.0,'Pnf Workflow to download software',null,'pnf','native'); COMMIT; EOF diff --git a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/env b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/env index 2cf20d9b..95469f90 100644 --- a/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/env +++ b/plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/env @@ -1,6 +1,6 @@ NEXUS_DOCKER_REPO_MSO=nexus3.onap.org:10001 DOCKER_ENVIRONMENT=remote -TAG=1.6.1-STAGING-latest +TAG=1.7.5 TIME_OUT_DEFAULT_VALUE_SEC=1200 PROJECT_NAME=pnfSwU DEFAULT_NETWORK_NAME=pnfswu_default diff --git a/scripts/optf-has/has/has-properties/conductor.conf.onap b/scripts/optf-has/has/has-properties/conductor.conf.onap index 6cf8fb29..3ce7fa05 100644 --- a/scripts/optf-has/has/has-properties/conductor.conf.onap +++ b/scripts/optf-has/has/has-properties/conductor.conf.onap @@ -296,6 +296,7 @@ concurrent = true # Time between checking for new plans. Default value is 1. (integer value) # Minimum value: 1 #polling_interval = 1 +opt_schema_file = /opt/has/conductor/etc/conductor/opt_schema.json # (integer value) # Minimum value: 1 @@ -335,7 +336,7 @@ concurrent = true # # Extensions list to use (list value) -#extensions = aai +extensions = aai,generator [messaging_server] diff --git a/scripts/optf-has/has/has_script.sh b/scripts/optf-has/has/has_script.sh index f851051c..3b24d47a 100755 --- a/scripts/optf-has/has/has_script.sh +++ b/scripts/optf-has/has/has_script.sh @@ -31,7 +31,7 @@ cd ${DIR} COND_CONF=/tmp/conductor/properties/conductor.conf LOG_CONF=/tmp/conductor/properties/log.conf IMAGE_NAME=nexus3.onap.org:10001/onap/optf-has -IMAGE_VER=2.0.2-SNAPSHOT-latest +IMAGE_VER=2.1.2-SNAPSHOT-latest BUNDLE=/tmp/conductor/properties/AAF_RootCA.cer mkdir -p /tmp/conductor/properties diff --git a/scripts/optf-has/has/simulator_script.sh b/scripts/optf-has/has/simulator_script.sh index ccb479b2..c52535cb 100755 --- a/scripts/optf-has/has/simulator_script.sh +++ b/scripts/optf-has/has/simulator_script.sh @@ -44,16 +44,10 @@ if [ ${USER} != 'jenkins' ]; then fi # prepare aaisim -cd ${WORK_DIR}/has/conductor/conductor/tests/functional/simulators/aaisim/ - -# check Dockerfile content -cat ./Dockerfile - -# build aaisim -docker build -t aaisim . +cd ${WORK_DIR}/has/conductor/conductor/tests/functional/simulators/ # run aaisim -docker run -d --name aaisim -p 8081:8081 aaisim +./run_aaisim.sh AAISIM_IP=`docker inspect --format '{{ .NetworkSettings.Networks.bridge.IPAddress}}' aaisim` echo "AAISIM_IP=${AAISIM_IP}" diff --git a/tests/cli/startup/startup_check.robot b/tests/cli/startup/startup_check.robot index 18788ddd..c71870b2 100644 --- a/tests/cli/startup/startup_check.robot +++ b/tests/cli/startup/startup_check.robot @@ -5,96 +5,20 @@ Library Process *** Variables *** ${cli_exec} docker exec cli onap -${cli_exec_cli_10_help} docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap --help" -${cli_exec_cli_10_version} docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap --version" -${cli_exec_cli_10_schema_refresh} docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap schema-refresh" -${cli_exec_cli_10_schema_validate} docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap schema-validate -i -l schema-refresh.yaml" -${cli_exec_cli_10_schema_validate_invalid} docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap schema-validate -i -l invalid-yaml-path.yaml" -${cli_exec_cli_10_schema_validate_empty} docker exec cli bash -c "export CLI_PRODUCT_VERSION=cli-1.0 && onap schema-validate" - -${cli_exec_onap_11} docker exec cli bash -c "export CLI_PRODUCT_VERSION=onap-1.1 && onap" -${cli_exec_onap_11_microservice_create} docker exec cli bash -c "export CLI_PRODUCT_VERSION=onap-1.1 && onap microservice-create --service-name test-service --service-version v1 --service-url /api/test/v1 --host-url http://${MSB_IAG_IP}:80 23.14.15.156 80" -${cli_exec_onap_11_microservice_list} docker exec cli bash -c "export CLI_PRODUCT_VERSION=onap-1.1 && onap microservice-list --host-url http://${MSB_IAG_IP}:80 --long" -${cli_exec_onap_11_microservice_show} docker exec cli bash -c "export CLI_PRODUCT_VERSION=onap-1.1 && onap microservice-show --service-name test-service --service-version v1 --host-url http://${MSB_IAG_IP}:80" -${cli_exec_onap_11_microservice_delete} docker exec cli bash -c "export CLI_PRODUCT_VERSION=onap-1.1 && onap microservice-delete --service-name test-service --service-version v1 --host-url http://${MSB_IAG_IP}:80 --node-ip 23.14.15.156 --node-port 80" +${cli_exec_cli_10_version} docker exec cli bash -c "export OPEN_CLI_PRODUCT_IN_USE=open-cli && onap --version" *** Test Cases *** Liveness Test [Documentation] Check cli liveness check - Create Session cli http://${CLI_IP}:8080 + Create Session cli https://${CLI_IP}:443 CheckUrl cli / -Check Cli help - [Documentation] check cli help command - ${cli_cmd_output}= Run Process ${cli_exec_cli_10_help} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 0 - Should Contain ${cli_cmd_output.stdout} CLI version - Check Cli Version Default [Documentation] check cli default version ${cli_cmd_output}= Run Process ${cli_exec_cli_10_version} shell=yes Log ${cli_cmd_output.stdout} Should Be Equal As Strings ${cli_cmd_output.rc} 0 - Should Contain ${cli_cmd_output.stdout} : cli-1.0 - -Check Cli Scheam Refresh - [Documentation] check cli schema-refresh command - ${cli_cmd_output}= Run Process ${cli_exec_cli_10_schema_refresh} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 0 - Should Contain ${cli_cmd_output.stdout} sl-no - Should Contain ${cli_cmd_output.stdout} command - Should Contain ${cli_cmd_output.stdout} product-version - Should Contain ${cli_cmd_output.stdout} schema - Should Contain ${cli_cmd_output.stdout} version - -Check Cli Schema Validate With Valid Path - [Documentation] check cli schema-validate command with valid path - ${cli_cmd_output}= Run Process ${cli_exec_cli_10_schema_validate} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 0 - Should Contain ${cli_cmd_output.stdout} sl-no - Should Contain ${cli_cmd_output.stdout} error - -Check Cli Scheam Validate With Invalid Path - [Documentation] check cli schema-validate command with invalid path - ${cli_cmd_output}= Run Process ${cli_exec_cli_10_schema_validate_invalid} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 1 - Should Contain ${cli_cmd_output.stdout} 0xb001 - -Check Cli Scheam Validate Empty Argument - [Documentation] check cli schema-validate with empty argument - ${cli_cmd_output}= Run Process ${cli_exec_cli_10_schema_validate_empty} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 1 - Should Contain ${cli_cmd_output.stdout} 0x7003 - -Check Cli create microservice - [Documentation] check create microservice - ${cli_cmd_output}= Run Process ${cli_exec_onap_11_microservice_create} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 0 - -Check Cli list microservice - [Documentation] check list microservice - ${cli_cmd_output}= Run Process ${cli_exec_onap_11_microservice_list} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 0 - -Check Cli show microservice - [Documentation] check show microservice - ${cli_cmd_output}= Run Process ${cli_exec_onap_11_microservice_show} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 0 - -Check Cli delete microservice - [Documentation] check delete microservice - ${cli_cmd_output}= Run Process ${cli_exec_onap_11_microservice_delete} shell=yes - Log ${cli_cmd_output.stdout} - Should Be Equal As Strings ${cli_cmd_output.rc} 0 - + Should Contain ${cli_cmd_output.stdout} : open-cli *** Keywords *** diff --git a/tests/optf-has/has/data/nsi_selection_template_with_create.json b/tests/optf-has/has/data/nsi_selection_template_with_create.json new file mode 100644 index 00000000..6d659f9e --- /dev/null +++ b/tests/optf-has/has/data/nsi_selection_template_with_create.json @@ -0,0 +1,168 @@ +{ + "files": {}, + "limit": 10, + "name": "urllc_sample", + "num_solution": "1", + "template": { + "constraints": { + "URLLC_Threshold": { + "demands": [ + "URLLC" + ], + "properties": { + "evaluate": [ + { + "attribute": "latency", + "operator": "lte", + "threshold": { + "get_param": "latency" + }, + "unit": "ms" + }, + { + "attribute": "reliability", + "operator": "gte", + "threshold": { + "get_param": "reliability" + }, + "unit": "" + }, + { + "attribute": "coverage_area_ta_list", + "operator": "eq", + "threshold": { + "get_param": "coverage_area_ta_list" + }, + "unit": "" + } + ] + }, + "type": "threshold" + } + }, + "demands": { + "URLLC": [ + { + "default_attributes": { + "creation_cost": 0.1 + }, + "filtering_attributes": { + "service-function": "shared", + "model-invariant-id": "21d57d4b-52ad-4d3c-a798-248b5bb9124a", + "model-version-id": "bfba363e-e39c-4bd9-a9d5-1371c28f4d22", + "service-role": "nsi" + }, + "inventory_provider": "aai", + "inventory_type": "nsi", + "unique": "true" + }, + { + "default_attributes": { + "creation_cost": 0.9 + }, + "filtering_attributes": { + "service_profile": { + "latency": {"value": {"get_param": "latency"}, "operator": "lte"}, + "reliability": {"value": {"get_param": "reliability"}, "operator": "gte"}, + "coverage_area_ta_list": {"value": {"get_param": "coverage_area_ta_list"}, "operator": "eq"} + }, + "subnets":{ + "core": { + "latency": { + "max": { + "get_param": "latency" + }, + "min": { + "get_param": "core_latency" + }, + "steps": 1 + }, + "reliability": { + "values": [ + { + "get_param": "core_reliability" + } + ] + } + }, + "ran": { + "coverage_area_ta_list": { + "values": [ + { + "get_param": "coverage_area_ta_list" + } + ] + }, + "latency": { + "max": { + "get_param": "latency" + }, + "min": { + "get_param": "ran_latency" + }, + "steps": 1 + }, + "reliability": { + "values": [ + { + "get_param": "ran_reliability" + } + ] + } + }, + "transport": { + "latency": { + "max": { + "get_param": "latency" + }, + "min": { + "get_param": "tn_latency" + }, + "steps": 1 + }, + "reliability": { + "values": [ + { + "get_param": "tn_reliability" + } + ] + } + } + } + }, + "inventory_provider": "generator", + "inventory_type": "slice_profiles", + "unique": "true" + } + ] + }, + "homing_template_version": "2020-08-13", + "optimization": { + "goal": "maximize", + "operation_function": { + "operands": [ + { + "function": "attribute", + "params": { + "attribute": "creation_cost", + "demand": "URLLC" + } + } + ], + "operator": "sum" + } + }, + "parameters": { + "core_latency": 10, + "core_reliability": 99.9, + "coverage_area_ta_list": "Chennai", + "latency": 30, + "ran_latency": 7, + "ran_reliability": 99.9, + "reliability": 99.9, + "tn_latency": 10, + "tn_reliability": 99.9 + } + }, + "timeout": 1200 +} diff --git a/tests/optf-has/has/data/nsi_selection_template_with_nonsi.json b/tests/optf-has/has/data/nsi_selection_template_with_nonsi.json new file mode 100644 index 00000000..1b5b99e4 --- /dev/null +++ b/tests/optf-has/has/data/nsi_selection_template_with_nonsi.json @@ -0,0 +1,168 @@ +{ + "files": {}, + "limit": 10, + "name": "urllc_sample", + "num_solution": "1", + "template": { + "constraints": { + "URLLC_Threshold": { + "demands": [ + "URLLC" + ], + "properties": { + "evaluate": [ + { + "attribute": "latency", + "operator": "lte", + "threshold": { + "get_param": "latency" + }, + "unit": "ms" + }, + { + "attribute": "reliability", + "operator": "gte", + "threshold": { + "get_param": "reliability" + }, + "unit": "" + }, + { + "attribute": "coverage_area_ta_list", + "operator": "eq", + "threshold": { + "get_param": "coverage_area_ta_list" + }, + "unit": "" + } + ] + }, + "type": "threshold" + } + }, + "demands": { + "URLLC": [ + { + "default_attributes": { + "creation_cost": 0.1 + }, + "filtering_attributes": { + "service-function": "shared", + "model-invariant-id": "21d57d4b-52ad-4d3c-a798-248b5bb9124a", + "model-version-id": "637762da-0764-43cc-8b9a-535085770821", + "service-role": "nsi" + }, + "inventory_provider": "aai", + "inventory_type": "nsi", + "unique": "true" + }, + { + "default_attributes": { + "creation_cost": 0.9 + }, + "filtering_attributes": { + "service_profile": { + "latency": {"value": {"get_param": "latency"}, "operator": "lte"}, + "reliability": {"value": {"get_param": "reliability"}, "operator": "gte"}, + "coverage_area_ta_list": {"value": {"get_param": "coverage_area_ta_list"}, "operator": "eq"} + }, + "subnets":{ + "core": { + "latency": { + "max": { + "get_param": "latency" + }, + "min": { + "get_param": "core_latency" + }, + "steps": 1 + }, + "reliability": { + "values": [ + { + "get_param": "core_reliability" + } + ] + } + }, + "ran": { + "coverage_area_ta_list": { + "values": [ + { + "get_param": "coverage_area_ta_list" + } + ] + }, + "latency": { + "max": { + "get_param": "latency" + }, + "min": { + "get_param": "ran_latency" + }, + "steps": 1 + }, + "reliability": { + "values": [ + { + "get_param": "ran_reliability" + } + ] + } + }, + "transport": { + "latency": { + "max": { + "get_param": "latency" + }, + "min": { + "get_param": "tn_latency" + }, + "steps": 1 + }, + "reliability": { + "values": [ + { + "get_param": "tn_reliability" + } + ] + } + } + } + }, + "inventory_provider": "generator", + "inventory_type": "slice_profiles", + "unique": "true" + } + ] + }, + "homing_template_version": "2020-08-13", + "optimization": { + "goal": "minimize", + "operation_function": { + "operands": [ + { + "function": "attribute", + "params": { + "attribute": "creation_cost", + "demand": "URLLC" + } + } + ], + "operator": "sum" + } + }, + "parameters": { + "core_latency": 10, + "core_reliability": 99.9, + "coverage_area_ta_list": "Chennai", + "latency": 30, + "ran_latency": 7, + "ran_reliability": 99.9, + "reliability": 99.9, + "tn_latency": 10, + "tn_reliability": 99.9 + } + }, + "timeout": 1200 +} diff --git a/tests/optf-has/has/data/nsi_selection_template_with_reuse.json b/tests/optf-has/has/data/nsi_selection_template_with_reuse.json new file mode 100644 index 00000000..ff66b2d2 --- /dev/null +++ b/tests/optf-has/has/data/nsi_selection_template_with_reuse.json @@ -0,0 +1,168 @@ +{ + "files": {}, + "limit": 10, + "name": "urllc_sample", + "num_solution": "1", + "template": { + "constraints": { + "URLLC_Threshold": { + "demands": [ + "URLLC" + ], + "properties": { + "evaluate": [ + { + "attribute": "latency", + "operator": "lte", + "threshold": { + "get_param": "latency" + }, + "unit": "ms" + }, + { + "attribute": "reliability", + "operator": "gte", + "threshold": { + "get_param": "reliability" + }, + "unit": "" + }, + { + "attribute": "coverage_area_ta_list", + "operator": "eq", + "threshold": { + "get_param": "coverage_area_ta_list" + }, + "unit": "" + } + ] + }, + "type": "threshold" + } + }, + "demands": { + "URLLC": [ + { + "default_attributes": { + "creation_cost": 0.1 + }, + "filtering_attributes": { + "service-function": "shared", + "model-invariant-id": "21d57d4b-52ad-4d3c-a798-248b5bb9124a", + "model-version-id": "bfba363e-e39c-4bd9-a9d5-1371c28f4d22", + "service-role": "nsi" + }, + "inventory_provider": "aai", + "inventory_type": "nsi", + "unique": "true" + }, + { + "default_attributes": { + "creation_cost": 0.9 + }, + "filtering_attributes": { + "service_profile": { + "latency": {"value": {"get_param": "latency"}, "operator": "lte"}, + "reliability": {"value": {"get_param": "reliability"}, "operator": "gte"}, + "coverage_area_ta_list": {"value": {"get_param": "coverage_area_ta_list"}, "operator": "eq"} + }, + "subnets":{ + "core": { + "latency": { + "max": { + "get_param": "latency" + }, + "min": { + "get_param": "core_latency" + }, + "steps": 1 + }, + "reliability": { + "values": [ + { + "get_param": "core_reliability" + } + ] + } + }, + "ran": { + "coverage_area_ta_list": { + "values": [ + { + "get_param": "coverage_area_ta_list" + } + ] + }, + "latency": { + "max": { + "get_param": "latency" + }, + "min": { + "get_param": "ran_latency" + }, + "steps": 1 + }, + "reliability": { + "values": [ + { + "get_param": "ran_reliability" + } + ] + } + }, + "transport": { + "latency": { + "max": { + "get_param": "latency" + }, + "min": { + "get_param": "tn_latency" + }, + "steps": 1 + }, + "reliability": { + "values": [ + { + "get_param": "tn_reliability" + } + ] + } + } + } + }, + "inventory_provider": "generator", + "inventory_type": "slice_profiles", + "unique": "true" + } + ] + }, + "homing_template_version": "2020-08-13", + "optimization": { + "goal": "minimize", + "operation_function": { + "operands": [ + { + "function": "attribute", + "params": { + "attribute": "creation_cost", + "demand": "URLLC" + } + } + ], + "operator": "sum" + } + }, + "parameters": { + "core_latency": 10, + "core_reliability": 99.9, + "coverage_area_ta_list": "Chennai", + "latency": 30, + "ran_latency": 7, + "ran_reliability": 99.9, + "reliability": 99.9, + "tn_latency": 10, + "tn_reliability": 99.9 + } + }, + "timeout": 1200 +} diff --git a/tests/optf-has/has/data/nssi_selection_template.json b/tests/optf-has/has/data/nssi_selection_template.json new file mode 100644 index 00000000..a498ca0b --- /dev/null +++ b/tests/optf-has/has/data/nssi_selection_template.json @@ -0,0 +1,84 @@ +{ + "files": {}, + "limit": 10, + "name": "urllc_sample", + "num_solution": "1", + "timeout": 1200, + "template": { + "homing_template_version": "2020-08-13", + "parameters": { + "coverage_area_ta_list": "Chennai", + "latency": 30, + "reliability": 99.9 + }, + "demands": { + "URLLC_core": [ + { + "default_attributes": { + "creation_cost": 0.1 + }, + "filtering_attributes": { + "service-function": "shared", + "model-invariant-id": "c343a533-c045-4ec0-bbb6-f30eb8eb5a41", + "model-version-id": "8d770214-d3e7-43ea-b7a6-9b235dcbcd34", + "service-role": "nssi" + }, + "inventory_provider": "aai", + "inventory_type": "nssi", + "unique": "true" + } + ] + }, + "constraints": { + "URLLC_Threshold": { + "demands": [ + "URLLC_core" + ], + "properties": { + "evaluate": [ + { + "attribute": "latency", + "operator": "lte", + "threshold": { + "get_param": "latency" + }, + "unit": "ms" + }, + { + "attribute": "reliability", + "operator": "gte", + "threshold": { + "get_param": "reliability" + }, + "unit": "" + }, + { + "attribute": "coverage_area_ta_list", + "operator": "eq", + "threshold": { + "get_param": "coverage_area_ta_list" + }, + "unit": "" + } + ] + }, + "type": "threshold" + } + }, + "optimization": { + "goal": "minimize", + "operation_function": { + "operands": [ + { + "function": "attribute", + "params": { + "attribute": "latency", + "demand": "URLLC_core" + } + } + ], + "operator": "sum" + } + } + } +} diff --git a/tests/optf-has/has/data/nssi_selection_template_unmatched.json b/tests/optf-has/has/data/nssi_selection_template_unmatched.json new file mode 100644 index 00000000..49302801 --- /dev/null +++ b/tests/optf-has/has/data/nssi_selection_template_unmatched.json @@ -0,0 +1,84 @@ +{ + "files": {}, + "limit": 10, + "name": "urllc_sample", + "num_solution": "1", + "timeout": 1200, + "template": { + "homing_template_version": "2020-08-13", + "parameters": { + "coverage_area_ta_list": "Chennai", + "latency": 5, + "reliability": 99.9 + }, + "demands": { + "URLLC_core": [ + { + "default_attributes": { + "creation_cost": 0.1 + }, + "filtering_attributes": { + "service-function": "shared", + "model-invariant-id": "c343a533-c045-4ec0-bbb6-f30eb8eb5a41", + "model-version-id": "8d770214-d3e7-43ea-b7a6-9b235dcbcd34", + "service-role": "nssi" + }, + "inventory_provider": "aai", + "inventory_type": "nssi", + "unique": "true" + } + ] + }, + "constraints": { + "URLLC_Threshold": { + "demands": [ + "URLLC_core" + ], + "properties": { + "evaluate": [ + { + "attribute": "latency", + "operator": "lte", + "threshold": { + "get_param": "latency" + }, + "unit": "ms" + }, + { + "attribute": "reliability", + "operator": "gte", + "threshold": { + "get_param": "reliability" + }, + "unit": "" + }, + { + "attribute": "coverage_area_ta_list", + "operator": "eq", + "threshold": { + "get_param": "coverage_area_ta_list" + }, + "unit": "" + } + ] + }, + "type": "threshold" + } + }, + "optimization": { + "goal": "minimize", + "operation_function": { + "operands": [ + { + "function": "attribute", + "params": { + "attribute": "latency", + "demand": "URLLC_core" + } + } + ], + "operator": "sum" + } + } + } +} diff --git a/tests/optf-has/has/optf_has_test.robot b/tests/optf-has/has/optf_has_test.robot index 8bd313a9..9185fcea 100644 --- a/tests/optf-has/has/optf_has_test.robot +++ b/tests/optf-has/has/optf_has_test.robot @@ -522,6 +522,170 @@ GetPlanWithHpaScoreMultiObj Should Be Equal done ${resultStatus} Should Be Equal HPA-cloud_cloud-region-1 ${vim-id} +# NSI selection template +SendPlanWithNsiSelection + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}nsi_selection_template_with_reuse.json + &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithNsiSelection + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + ${instance_name}= Convert To String ${response_json['plans'][0]['recommendations'][0]['URLLC']['candidate']['instance_name']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal done ${resultStatus} + Should Be Equal nsi_test_0211 ${instance_name} + +SendPlanWithNsiSelectionSliceProfile + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}nsi_selection_template_with_create.json + &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithNsiSelectionSliceProfile + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + ${candidate_type}= Convert To String ${response_json['plans'][0]['recommendations'][0]['URLLC']['candidate']['inventory_type']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal done ${resultStatus} + Should Be Equal slice_profiles ${candidate_type} + +SendPlanWithNoNsi + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}nsi_selection_template_with_nonsi.json + &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithNoNsi + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + ${candidate_type}= Convert To String ${response_json['plans'][0]['recommendations'][0]['URLLC']['candidate']['inventory_type']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal done ${resultStatus} + Should Be Equal slice_profiles ${candidate_type} + +SendPlanWithNssiSelection + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}nssi_selection_template.json + &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithNssiSelection + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + ${instance_name}= Convert To String ${response_json['plans'][0]['recommendations'][0]['URLLC_core']['candidate']['instance_name']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal done ${resultStatus} + Should Be Equal nssi_test_0211 ${instance_name} + +SendPlanWithNssiSelectionUnmatched + [Documentation] It sends a POST request to conductor + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + ${data}= Get Binary File ${CURDIR}${/}data${/}nssi_selection_template_unmatched.json + &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json + ${resp}= Post Request optf-cond /v1/plans data=${data} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + Log To Console body = ${resp.text} + ${response_json} json.loads ${resp.content} + ${generatedPlanId}= Convert To String ${response_json['id']} + Set Global Variable ${generatedPlanId} + Log To Console generatedPlanId = ${generatedPlanId} + Should Be Equal As Integers ${resp.status_code} 201 + Sleep 60s Wait Plan Resolution + +GetPlanWithNssiSelectionUnmatched + [Documentation] It sends a REST GET request to capture recommendations + Create Session optf-cond ${COND_HOSTNAME}:${COND_PORT} + &{headers}= Create Dictionary Authorization=${HAS_Auth} Content-Type=application/json Accept=application/json + ${resp}= Get Request optf-cond /v1/plans/${generatedPlanId} headers=${headers} + Log To Console ********************* + Log To Console response = ${resp} + ${response_json} json.loads ${resp.content} + ${resultStatus}= Convert To String ${response_json['plans'][0]['status']} + Set Global Variable ${resultStatus} + Log To Console resultStatus = ${resultStatus} + Log To Console body = ${resp.text} + Should Be Equal As Integers ${resp.status_code} 200 + Should Be Equal not found ${resultStatus} + *** Keywords *** diff --git a/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/pnf-sw-upgrade.robot b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/pnf-sw-upgrade.robot index 738a4311..d3762a0b 100644 --- a/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/pnf-sw-upgrade.robot +++ b/tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/pnf-sw-upgrade.robot @@ -66,18 +66,18 @@ Get pnf workflow ${workflow_uuid}= Set Variable ${member}[workflowSpecification][artifactInfo][artifactUuid] ${workflow_name}= Set Variable ${member}[workflowSpecification][artifactInfo][artifactName] Log to console The workflow ${workflow_name} has uuid : ${workflow_uuid} - ${activate_workflow_uuid}= Set Variable If '${workflow_name}' == 'PNFSoftwareUpgrade' ${workflow_uuid} ${activate_workflow_uuid} - ${activate_workflow_name}= Set Variable If '${workflow_name}' == 'PNFSoftwareUpgrade' ${workflow_name} ${activate_workflow_name} - ${download_workflow_uuid}= Set Variable If '${workflow_name}' == 'PNFSWUPDownload' ${workflow_uuid} ${download_workflow_uuid} - ${download_workflow_name}= Set Variable If '${workflow_name}' == 'PNFSWUPDownload' ${workflow_name} ${download_workflow_name} + ${activate_workflow_uuid}= Set Variable If '${workflow_name}' == 'GenericPnfSoftwareUpgrade' ${workflow_uuid} ${activate_workflow_uuid} + ${activate_workflow_name}= Set Variable If '${workflow_name}' == 'GenericPnfSoftwareUpgrade' ${workflow_name} ${activate_workflow_name} + ${download_workflow_uuid}= Set Variable If '${workflow_name}' == 'GenericPnfSWUPDownload' ${workflow_uuid} ${download_workflow_uuid} + ${download_workflow_name}= Set Variable If '${workflow_name}' == 'GenericPnfSWUPDownload' ${workflow_name} ${download_workflow_name} END SET GLOBAL VARIABLE ${activate_workflow_uuid} SET GLOBAL VARIABLE ${download_workflow_uuid} - Run Keyword If '${activate_workflow_name}' == 'PNFSoftwareUpgrade' log to console \nexecuted with expected result - Run Keyword If '${download_workflow_name}' == 'PNFSWUPDownload' log to console \nexecuted with expected result - Should Be Equal As Strings '${activate_workflow_name}' 'PNFSoftwareUpgrade' - Should Be Equal As Strings '${download_workflow_name}' 'PNFSWUPDownload' + Run Keyword If '${activate_workflow_name}' == 'GenericPnfSoftwareUpgrade' log to console \nexecuted with expected result + Run Keyword If '${download_workflow_name}' == 'GenericPnfSWUPDownload' log to console \nexecuted with expected result + Should Be Equal As Strings '${activate_workflow_name}' 'GenericPnfSoftwareUpgrade' + Should Be Equal As Strings '${download_workflow_name}' 'GenericPnfSWUPDownload' Invoke Service Instantiation for pnf software download Create Session api_handler_session http://${REPO_IP}:8080 |