--- /dev/null
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Place the scripts in run order:
+# Start all process required for executing test case
+
+#login to the onap nexus docker repo
+docker login -u docker -p docker nexus3.onap.org:10001
+
+# start msb
+docker run -d -p 8500:8500 --name msb_consul consul:0.9.3
+CONSUL_IP=`get-instance-ip.sh msb_consul`
+echo CONSUL_IP=${CONSUL_IP}
+
+docker run -d -p 10081:10081 -e CONSUL_IP=$CONSUL_IP --name msb_discovery nexus3.onap.org:10001/onap/msb/msb_discovery
+DISCOVERY_IP=`get-instance-ip.sh msb_discovery`
+echo DISCOVERY_IP=${DISCOVERY_IP}
+
+docker run -d -p 80:80 -e CONSUL_IP=$CONSUL_IP -e SDCLIENT_IP=$DISCOVERY_IP -e "ROUTE_LABELS=visualRange:1" --name msb_internal_apigateway nexus3.onap.org:10001/onap/msb/msb_apigateway
+MSB_IP==`get-instance-ip.sh msb_internal_apigateway`
+echo MSB_IP=${MSB_IP}
+
+docker run -d -p 3306:3306 --name vfc-db -v /var/lib/mysql nexus3.onap.org:10001/onap/vfc/db
+VFC_DB_IP=`get-instance-ip.sh vfc-db`
+echo VFC_DB_IP=${VFC_DB_IP}
+
+# Wait for initialization(8500 Consul, 10081 Service Registration & Discovery, 80 api gateway)
+for i in {1..10}; do
+ curl -sS -m 1 ${CONSUL_IP}:8500 && curl -sS -m 1 ${DISCOVERY_IP}:10081 && curl -sS -m 1 ${MSB_IP}:80 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Wait for initialization(3306 DB)
+for i in {1..3}; do
+ curl -sS -m 1 ${VFC_DB_IP}:3306 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Need some time so service info can be synced from discovery to api gateway
+echo sleep 60
+sleep 60
+
+# start modeling-genericparser
+docker run -d --name modeling-genericparser -v /var/lib/mysql -e MSB_ADDR=${DISCOVERY_IP}:10081 -e MYSQL_ADDR=${VFC_DB_IP}:3306 nexus3.onap.org:10001/onap/vfc/catalog
+GenericParser_IP=`get-instance-ip.sh modeling-genericparser`
+for i in {1..10}; do
+ curl -sS -m 1 ${GenericParser_IP}:8806 && break
+ echo sleep $i
+ sleep $i
+done
+
+# Pass any variables required by Robot test suites in ROBOT_VARIABLES
+ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v GenericParser_IP:${GenericParser_IP} -v MSB_DISCOVERY_IP:${DISCOVERY_IP}"
--- /dev/null
+#!/bin/bash
+#
+# Copyright 2017 ZTE Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This script is sourced by run-csit.sh after Robot test completion.
+kill-instance.sh msb_internal_apigateway
+kill-instance.sh msb_discovery
+kill-instance.sh msb_consul
+kill-instance.sh vfc-db
+kill-instance.sh modeling-genericparser
--- /dev/null
+# Test suites are relative paths under [integration/csit.git]/tests/.
+# Place the suites in run order.
+modeling-toscaparsers-genericparser/test.robot
--- /dev/null
+#!/bin/bash
+# ============LICENSE_START=======================================================
+# Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+
+echo "Uninstall docker-py and reinstall docker."
+pip uninstall -y docker-py
+pip uninstall -y docker
+pip install -U docker==2.7.0
+
+docker login -u docker -p docker nexus3.onap.org:10001
+
+# Adding this waiting container to avoid race condition between api and mariadb containers.
+docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-drools-apps.yml run --rm start_dependencies
+docker logs mariadb
+docker container ls -a
+
+docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-drools-apps.yml up -d
+sleep 1m
+
+docker logs mariadb
+docker logs drools
+docker container ls -a
+
+POLICY_DROOLS_IP=`get-instance-ip.sh drools`
+MARIADB_IP=`get-instance-ip.sh mariadb`
+
+echo DROOLS IP IS ${POLICY_DROOLS_IP}
+echo MARIADB IP IS ${MARIADB_IP}
+
+# Wait for initialization
+for i in {1..10}; do
+ curl -sS ${MARIADB_IP}:3306 && break
+ echo sleep $i
+ sleep $i
+done
+
+for i in {1..10}; do
+ curl -sS ${POLICY_DROOLS_IP}:6969 && break
+ echo sleep $i
+ sleep $i
+done
+
+ROBOT_VARIABLES="-v POLICY_DROOLS_IP:${POLICY_DROOLS_IP}"
#!/bin/bash
#
-# Copyright 2017 AT&T Intellectual Property. All rights reserved.
+# Copyright 2019 AT&T Intellectual Property. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# See the License for the specific language governing permissions and
# limitations under the License.
#
-# $1 ip address of the mock server
-
-curl -v -X PUT -d @- http://$1:1080/expectation <<EOF
-{
- "httpRequest": {
- "method": "GET",
- "path": "/hello"
- },
- "httpResponse": {
- "body": "Hello world!",
- "statusCode": 200
- }
-}
-EOF
-
+kill-instance.sh drools
+kill-instance.sh mariadb
--- /dev/null
+# Test suites are relative paths under [integration/csit.git]/tests/.
+# Place the suites in run order.
+policy/drools-applications
# Place the scripts in run order:
source ${SCRIPTS}/common_functions.sh
-docker run --name i-mock -d jamesdbloom/mockserver
-MOCK_IP=`get-instance-ip.sh i-mock`
-echo ${MOCK_IP}
-
-docker inspect i-mock
-
-# Wait for initialization
-for i in {1..10}; do
- curl -sS ${MOCK_IP}:1080 && break
- echo sleep $i
- sleep $i
-done
-
-${WORKSPACE}/scripts/policy/mock-hello.sh ${MOCK_IP}
-
source ${WORKSPACE}/scripts/policy/drools-pdp-script.sh
# Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v MOCK_IP:${MOCK_IP} -v IP:${IP} -v POLICY_IP:${POLICY_IP} -v PDP_IP:${PDP_IP} -v DOCKER_IP:${DOCKER_IP}"
+ROBOT_VARIABLES="-v IP:${IP} -v POLICY_IP:${POLICY_IP} -v PDP_IP:${PDP_IP} -v DOCKER_IP:${DOCKER_IP}"
export PDP_IP=${PDP_IP}
export POLICY_IP=${POLICY_IP}
export DOCKER_IP=${DOCKER_IP}
mkdir -p "${WORKSPACE}"/archives
-kill_instance i-mock
kill_instance drools
kill_instance pdp
kill_instance brmsgw
#!/bin/bash
#
-# Copyright 2017 AT&T Intellectual Property. All rights reserved.
+# Copyright 2017, 2019 AT&T Intellectual Property. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# Place the scripts in run order:
source ${SCRIPTS}/common_functions.sh
-docker run --name i-mock -d jamesdbloom/mockserver
-MOCK_IP=`get-instance-ip.sh i-mock`
-echo ${MOCK_IP}
-
-docker inspect i-mock
-
-# Wait for initialization
-for i in {1..10}; do
- curl -sS ${MOCK_IP}:1080 && break
- echo sleep $i
- sleep $i
-done
-
-${WORKSPACE}/scripts/policy/mock-hello.sh ${MOCK_IP}
-
-source ${WORKSPACE}/scripts/policy/script1.sh
+source ${WORKSPACE}/scripts/policy/engine.sh
# Pass any variables required by Robot test suites in ROBOT_VARIABLES
-ROBOT_VARIABLES="-v MOCK_IP:${MOCK_IP} -v IP:${IP} -v POLICY_IP:${POLICY_IP} -v PDP_IP:${PDP_IP} -v DOCKER_IP:${DOCKER_IP}"
+ROBOT_VARIABLES="-v IP:${IP} -v POLICY_IP:${POLICY_IP} -v PDP_IP:${PDP_IP} -v DOCKER_IP:${DOCKER_IP}"
export PDP_IP=${PDP_IP}
export POLICY_IP=${POLICY_IP}
export DOCKER_IP=${DOCKER_IP}
mkdir -p "${WORKSPACE}"/archives
-kill_instance i-mock
kill_instance drools
kill_instance pdp
kill_instance brmsgw
# Test suites are relative paths under [integration/csit.git]/tests/.
# Place the suites in run order.
-policy/suite1
+policy/engine
docker-compose -f ${WORKSPACE}/scripts/policy/docker-compose-pap.yml up -d
sleep 3
+unset http_proxy https_proxy
+
POLICY_PAP_IP=`get-instance-ip.sh policy-pap`
+POLICY_API_IP=`get-instance-ip.sh policy-api`
MARIADB_IP=`get-instance-ip.sh mariadb`
echo PAP IP IS ${POLICY_PAP_IP}
+echo API IP IS ${POLICY_API_IP}
echo MARIADB IP IS ${MARIADB_IP}
# Wait for initialization
for i in {1..10}; do
echo sleep $i
sleep $i
done
+for i in {1..10}; do
+ curl -sS ${POLICY_API_IP}:6969 && break
+ echo sleep $i
+ sleep $i
+done
#Configure the database
docker exec -it mariadb chmod +x /docker-entrypoint-initdb.d/db.sh
docker exec -it mariadb /docker-entrypoint-initdb.d/db.sh
+#Add policy type and policy to the database via the Policy Api
+AUTH="healthcheck:zb!XztG34"
+CONTYPE="Content-Type: application/json"
+URL=https://${POLICY_API_IP}:6969/policy/api/v1/policytypes
+CONFIGDIR=${WORKSPACE}/scripts/policy/config/pap
+POLTYPE=onap.policies.monitoring.cdap.tca.hi.lo.app
+
+SRCFILE=${CONFIGDIR}/${POLTYPE}.json
+curl -sS -k --user "${AUTH}" -H "${CONTYPE}" -d @${SRCFILE} $URL
+
+URL2=${URL}/${POLTYPE}/versions/1.0.0/policies
+SRCFILE=${CONFIGDIR}/vCPE.policy.monitoring.input.tosca.json
+curl -sS -k --user "${AUTH}" -H "${CONTYPE}" -d @${SRCFILE} $URL2
+
+
ROBOT_VARIABLES="-v POLICY_PAP_IP:${POLICY_PAP_IP}"
# ============LICENSE_END=========================================================
kill-instance.sh policy-pap
+kill-instance.sh policy-api
kill-instance.sh mariadb
kill-instance.sh policy-wait
sleep $i
done
+docker cp vfc-vnfmgr:/service/vfc/gvnfm/vnfmgr/mgr/mgr/pub/config/config.py ./
+cat config.py
+
+docker cp vfc-vnfmgr:/service/vfc/gvnfm/vnfmgr/mgr/logs/runtime_mgr.log ./
+cat runtime_mgr.log
+
# Pass any variables required by Robot test suites in ROBOT_VARIABLES
ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v VNFMGR_IP:${VNFMGR_IP} -v SCRIPTS:${SCRIPTS}"
# limitations under the License.
#
+# print log for vnfmgr
+docker cp vfc-vnfmgr:/service/vfc/gvnfm/vnfmgr/mgr/logs/runtime_mgr.log ./
+cat runtime_mgr.log
+
# This script is sourced by run-csit.sh after Robot test completion.
kill-instance.sh msb_internal_apigateway
kill-instance.sh msb_discovery
sleep $i
done
+docker cp vfc-vnfres:/service/vfc/gvnfm/vnfres/res/res/pub/config/config.py ./
+cat config.py
+
+docker cp vfc-vnfres:/service/vfc/gvnfm/vnfres/res/logs/runtime_res.log ./
+cat runtime_res.log
+
# Pass any variables required by Robot test suites in ROBOT_VARIABLES
ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v VNFRES_IP:${VNFRES_IP} -v SCRIPTS:${SCRIPTS}"
# limitations under the License.
#
+# print log for vnfres
+docker cp vfc-vnfres:/service/vfc/gvnfm/vnfres/res/logs/runtime_res.log ./
+cat runtime_res.log
+
# This script is sourced by run-csit.sh after Robot test completion.
kill-instance.sh msb_internal_apigateway
kill-instance.sh msb_discovery
sleep $i
done
+docker cp vfc-catalog:/service/vfc/nfvo/catalog/logs/runtime_catalog.log ./
+cat runtime_catalog.log
+
# Pass any variables required by Robot test suites in ROBOT_VARIABLES
ROBOT_VARIABLES="-v MSB_IP:${MSB_IP} -v CATALOG_IP:${CATALOG_IP} -v MSB_DISCOVERY_IP:${DISCOVERY_IP}"
# limitations under the License.
#
+# print log file for catalog
+docker cp vfc-catalog:/service/vfc/nfvo/catalog/logs/runtime_catalog.log ./
+cat runtime_catalog.log
+
# This script is sourced by run-csit.sh after Robot test completion.
kill-instance.sh msb_internal_apigateway
kill-instance.sh msb_discovery
sleep $i
done
-docker ps > 1.txt
-cat 1.txt
+docker ps > ps.txt
+cat ps.txt
echo "****************************"
-docker logs -f vfc-db > 2.txt &
-cat 2.txt
+docker logs -f vfc-db > db.txt &
+cat db.txt
# Need some time so service info can be synced from discovery to api gateway
echo sleep 60
sleep $i
done
-curl http://${NSLCM_IP}:8403/api/nslcm/v1/swagger.json
-
-docker logs -f vfc-nslcm > 3.txt &
-cat 3.txt
+docker logs -f vfc-nslcm > dockerlogs.txt &
+cat dockerlogs.txt
docker cp vfc-nslcm:/service/vfc/nfvo/lcm/logs/runtime_lcm.log ./
cat runtime_lcm.log
-
-
# Pass any variables required by Robot test suites in ROBOT_VARIABLES
ROBOT_VARIABLES="-v MSB_IAG_IP:${MSB_IAG_IP} -v NSLCM_IP:${NSLCM_IP} -v SCRIPTS:${SCRIPTS}"
# limitations under the License.
#
+# print logs of lcm
+docker cp vfc-nslcm:/service/vfc/nfvo/lcm/logs/runtime_lcm.log ./
+cat runtime_lcm.log
+
# This script is sourced by run-csit.sh after Robot test completion.
kill-instance.sh msb_internal_apigateway
kill-instance.sh msb_discovery
mkdir -p /tmp/$WORKSPACE/archives/cmso-clone
cd /tmp/$WORKSPACE/archives/cmso-clone
git clone --depth 1 https://gerrit.onap.org/r/optf/cmso -b master
-cd cmso/cmso-robot/docker/cmso-service
+cd cmso/cmso-sonar/docker/integration
sed -i '/image: onap\/optf-cmso-service/c\ image: nexus3.onap.org:10001\/onap\/optf-cmso-service:latest' docker-compose.yml
sed -i '/image: onap\/optf-cmso-dbinit/c\ image: nexus3.onap.org:10001\/onap\/optf-cmso-dbinit:latest' docker-compose.yml
echo =======================
### Wait for robot to finish
-docker exec cmsoservice_cmso-robot_1 ls
+docker exec integration_cmso-robot_1 ls
while [ $? -ne 1 ]; do
sleep 120
- docker exec cmsoservice_cmso-robot_1 ls
+ docker exec integration_cmso-robot_1 ls
done
echo "This is ${WORKSPACE}/scripts/optf-cmso/cmso/kill_and_remove_cmso_containers.sh"
cd /tmp/$WORKSPACE/archives/cmso-clone
-cd cmso/cmso-robot/docker/cmso-service
+cd cmso/cmso-sonar/docker/integration
docker-compose down
cp -f ./cmso-robot/logs/output.xml $WORKSPACE/archives
--- /dev/null
+# ============LICENSE_START=======================================================
+# Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+
+# JVM options
+
+JVM_OPTIONS=-server -Xms512m -Xmx512m
+
+# SYSTEM software configuration
+
+POLICY_HOME=/opt/app/policy
+POLICY_LOGS=/var/log/onap/policy/pdpd
+JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
+KEYSTORE_PASSWD=Pol1cy_0nap
+TRUSTSTORE_PASSWD=Pol1cy_0nap
+
+# Telemetry credentials
+
+TELEMETRY_PORT=9696
+TELEMETRY_HOST=0.0.0.0
+TELEMETRY_USER=demo@people.osaaf.org
+TELEMETRY_PASSWORD=demo123456!
+
+# nexus repository
+
+SNAPSHOT_REPOSITORY_ID=
+SNAPSHOT_REPOSITORY_URL=
+RELEASE_REPOSITORY_ID=
+RELEASE_REPOSITORY_URL=
+REPOSITORY_USERNAME=
+REPOSITORY_PASSWORD=
+
+# Relational (SQL) DB access
+
+SQL_HOST=
+SQL_USER=
+SQL_PASSWORD=
+
+# AAF
+
+AAF=false
+AAF_NAMESPACE=org.onap.policy
+AAF_HOST=aaf.api.simpledemo.onap.org
+
+# PDP-D DMaaP configuration channel
+
+PDPD_CONFIGURATION_TOPIC=PDPD-CONFIGURATION
+PDPD_CONFIGURATION_API_KEY=
+PDPD_CONFIGURATION_API_SECRET=
+PDPD_CONFIGURATION_CONSUMER_GROUP=
+PDPD_CONFIGURATION_CONSUMER_INSTANCE=
+PDPD_CONFIGURATION_PARTITION_KEY=
+
+# PAP-PDP configuration channel
+
+POLICY_PDP_PAP_TOPIC=POLICY-PDP-PAP
+POLICY_PDP_PAP_API_KEY=
+POLICY_PDP_PAP_API_SECRET=
+
+# PAP
+
+PAP_HOST=pap
+PAP_USERNAME=testpap
+PAP_PASSWORD=alpha123
+
+# PDP-X
+
+PDP_HOST=pdp
+PDP_USERNAME=testpdp
+PDP_PASSWORD=alpha123
+PDP_CLIENT_USERNAME=python
+PDP_CLIENT_PASSWORD=test
+PDP_ENVIRONMENT=TEST
+
+# DCAE DMaaP
+
+DCAE_TOPIC=unauthenticated.DCAE_CL_OUTPUT
+DCAE_SERVERS=mr.api.simpledemo.onap.org
+DCAE_CONSUMER_GROUP=dcae.policy.shared
+
+# Open DMaaP
+
+DMAAP_SERVERS=mr.api.simpledemo.onap.org
+
+# AAI
+
+AAI_URL=https://aai.api.simpledemo.onap.org:8443
+AAI_USERNAME=policy@policy.onap.org
+AAI_PASSWORD=demo123456!
+
+# MSO
+
+SO_URL=http://vm1.mso.simpledemo.onap.org:8080/onap/so/infra
+SO_USERNAME=InfraPortalClient
+SO_PASSWORD=password1$
+
+# VFC
+
+VFC_URL=
+VFC_USERNAME=
+VFC_PASSWORD=
+
+# SDNC
+
+SDNC_URL=
+SDNC_USERNAME=
+SDNC_PASSWORD=
--- /dev/null
+# ============LICENSE_START=======================================================
+# Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+
+HEALTHCHECK_USER=demo@people.osaaf.org
+HEALTHCHECK_PASSWORD=demo123456!
--- /dev/null
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Monitoring": {
+ "derived_from": "tosca.policies.Root",
+ "description": "a base policy type for all policies that governs monitoring provisioning"
+ }
+ },
+ {
+ "onap.policies.monitoring.cdap.tca.hi.lo.app": {
+ "derived_from": "onap.policies.Monitoring",
+ "version": "1.0.0",
+ "properties": {
+ "tca_policy": {
+ "type": "map",
+ "description": "TCA Policy JSON",
+ "entry_schema": {
+ "type": "onap.datatypes.monitoring.tca_policy"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "onap.datatypes.monitoring.metricsPerEventName": {
+ "derived_from": "tosca.datatypes.Root",
+ "properties": {
+ "controlLoopSchemaType": {
+ "type": "string",
+ "required": true,
+ "description": "Specifies Control Loop Schema Type for the event Name e.g. VNF, VM",
+ "constraints": [
+ {
+ "valid_values": [
+ "VM",
+ "VNF"
+ ]
+ }
+ ]
+ },
+ "eventName": {
+ "type": "string",
+ "required": true,
+ "description": "Event name to which thresholds need to be applied"
+ },
+ "policyName": {
+ "type": "string",
+ "required": true,
+ "description": "TCA Policy Scope Name"
+ },
+ "policyScope": {
+ "type": "string",
+ "required": true,
+ "description": "TCA Policy Scope"
+ },
+ "policyVersion": {
+ "type": "string",
+ "required": true,
+ "description": "TCA Policy Scope Version"
+ },
+ "thresholds": {
+ "type": "list",
+ "required": true,
+ "description": "Thresholds associated with eventName",
+ "entry_schema": {
+ "type": "onap.datatypes.monitoring.thresholds"
+ }
+ }
+ }
+ }
+ },
+ {
+ "onap.datatypes.monitoring.tca_policy": {
+ "derived_from": "tosca.datatypes.Root",
+ "properties": {
+ "domain": {
+ "type": "string",
+ "required": true,
+ "description": "Domain name to which TCA needs to be applied",
+ "default": "measurementsForVfScaling",
+ "constraints": [
+ {
+ "equal": "measurementsForVfScaling"
+ }
+ ]
+ },
+ "metricsPerEventName": {
+ "type": "list",
+ "required": true,
+ "description": "Contains eventName and threshold details that need to be applied to given eventName",
+ "entry_schema": {
+ "type": "onap.datatypes.monitoring.metricsPerEventName"
+ }
+ }
+ }
+ }
+ },
+ {
+ "onap.datatypes.monitoring.thresholds": {
+ "derived_from": "tosca.datatypes.Root",
+ "properties": {
+ "closedLoopControlName": {
+ "type": "string",
+ "required": true,
+ "description": "Closed Loop Control Name associated with the threshold"
+ },
+ "closedLoopEventStatus": {
+ "type": "string",
+ "required": true,
+ "description": "Closed Loop Event Status of the threshold",
+ "constraints": [
+ {
+ "valid_values": [
+ "ONSET",
+ "ABATED"
+ ]
+ }
+ ]
+ },
+ "direction": {
+ "type": "string",
+ "required": true,
+ "description": "Direction of the threshold",
+ "constraints": [
+ {
+ "valid_values": [
+ "LESS",
+ "LESS_OR_EQUAL",
+ "GREATER",
+ "GREATER_OR_EQUAL",
+ "EQUAL"
+ ]
+ }
+ ]
+ },
+ "fieldPath": {
+ "type": "string",
+ "required": true,
+ "description": "Json field Path as per CEF message which needs to be analyzed for TCA",
+ "constraints": [
+ {
+ "valid_values": [
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage",
+ "$.event.measurementsForVfScalingFields.meanRequestLatency",
+ "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered",
+ "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached",
+ "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured",
+ "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree",
+ "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed",
+ "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value"
+ ]
+ }
+ ]
+ },
+ "severity": {
+ "type": "string",
+ "required": true,
+ "description": "Threshold Event Severity",
+ "constraints": [
+ {
+ "valid_values": [
+ "CRITICAL",
+ "MAJOR",
+ "MINOR",
+ "WARNING",
+ "NORMAL"
+ ]
+ }
+ ]
+ },
+ "thresholdValue": {
+ "type": "integer",
+ "required": true,
+ "description": "Threshold value for the field Path inside CEF message"
+ },
+ "version": {
+ "type": "string",
+ "required": true,
+ "description": "Version number associated with the threshold"
+ }
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
--- /dev/null
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "topology_template": {
+ "policies": [
+ {
+ "onap.restart.tca": {
+ "type": "onap.policies.monitoring.cdap.tca.hi.lo.app",
+ "version": "1.0.0",
+ "type_version": "1.0.0",
+ "metadata": {
+ "policy-id": "onap.restart.tca"
+ },
+ "properties": {
+ "tca_policy": {
+ "domain": "measurementsForVfScaling",
+ "metricsPerEventName": [
+ {
+ "eventName": "Measurement_vGMUX",
+ "controlLoopSchemaType": "VNF",
+ "policyScope": "DCAE",
+ "policyName": "DCAE.Config_tca-hi-lo",
+ "policyVersion": "v0.0.1",
+ "thresholds": [
+ {
+ "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+ "version": "1.0.2",
+ "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value",
+ "thresholdValue": 0,
+ "direction": "EQUAL",
+ "severity": "MAJOR",
+ "closedLoopEventStatus": "ABATED"
+ },
+ {
+ "closedLoopControlName": "ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e",
+ "version": "1.0.2",
+ "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value",
+ "thresholdValue": 0,
+ "direction": "GREATER",
+ "severity": "CRITICAL",
+ "closedLoopEventStatus": "ONSET"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+}
--- /dev/null
+# Copyright 2019 AT&T Intellectual Property. All rights reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+version: '2'
+services:
+ mariadb:
+ image: mariadb:10.2.14
+ container_name: mariadb
+ hostname: mariadb
+ command: ['--lower-case-table-names=1', '--wait_timeout=28800']
+ env_file:
+ - ${WORKSPACE}/scripts/policy/config/db/db.conf
+ volumes:
+ - ${WORKSPACE}/scripts/policy/config/db:/docker-entrypoint-initdb.d
+ expose:
+ - 3306
+ drools:
+ image: nexus3.onap.org:10001/onap/policy-pdpd-cl:1.4-SNAPSHOT-latest
+ container_name: drools
+ depends_on:
+ - mariadb
+ hostname: drools
+ expose:
+ - 6969
+ - 9696
+ volumes:
+ - ${WORKSPACE}/scripts/policy/config/drools:/tmp/policy-install/config
+ environment:
+ - DEBUG=y
+ start_dependencies:
+ image: dadarek/wait-for-dependencies
+ container_name: policy-wait
+ depends_on:
+ - mariadb
+ hostname: policy-wait
+ command: mariadb:3306
+
--- /dev/null
+# Copyright 2018 AT&T Intellectual Property. All rights reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+version: '2'
+services:
+ mariadb:
+ image: mariadb:10.2.14
+ container_name: mariadb
+ hostname: mariadb
+ command: ['--lower-case-table-names=1', '--wait_timeout=28800']
+ env_file: config/db/db.conf
+ volumes:
+ - ./config/db:/docker-entrypoint-initdb.d
+ expose:
+ - 3306
+ nexus:
+ image: sonatype/nexus:2.14.8-01
+ container_name: nexus
+ hostname: nexus
+ pap:
+ image: onap/policy-pe
+ environment:
+ - PRELOAD_POLICIES=${PRELOAD_POLICIES}
+ container_name: pap
+ depends_on:
+ - mariadb
+ hostname: pap
+ expose:
+ - 8443
+ - 9091
+ command: pap
+ volumes:
+ - ./config/pe:/tmp/policy-install/config
+ drools:
+ image: onap/policy-drools
+ container_name: drools
+ depends_on:
+ - mariadb
+ - nexus
+ hostname: drools
+ expose:
+ - 6969
+ - 9696
+ volumes:
+ - ./config/drools:/tmp/policy-install/config
--- /dev/null
+# Copyright 2018 AT&T Intellectual Property. All rights reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+version: '2'
+services:
+ mariadb:
+ image: mariadb:10.2.14
+ container_name: mariadb
+ hostname: mariadb
+ command: ['--lower-case-table-names=1', '--wait_timeout=28800']
+ env_file: config/db/db.conf
+ volumes:
+ - ./config/db:/docker-entrypoint-initdb.d
+ expose:
+ - 3306
+ nexus:
+ image: sonatype/nexus:2.14.8-01
+ container_name: nexus
+ hostname: nexus
+ pap:
+ image: onap/policy-pe
+ environment:
+ - PRELOAD_POLICIES=${PRELOAD_POLICIES}
+ container_name: pap
+ depends_on:
+ - mariadb
+ hostname: pap
+ expose:
+ - 8443
+ - 9091
+ command: pap
+ volumes:
+ - ./config/pe:/tmp/policy-install/config
+ pdp:
+ image: onap/policy-pe
+ container_name: pdp
+ depends_on:
+ - pap
+ hostname: pdp
+ expose:
+ - 8081
+ command: pdp
+ volumes:
+ - ./config/pe:/tmp/policy-install/config
+ brmsgw:
+ image: onap/policy-pe
+ container_name: brmsgw
+ depends_on:
+ - pap
+ hostname: brmsgw
+ command: brmsgw
+ volumes:
+ - ./config/pe:/tmp/policy-install/config
+ drools:
+ image: onap/policy-drools
+ container_name: drools
+ depends_on:
+ - mariadb
+ - nexus
+ hostname: drools
+ expose:
+ - 6969
+ - 9696
+ volumes:
+ - ./config/drools:/tmp/policy-install/config
hostname: policy-pap
ports:
- "6969:6969"
+ api:
+ image: nexus3.onap.org:10001/onap/policy-api
+ container_name: policy-api
+ depends_on:
+ - mariadb
+ hostname: policy-api
+ ports:
+ - "9969:6969"
start_dependencies:
image: dadarek/wait-for-dependencies
container_name: policy-wait
# See the License for the specific language governing permissions and
# limitations under the License.
#
-echo "This is ${WORKSPACE}/scripts/policy/script1.sh"
+echo "This is ${WORKSPACE}/scripts/policy/engine.sh"
# the directory of the script
--- /dev/null
+{
+ "pnf-name": "NOK6061ZW9",
+ "pnf-name2": "example-pnf-name2-val-58071",
+ "pnf-name2-source": "example-pnf-name2-source-val-22408",
+ "pnf-id": "example-pnf-id-val-55834",
+ "equip-type": "example-equip-type-val-5497",
+ "equip-vendor": "example-equip-vendor-val-85730",
+ "equip-model": "example-equip-model-val-38526",
+ "management-option": "example-management-option-val-15776",
+ "ipaddress-v4-oam": "example-ipaddress-v4-oam-val-33556",
+ "sw-version": "example-sw-version-val-64239",
+ "in-maint": true,
+ "frame-id": "example-frame-id-val-76733",
+ "serial-number": "example-serial-number-val-79366",
+ "ipaddress-v4-loopback-0": "example-ipaddress-v4-loopback0-val-34781",
+ "ipaddress-v6-loopback-0": "example-ipaddress-v6-loopback0-val-29979",
+ "ipaddress-v4-aim": "example-ipaddress-v4-aim-val-53703",
+ "ipaddress-v6-aim": "example-ipaddress-v6-aim-val-93386",
+ "ipaddress-v6-oam": "example-ipaddress-v6-oam-val-92665",
+ "inv-status": "example-inv-status-val-8477",
+ "prov-status": "example-prov-status-val-68268",
+ "nf-role": "example-nf-role-val-68489"
+}
\ No newline at end of file
--- /dev/null
+{
+ "link-name": "bbs-link",
+ "link-type": "attachmentPoint",
+ "relationship-list": [
+ {
+ "relationship": {
+ "related-link": "/network/pnfs/pnf/NOK6061ZW9"
+ }
+ }
+ ]
+}
--- /dev/null
+{
+ "additionalFields": {
+ "attachmentPoint": "bbs-link"
+ },
+ "correlationId": "NOK6061ZW9"
+}
--- /dev/null
+{
+ "event": {
+ "commonEventHeader": {
+ "startEpochMicrosec": 1540212137393,
+ "sourceId": "val13",
+ "eventId": "registration_40212137",
+ "nfcNamingCode": "oam",
+ "internalHeaderFields": {
+ "collectorTimeStamp": "Mon, 10 22 2018 12:42:18 UTC"
+ },
+ "eventType": "pnfRegistration",
+ "priority": "Normal",
+ "version": "4.0.1",
+ "reportingEntityName": "NOK6061ZW9",
+ "sequence": 0,
+ "domain": "pnfRegistration",
+ "lastEpochMicrosec": 1540212137393,
+ "eventName": "pnfRegistration_Nokia_5gDu",
+ "vesEventListenerVersion": "7.0.1",
+ "sourceName": "NOK6061ZW9",
+ "nfNamingCode": "gNB"
+ },
+ "pnfRegistrationFields": {
+ "unitType": "val8",
+ "serialNumber": "6061ZW9",
+ "pnfRegistrationFieldsVersion": "2.0",
+ "manufactureDate": "1540212137393",
+ "modelNumber": "val6",
+ "lastServiceDate": "1540212137393",
+ "unitFamily": "BBU",
+ "vendorName": "Nokia",
+ "oamV4IpAddress": "val3",
+ "oamV6IpAddress": "val4",
+ "softwareVersion": "val7",
+ "additionalFields": {
+ "attachmentPoint": "bbs-link"
+ }
+ }
+ }
+}
--- /dev/null
+*** Settings ***
+Documentation Integration tests for PRH.
+... PRH receive events from DMaaP and produce or not PNF_READY notification depends on required fields in received event.
+Suite Setup Run keywords Create Headers AND Create sessions AND Ensure Container Is Running prh AND Ensure Container Is Exited ssl_prh
+Suite Teardown Ensure Container Is Running ssl_prh
+Test Teardown Reset Simulators
+
+#Suite Setup Run keywords Create headers AND Create sessions AND Ensure Container Is Running prh AND Ensure Container Is Exited ssl_prh
+#Suite Teardown Run keywords Ensure Container Is Running ssl_prh AND Ensure Container Is Exited prh AND Reset Simulators
+#Test Teardown Reset Simulators
+Library resources/PrhLibrary.py
+Resource resources/prh_library2.robot
+Resource ../../common.robot
+
+*** Variables ***
+${TEST_CASE_DIR} %{WORKSPACE}/tests/dcaegen2/prh-testcases/assets
+
+${DMAAP_SIMULATOR_SETUP_URL} http://${DMAAP_SIMULATOR_SETUP}
+${AAI_SIMULATOR_SETUP_URL} http://${AAI_SIMULATOR_SETUP}
+${CONSUL_SETUP_URL} http://${CONSUL_SETUP}
+
+*** Test Cases ***
+
+Correct VES event with additional fields
+ [Tags] PRH
+ [Template] VES event with additional fields
+ ${TEST_CASE_DIR}/bbs_registration
\ No newline at end of file
${invalid_notification}= Create invalid notification ${data}
${notification}= Catenate SEPARATOR= \\n |Incorrect json, consumerDmaapModel can not be created: ${invalid_notification}
Wait Until Keyword Succeeds 100x 100ms Check PRH log ${notification}
- #Wait Until Keyword Succeeds 100x 100ms Check PRH log ${notification}
-
Check PRH log
[Arguments] ${searched_log}
Check PNF_READY notification
[Arguments] ${expected_event_pnf_ready_in_dpaap}
- ${resp}= Get Request ${dmaap_setup_session} /events/pnfReady headers=${suite_headers}
+ ${resp}= Get Request ${dmaap_setup_session} /setup/get_pnf_ready headers=${suite_headers}
Should Be Equal ${resp.text} ${expected_event_pnf_ready_in_dpaap}
Set PNF name in AAI
Set event in DMaaP
[Arguments] ${event_in_dmaap}
- ${resp}= Put Request ${dmaap_setup_session} /set_get_event headers=${suite_headers} data=${event_in_dmaap}
+ ${resp}= Put Request ${dmaap_setup_session} /setup/set_ves_event headers=${suite_headers} data=${event_in_dmaap}
Should Be Equal As Strings ${resp.status_code} 200
Reset AAI simulator
--- /dev/null
+*** Settings ***
+Library RequestsLibrary
+Library Collections
+Resource ../../../common.robot
+
+*** Keywords ***
+VES event with additional fields
+ [Arguments] ${test_case_directory}
+ ${pnf_entry}= Get Data From File ${test_case_directory}/aai-entry.json
+ ${ves_event}= Get Data From File ${test_case_directory}/ves-event.json
+ ${expected_pnf_ready_event}= Get Data From File ${test_case_directory}/expected-pnf-ready-event.json
+ ${expected_logical_link}= Get Data From File ${test_case_directory}/expected-logical-link.json
+ Add PNF entry in AAI ${pnf_entry}
+ Set VES event in DMaaP ${ves_event}
+ Wait Until Keyword Succeeds 10x 3000ms Check CBS ready
+ Wait Until Keyword Succeeds 10x 3000ms Check recorded PNF_READY notification ${expected_pnf_ready_event}
+ Check recorded Logical Link ${expected_logical_link}
+
+Check CBS ready
+ ${resp}= Get Request ${consul_setup_session} /v1/catalog/service/cbs
+ Should Be Equal As Strings ${resp.status_code} 200
+ Log CBS ${resp.content}
+
+Check recorded PNF_READY notification
+ [Arguments] ${expected_event_pnf_ready_in_dpaap}
+ ${resp}= Get Request ${dmaap_setup_session} /setup/get_pnf_ready headers=${suite_headers}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As JSON ${resp.content} ${expected_event_pnf_ready_in_dpaap}
+
+Check recorded Logical Link
+ [Arguments] ${expected_logical_link_in_aai}
+ ${resp}= Get Request ${aai_setup_session} /setup/get_created_logical_link headers=${suite_headers}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As JSON ${resp.content} ${expected_logical_link_in_aai}
+
+Add PNF entry in AAI
+ [Arguments] ${pnf_entry}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ Log AAI url ${AAI_SIMULATOR_SETUP_URL}
+ ${resp}= Put Request ${aai_setup_session} /setup/add_pnf_entry headers=${suite_headers} data=${pnf_entry}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Set VES event in DMaaP
+ [Arguments] ${ves_event}
+ ${resp}= Put Request ${dmaap_setup_session} /setup/set_ves_event headers=${suite_headers} data=${ves_event}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Should Be Equal As JSON
+ [Arguments] ${given} ${expected}
+ Should Be True ${given}==${expected}
+
+Create sessions
+ Create Session dmaap_setup_session ${DMAAP_SIMULATOR_SETUP_URL}
+ Set Suite Variable ${dmaap_setup_session} dmaap_setup_session
+ Create Session aai_setup_session ${AAI_SIMULATOR_SETUP_URL}
+ Set Suite Variable ${aai_setup_session} aai_setup_session
+ Create Session consul_setup_session ${CONSUL_SETUP_URL}
+ Set Suite Variable ${consul_setup_session} consul_setup_session
+
+Reset Simulators
+ Reset AAI simulator
+ Reset DMaaP simulator
+
+Reset AAI simulator
+ ${resp}= Post Request ${aai_setup_session} /reset
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Reset DMaaP simulator
+ ${resp}= Post Request ${dmaap_setup_session} /reset
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Create headers
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ Set Suite Variable ${suite_headers} ${headers}
\ No newline at end of file
def do_GET(self):
try:
- if re.search('/setup/patched_pnf', self.path):
+ if re.search('/setup/get_patched_pnf', self.path):
httpServerLib.set_response_200_ok(self, payload = patched_pnf)
- logger.debug('AAISetup GET /setup/patched_pnf -> 200 OK')
- elif re.search('/setup/created_logical_link', self.path):
+ logger.debug('AAISetup GET /setup/get_patched_pnf -> 200 OK')
+ elif re.search('/setup/get_created_logical_link', self.path):
httpServerLib.set_response_200_ok(self, payload = created_logical_link)
- logger.debug('AAISetup GET /setup/created_logical_link -> 200 OK')
+ logger.debug('AAISetup GET /setup/get_created_logical_link -> 200 OK')
else:
httpServerLib.set_response_404_not_found(self)
logger.info('AAISetup GET ' + self.path + ' -> 404 Not found')
def do_GET(self):
try:
- if re.search('/setup/pnf_ready', self.path) or re.search('events/pnfReady', self.path):
+ if re.search('/setup/get_pnf_ready', self.path):
global captured_prh_event
httpServerLib.set_response_200_ok(self, payload = captured_prh_event)
- logger.debug('DmaapSetup GET /setup/pnf_ready -> 200 OK')
+ logger.debug('DmaapSetup GET /setup/get_pnf_ready -> 200 OK')
else:
httpServerLib.set_response_404_not_found(self)
logger.info('DmaapSetup GET ' + self.path + ' -> 404 Not found')
def do_PUT(self):
try:
- if re.search('/setup/ves_event', self.path) or re.search('/set_get_event', self.path):
+ if re.search('/setup/set_ves_event', self.path):
global ves_event
ves_event = httpServerLib.get_payload(self)
httpServerLib.set_response_200_ok(self)
- logger.debug('DmaapSetup PUT /setup/ves_event -> 200 OK')
+ logger.debug('DmaapSetup PUT /setup/set_ves_event -> 200 OK')
else:
httpServerLib.set_response_404_not_found(self)
logger.info('DmaapSetup PUT ' + self.path + ' -> 404 Not found')
--- /dev/null
+*** settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Variables ***
+@{return_ok_list}= 200 201 202
+${queryswagger_url} /api/catalog/v1/swagger.json
+${queryVNFPackage_url} /api/catalog/v1/vnfpackages
+${queryNSPackages_url} /api/catalog/v1/nspackages
+${healthcheck_url} /api/catalog/v1/health_check
+
+*** Test Cases ***
+GetVNFPackages
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${CATALOG_IP}:8806 headers=${headers}
+ ${resp}= Get Request web_session ${queryVNFPackage_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+
+CatalogHealthCheckTest
+ [Documentation] check health for catalog by MSB
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${CATALOG_IP}:8806 headers=${headers}
+ ${resp}= Get Request web_session ${healthcheck_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+ ${response_json} json.loads ${resp.content}
+ ${health_status}= Convert To String ${response_json['status']}
+ Should Be Equal ${health_status} active
--- /dev/null
+*** Settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+
+*** Test Cases ***
+Alive
+ [Documentation] Runs Policy PDP Alive Check
+ ${auth}= Create List demo@people.osaaf.org demo123456!
+ Log Creating session https://${POLICY_DROOLS_IP}:9696
+ ${session}= Create Session policy https://${POLICY_DROOLS_IP}:9696 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Get Request policy /policy/pdp/engine headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As Strings ${resp.json()['alive']} True
--- /dev/null
+{
+ "groups": [
+ {
+ "name": "create.group.request",
+ "pdpGroupState": "PASSIVE",
+ "properties": {
+ "hello": "world"
+ },
+ "pdpSubgroups": [
+ {
+ "pdpType": "pdpTypeA",
+ "desiredInstanceCount": 2,
+ "properties": {},
+ "supportedPolicyTypes": [
+ {
+ "name": "onap.policies.monitoring.cdap.tca.hi.lo.app",
+ "version": "1.0.0"
+ }
+ ],
+ "policies": [
+ {
+ "name": "onap.restart.tca",
+ "version": "1.0.0"
+ }
+ ]
+ },
+ {
+ "pdpType": "pdpTypeB",
+ "desiredInstanceCount": 1,
+ "properties": {},
+ "supportedPolicyTypes": [
+ {
+ "name": "onap.policies.monitoring.cdap.tca.hi.lo.app",
+ "version": "1.0.0"
+ }
+ ],
+ "policies": []
+ }
+ ]
+ }
+ ]
+}
Log Received response from policy ${resp.text}
Should Be Equal As Strings ${resp.status_code} 200
Should Be Equal As Strings ${resp.json()['code']} 200
+
+CreatePdpGroups
+ [Documentation] Runs Policy PAP Create PDP Groups
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_PAP_IP}:6969
+ ${postjson}= Get file ${CURDIR}/data/create.group.request.json
+ ${session}= Create Session policy https://${POLICY_PAP_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Post Request policy /policy/pap/v1/pdps data=${postjson} headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+ActivatePdpGroup
+ [Documentation] Runs Policy PAP Change PDP Group State to ACTIVE
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_PAP_IP}:6969
+ ${session}= Create Session policy https://${POLICY_PAP_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Put Request policy /policy/pap/v1/pdps/groups/create.group.request?state=ACTIVE headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+QueryPdpGroups
+ [Documentation] Runs Policy PAP Query PDP Groups
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_PAP_IP}:6969
+ ${session}= Create Session policy https://${POLICY_PAP_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Get Request policy /policy/pap/v1/pdps headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As Strings ${resp.json()['groups'][0]['name']} controlloop
+ Should Be Equal As Strings ${resp.json()['groups'][1]['name']} create.group.request
+ Should Be Equal As Strings ${resp.json()['groups'][1]['pdpGroupState']} ACTIVE
+ Should Be Equal As Strings ${resp.json()['groups'][2]['name']} monitoring
+
+UndeployPolicy
+ [Documentation] Runs Policy PAP Undeploy a Policy from PDP Groups
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_PAP_IP}:6969
+ ${session}= Create Session policy https://${POLICY_PAP_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Delete Request policy /policy/pap/v1/pdps/policies/onap.restart.tca headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+QueryPdpGroupsAfterUndeploy
+ [Documentation] Runs Policy PAP Query PDP Groups after Undeploy
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_PAP_IP}:6969
+ ${session}= Create Session policy https://${POLICY_PAP_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Get Request policy /policy/pap/v1/pdps headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As Strings ${resp.json()['groups'][1]['name']} create.group.request
+ Should Be Equal As Strings ${resp.json()['groups'][1]['pdpSubgroups'][0]['policies']} []
+
+DeactivatePdpGroup
+ [Documentation] Runs Policy PAP Change PDP Group State to PASSIVE
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_PAP_IP}:6969
+ ${session}= Create Session policy https://${POLICY_PAP_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Put Request policy /policy/pap/v1/pdps/groups/create.group.request?state=PASSIVE headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+DeletePdpGroups
+ [Documentation] Runs Policy PAP Delete PDP Groups
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_PAP_IP}:6969
+ ${session}= Create Session policy https://${POLICY_PAP_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Delete Request policy /policy/pap/v1/pdps/groups/create.group.request headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+QueryPdpGroupsAfterDelete
+ [Documentation] Runs Policy PAP Query PDP Groups after Delete
+ ${auth}= Create List healthcheck zb!XztG34
+ Log Creating session https://${POLICY_PAP_IP}:6969
+ ${session}= Create Session policy https://${POLICY_PAP_IP}:6969 auth=${auth}
+ ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
+ ${resp}= Get Request policy /policy/pap/v1/pdps headers=${headers}
+ Log Received response from policy ${resp.text}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Be Equal As Strings ${resp.json()['groups'][0]['name']} controlloop
+ Should Be Equal As Strings ${resp.json()['groups'][1]['name']} monitoring
${queryswagger_url} /api/nslcm/v1/swagger.json
${create_ns_url} /api/nslcm/v1/ns
${delete_ns_url} /api/nslcm/v1/ns
+${get_ns_url} /api/nslcm/v1/ns
+${get_subscriptions_url} /api/nslcm/v1/subscriptions
${healthcheck_url} /api/nslcm/v1/health_check
#json files
${response_json} json.loads ${resp.content}
${health_status}= Convert To String ${response_json['status']}
Should Be Equal ${health_status} active
+
+LcmGetNsTest
+ [Documentation] get ns instances for nslcm by MSB
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${MSB_IAG_IP}:80 headers=${headers}
+ ${resp}= Get Request web_session ${get_ns_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}
+
+LcmGetSubscriptionsTest
+ [Documentation] get subscriptions for nslcm by MSB
+ ${headers} Create Dictionary Content-Type=application/json Accept=application/json
+ Create Session web_session http://${MSB_IAG_IP}:80 headers=${headers}
+ ${resp}= Get Request web_session ${get_subscriptions_url}
+ ${responese_code}= Convert To String ${resp.status_code}
+ List Should Contain Value ${return_ok_list} ${responese_code}