aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plans/cli/sanity-check/setup.sh30
-rw-r--r--plans/dcaegen2-services-pmsh/testsuite/assets/aai_sim/aai-initializer.json4
-rwxr-xr-xplans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/apply-workarounds.sh4
-rw-r--r--plans/usecases-pnf-sw-upgrade/pnf-sw-upgrade/sorch/config/env2
-rw-r--r--scripts/optf-has/has/has-properties/conductor.conf.onap3
-rwxr-xr-xscripts/optf-has/has/has_script.sh2
-rwxr-xr-xscripts/optf-has/has/simulator_script.sh10
-rw-r--r--tests/cli/startup/startup_check.robot82
-rw-r--r--tests/optf-has/has/data/nsi_selection_template_with_create.json168
-rw-r--r--tests/optf-has/has/data/nsi_selection_template_with_nonsi.json168
-rw-r--r--tests/optf-has/has/data/nsi_selection_template_with_reuse.json168
-rw-r--r--tests/optf-has/has/data/nssi_selection_template.json84
-rw-r--r--tests/optf-has/has/data/nssi_selection_template_unmatched.json84
-rw-r--r--tests/optf-has/has/optf_has_test.robot164
-rw-r--r--tests/usecases-pnf-sw-upgrade/pnf-sw-upgrade/pnf-sw-upgrade.robot16
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