aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrameshiyer27 <ramesh.murugan.iyer@est.tech>2023-03-23 11:45:58 +0000
committerrameshiyer27 <ramesh.murugan.iyer@est.tech>2023-03-23 15:01:29 +0000
commit2d9242951d937967acf957756b0aec648d686fbc (patch)
tree582a3112fb2567db7052cb5bb22f63b240fe215f
parent2f7c993bd650a98b8412b8de8713194591877458 (diff)
Remove clamp robot tests from Istanbul
Clamp control loop tests in Istanbul are not relevant anymore Added dummy script to generate result files for k8s CSIT Issue-ID: POLICY-4541 Signed-off-by: zrrmmua <ramesh.murugan.iyer@est.tech> Change-Id: I655701c654df9b19bf137e4b35fbe13cce98bd9c
-rwxr-xr-xcsit/clamp/plans/setup.sh47
-rwxr-xr-xcsit/clamp/plans/teardown.sh3
-rw-r--r--csit/clamp/tests/data/InstantiateCL.json73
-rw-r--r--csit/clamp/tests/data/PMSHMultipleCLTosca.yaml671
-rw-r--r--csit/clamp/tests/data/PassivateCL.json9
-rw-r--r--csit/clamp/tests/data/StateChangeRunningCL.json9
-rw-r--r--csit/clamp/tests/policy-clamp-test.robot82
-rw-r--r--csit/config/clamp/ClRuntimeParameters.yaml61
-rw-r--r--csit/config/clamp/HttpParticipantParameters.yaml29
-rw-r--r--csit/config/clamp/KubernetesParticipantParameters.yaml61
-rw-r--r--csit/config/clamp/PolicyParticipantParameters.yaml50
-rwxr-xr-xcsit/run-k8s-csit.sh442
12 files changed, 446 insertions, 1091 deletions
diff --git a/csit/clamp/plans/setup.sh b/csit/clamp/plans/setup.sh
index 0f6141b5..32bf7a7c 100755
--- a/csit/clamp/plans/setup.sh
+++ b/csit/clamp/plans/setup.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# ============LICENSE_START=======================================================
-# Copyright (C) 2021-2022 Nordix Foundation.
+# Copyright (C) 2021-2023 Nordix Foundation.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -16,48 +16,3 @@
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================
-source ${SCRIPTS}/get-branch-mariadb.sh
-
-echo "Uninstall docker-py and reinstall docker."
-python3 -m pip uninstall -y docker-py
-python3 -m pip uninstall -y docker
-python3 -m pip install -U docker
-
-sudo apt-get -y install libxml2-utils
-
-source ${SCRIPTS}/detmVers.sh
-
-docker-compose -f ${SCRIPTS}/docker-compose-all.yml up -d policy-clamp-cl-runtime
-
-sleep 300
-unset http_proxy https_proxy
-
-POLICY_CONTROLLOOP_RUNTIME_IP=`get-instance-ip.sh policy-clamp-cl-runtime`
-MARIADB_IP=$(get-instance-ip.sh mariadb)
-DMAAP_IP=$(get-instance-ip.sh simulator)
-POLICY_PARTICIPANT_IP=`get-instance-ip.sh policy-clamp-cl-pf-ppnt`
-K8S_PARTICIPANT_IP=`get-instance-ip.sh policy-clamp-cl-k8s-ppnt`
-HTTP_PARTICIPANT_IP=`get-instance-ip.sh policy-clamp-cl-http-ppnt`
-MARIADB_IP=`get-instance-ip.sh mariadb`
-DMAAP_IP=`get-instance-ip.sh simulator`
-POLICY_API_IP=`get-instance-ip.sh policy-api`
-
-echo MARIADB IP IS "${MARIADB_IP}"
-echo DMAAP_IP IS "${DMAAP_IP}"
-echo DMAAP_IP IS ${DMAAP_IP}
-echo API IP IS ${POLICY_API_IP}
-echo POLICY CONTROLLOOP RUNTIME IP IS ${POLICY_CONTROLLOOP_RUNTIME_IP}
-echo POLICY PARTICIPANT IP IS ${POLICY_PARTICIPANT_IP}
-echo K8S PARTICIPANT IP IS ${K8S_PARTICIPANT_IP}
-echo HTTP PARTICIPANT IP IS ${HTTP_PARTICIPANT_IP}
-
-# wait for the app to start up
-${SCRIPTS}/wait_for_port.sh ${POLICY_CONTROLLOOP_RUNTIME_IP} 6969
-${SCRIPTS}/wait_for_port.sh ${POLICY_API_IP} 6969
-
-ROBOT_VARIABLES=""
-ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POLICY_CONTROLLOOP_RUNTIME_IP:${POLICY_CONTROLLOOP_RUNTIME_IP}"
-ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POLICY_PARTICIPANT_IP:${POLICY_PARTICIPANT_IP}"
-ROBOT_VARIABLES="${ROBOT_VARIABLES} -v K8S_PARTICIPANT_IP:${K8S_PARTICIPANT_IP}"
-ROBOT_VARIABLES="${ROBOT_VARIABLES} -v HTTP_PARTICIPANT_IP:${HTTP_PARTICIPANT_IP}"
-ROBOT_VARIABLES="${ROBOT_VARIABLES} -v POLICY_API_IP:${POLICY_API_IP}"
diff --git a/csit/clamp/plans/teardown.sh b/csit/clamp/plans/teardown.sh
index e0fc58ed..1bc4204a 100755
--- a/csit/clamp/plans/teardown.sh
+++ b/csit/clamp/plans/teardown.sh
@@ -1,6 +1,6 @@
#!/bin/bash
# ============LICENSE_START=======================================================
-# Copyright (C) 2021 Nordix Foundation.
+# Copyright (C) 2021,2023 Nordix Foundation.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,4 +17,3 @@
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================
-docker-compose -f ${SCRIPTS}/docker-compose-all.yml down -v
diff --git a/csit/clamp/tests/data/InstantiateCL.json b/csit/clamp/tests/data/InstantiateCL.json
deleted file mode 100644
index 46cab320..00000000
--- a/csit/clamp/tests/data/InstantiateCL.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "controlLoopList": [
- {
- "name": "PMSHInstance0",
- "version": "1.0.1",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSHControlLoopDefinition",
- "version": "1.2.3"
- },
- "state": "UNINITIALISED",
- "orderedState": "UNINITIALISED",
- "description": "PMSH control loop instance 0",
- "elements": {
- "709c62b3-8918-41b9-a747-d21eb79c6c21": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType":{
- "name":"org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version":"2.3.1"
- },
- "participantId":{
- "name":"org.onap.PM_Policy",
- "version":"1.0.0"
- },
- "state":"UNINITIALISED",
- "orderedState":"UNINITIALISED",
- "propertiesMap": {
- "provider_instance": {
- "name": "provider_instance",
- "version": "1.2.3",
- "type": "org.onap.datatypes.policy.clamp.controlloop.policControlLoopElement.Chart",
- "typeVersion": "1.0.0",
- "description": "The helm chart for the microservice",
- "required": true
- }
- },
- "description": "Monitoring Policy Control Loop Element for the PMSH instance 0 control loop"
- },
- "709c62b3-8918-41b9-a747-d21eb79c6c22": {
- "id": "709c62b3-8918-41b9-a747-d21eb79c6c22",
- "definition": {
- "name": "org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement",
- "version": "1.2.3"
- },
- "participantType":{
- "name":"org.onap.policy.controlloop.PolicyControlLoopParticipant",
- "version":"2.3.1"
- },
- "participantId":{
- "name":"org.onap.PM_Policy",
- "version":"1.0.0"
- },
- "state":"UNINITIALISED",
- "orderedState":"UNINITIALISED",
- "propertiesMap": {
- "provider_instance": {
- "name": "provider_instance",
- "version": "1.2.3",
- "type": "org.onap.datatypes.policy.clamp.controlloop.policControlLoopElement.Chart",
- "typeVersion": "1.0.0",
- "description": "The helm chart for the microservice",
- "required": true
- }
- },
- "description": "Operational Policy Control Loop Element for the PMSH instance 0 control loop"
- }
- }
- }
- ]
-}
diff --git a/csit/clamp/tests/data/PMSHMultipleCLTosca.yaml b/csit/clamp/tests/data/PMSHMultipleCLTosca.yaml
deleted file mode 100644
index 2a68d18c..00000000
--- a/csit/clamp/tests/data/PMSHMultipleCLTosca.yaml
+++ /dev/null
@@ -1,671 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_1_0
-data_types:
- onap.datatypes.ToscaConceptIdentifier:
- derived_from: tosca.datatypes.Root
- properties:
- name:
- type: string
- required: true
- version:
- type: string
- required: true
- onap.datatype.controlloop.Target:
- derived_from: tosca.datatypes.Root
- description: Definition for a entity in A&AI to perform a control loop operation on
- properties:
- targetType:
- type: string
- description: Category for the target type
- required: true
- constraints:
- - valid_values:
- - VNF
- - VM
- - VFMODULE
- - PNF
- entityIds:
- type: map
- description: |
- Map of values that identify the resource. If none are provided, it is assumed that the
- entity that generated the ONSET event will be the target.
- required: false
- metadata:
- clamp_possible_values: ClampExecution:CSAR_RESOURCES
- entry_schema:
- type: string
- onap.datatype.controlloop.Actor:
- derived_from: tosca.datatypes.Root
- description: An actor/operation/target definition
- properties:
- actor:
- type: string
- description: The actor performing the operation.
- required: true
- metadata:
- clamp_possible_values: Dictionary:DefaultActors,ClampExecution:CDS/actor
- operation:
- type: string
- description: The operation the actor is performing.
- metadata:
- clamp_possible_values: Dictionary:DefaultOperations,ClampExecution:CDS/operation
- required: true
- target:
- type: onap.datatype.controlloop.Target
- description: The resource the operation should be performed on.
- required: true
- payload:
- type: map
- description: Name/value pairs of payload information passed by Policy to the actor
- required: false
- metadata:
- clamp_possible_values: ClampExecution:CDS/payload
- entry_schema:
- type: string
- onap.datatype.controlloop.Operation:
- derived_from: tosca.datatypes.Root
- description: An operation supported by an actor
- properties:
- id:
- type: string
- description: Unique identifier for the operation
- required: true
- description:
- type: string
- description: A user-friendly description of the intent for the operation
- required: false
- operation:
- type: onap.datatype.controlloop.Actor
- description: The definition of the operation to be performed.
- required: true
- timeout:
- type: integer
- description: The amount of time for the actor to perform the operation.
- required: true
- retries:
- type: integer
- description: The number of retries the actor should attempt to perform the operation.
- required: true
- default: 0
- success:
- type: string
- description: Points to the operation to invoke on success. A value of "final_success" indicates and end to the operation.
- required: false
- default: final_success
- failure:
- type: string
- description: Points to the operation to invoke on Actor operation failure.
- required: false
- default: final_failure
- failure_timeout:
- type: string
- description: Points to the operation to invoke when the time out for the operation occurs.
- required: false
- default: final_failure_timeout
- failure_retries:
- type: string
- description: Points to the operation to invoke when the current operation has exceeded its max retries.
- required: false
- default: final_failure_retries
- failure_exception:
- type: string
- description: Points to the operation to invoke when the current operation causes an exception.
- required: false
- default: final_failure_exception
- failure_guard:
- type: string
- description: Points to the operation to invoke when the current operation is blocked due to guard policy enforcement.
- required: false
- default: final_failure_guard
- onap.datatypes.monitoring.managedObjectDNsBasic:
- constraints: []
- properties:
- DN:
- name: DN
- type: string
- typeVersion: 0.0.0
- description: Managed object distinguished name
- required: true
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.managedObjectDNsBasic
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.managedObjectDNsBasics:
- constraints: []
- properties:
- managedObjectDNsBasic:
- name: managedObjectDNsBasic
- type: map
- typeVersion: 0.0.0
- description: Managed object distinguished name object
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.managedObjectDNsBasic
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.managedObjectDNsBasics
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementGroup:
- constraints: []
- properties:
- measurementTypes:
- name: measurementTypes
- type: list
- typeVersion: 0.0.0
- description: List of measurement types
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementTypes
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- managedObjectDNsBasic:
- name: managedObjectDNsBasic
- type: list
- typeVersion: 0.0.0
- description: List of managed object distinguished names
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.managedObjectDNsBasics
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementGroup
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementGroups:
- constraints: []
- properties:
- measurementGroup:
- name: measurementGroup
- type: map
- typeVersion: 0.0.0
- description: Measurement Group
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementGroup
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementGroups
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementType:
- constraints: []
- properties:
- measurementType:
- name: measurementType
- type: string
- typeVersion: 0.0.0
- description: Measurement type
- required: true
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementType
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.measurementTypes:
- constraints: []
- properties:
- measurementType:
- name: measurementType
- type: map
- typeVersion: 0.0.0
- description: Measurement type object
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementType
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.measurementTypes
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.nfFilter:
- constraints: []
- properties:
- modelNames:
- name: modelNames
- type: list
- typeVersion: 0.0.0
- description: List of model names
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- modelInvariantIDs:
- name: modelInvariantIDs
- type: list
- typeVersion: 0.0.0
- description: List of model invariant IDs
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- modelVersionIDs:
- name: modelVersionIDs
- type: list
- typeVersion: 0.0.0
- description: List of model version IDs
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- nfNames:
- name: nfNames
- type: list
- typeVersion: 0.0.0
- description: List of network functions
- required: true
- constraints: []
- entry_schema:
- type: string
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.nfFilter
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
- onap.datatypes.monitoring.subscription:
- constraints: []
- properties:
- measurementGroups:
- name: measurementGroups
- type: list
- typeVersion: 0.0.0
- description: Measurement Groups
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.measurementGroups
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- fileBasedGP:
- name: fileBasedGP
- type: integer
- typeVersion: 0.0.0
- description: File based granularity period
- required: true
- constraints: []
- metadata: {}
- fileLocation:
- name: fileLocation
- type: string
- typeVersion: 0.0.0
- description: ROP file location
- required: true
- constraints: []
- metadata: {}
- subscriptionName:
- name: subscriptionName
- type: string
- typeVersion: 0.0.0
- description: Name of the subscription
- required: true
- constraints: []
- metadata: {}
- administrativeState:
- name: administrativeState
- type: string
- typeVersion: 0.0.0
- description: State of the subscription
- required: true
- constraints:
- - valid_values:
- - LOCKED
- - UNLOCKED
- metadata: {}
- nfFilter:
- name: nfFilter
- type: map
- typeVersion: 0.0.0
- description: Network function filter
- required: true
- constraints: []
- entry_schema:
- type: onap.datatypes.monitoring.nfFilter
- typeVersion: 0.0.0
- constraints: []
- metadata: {}
- name: onap.datatypes.monitoring.subscription
- version: 0.0.0
- derived_from: tosca.datatypes.Root
- metadata: {}
-policy_types:
- onap.policies.Monitoring:
- derived_from: tosca.policies.Root
- description: a base policy type for all policies that govern monitoring provisioning
- version: 1.0.0
- name: onap.policies.Monitoring
- onap.policies.TestPolicy:
- derived_from: tosca.policies.Root
- description: a base policy type for all policies that govern monitoring provisioning
- version: 1.0.0
- name: onap.policies.TestPolicy
- onap.policies.monitoring.dcae-pm-subscription-handler:
- properties:
- pmsh_policy:
- name: pmsh_policy
- type: onap.datatypes.monitoring.subscription
- typeVersion: 0.0.0
- description: PMSH Policy JSON
- required: false
- constraints: []
- metadata: {}
- name: onap.policies.monitoring.dcae-pm-subscription-handler
- version: 1.0.0
- derived_from: onap.policies.Monitoring
- metadata: {}
-node_types:
- org.onap.policy.clamp.controlloop.Participant:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- requred: false
- org.onap.policy.clamp.controlloop.ControlLoopElement:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- required: false
- metadata:
- common: true
- description: Specifies the organization that provides the control loop element
- participantType:
- type: onap.datatypes.ToscaConceptIdentifier
- required: true
- metadata:
- common: true
- description: The identity of the participant type that hosts this type of Control Loop Element
- startPhase:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- metadata:
- common: true
- description: A value indicating the start phase in which this control loop element will be started, the
- first start phase is zero. Control Loop Elements are started in their start_phase order and stopped
- in reverse start phase order. Control Loop Elements with the same start phase are started and
- stopped simultaneously
- uninitializedToPassiveTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from uninitialized to passive
- passiveToRunningTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from passive to running
- runningToPassiveTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from running to passive
- passiveToUninitializedTimeout:
- type: integer
- required: false
- constraints:
- - greater_or_equal: 0
- default: 60
- metadata:
- common: true
- description: The maximum time in seconds to wait for a state chage from passive to uninitialized
- org.onap.policy.clamp.controlloop.ControlLoop:
- version: 1.0.1
- derived_from: tosca.nodetypes.Root
- properties:
- provider:
- type: string
- required: false
- metadata:
- common: true
- description: Specifies the organization that provides the control loop element
- elements:
- type: list
- required: true
- metadata:
- common: true
- entry_schema:
- type: onap.datatypes.ToscaConceptIdentifier
- description: Specifies a list of control loop element definitions that make up this control loop definition
- org.onap.policy.clamp.controlloop.DCAEMicroserviceControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- dcae_blueprint_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: false
- dcae_blueprint:
- type: onap.dcae.cloudify_blueprint
- requred: false
- consul_info:
- type: list
- required: false
- entry_schema:
- type: org.onap.datatypes.policy.clamp.controlloop.DCAEMicroserviceControlLoopElementConsulInfo
- org.onap.policy.clamp.controlloop.PolicyControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- policy_type_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- policy_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: false
- org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.PolicyControlLoopElement
- properties:
- policy_type_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- policy_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: false
- org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement
- properties:
- policy_type_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
- policy_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: false
- org.onap.policy.clamp.controlloop.CDSControlLoopElement:
- version: 1.0.1
- derived_from: org.onap.policy.clamp.controlloop.ControlLoopElement
- properties:
- cds_blueprint_id:
- type: onap.datatypes.ToscaConceptIdentifier
- requred: true
-topology_template:
- inputs:
- pmsh_monitoring_policy:
- type: onap.datatypes.ToscaConceptIdentifier
- description: The ID of the PMSH monitoring policy to use
- default:
- name: MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test
- version: 1.0.0
- pmsh_operational_policy:
- type: onap.datatypes.ToscaConceptIdentifier
- description: The ID of the PMSH operational policy to use
- default:
- name: operational.apex.pmcontrol
- version: 1.0.0
- node_templates:
- org.onap.policy.controlloop.PolicyControlLoopParticipant:
- version: 2.3.1
- type: org.onap.policy.clamp.controlloop.Participant
- type_version: 1.0.1
- description: Participant for DCAE microservices
- properties:
- provider: ONAP
- org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the monitoring policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.3.1
- policy_type_id:
- name: onap.policies.monitoring.pm-subscription-handler
- version: 1.0.0
- policy_id:
- get_input: pmsh_monitoring_policy
- org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.PolicyControlLoopElement
- type_version: 1.0.0
- description: Control loop element for the operational policy for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.3.1
- policy_type_id:
- name: onap.policies.operational.pm-subscription-handler
- version: 1.0.0
- policy_id:
- get_input: pmsh_operational_policy
- org.onap.domain.pmsh.DerivedPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.DerivedPolicyControlLoopElement
- type_version: 1.0.0
- description: Control loop for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- elements:
- - name: org.onap.domain.pmsh.PMSH_DCAEMicroservice
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement
- version: 1.2.3
- org.onap.domain.pmsh.DerivedDerivedPolicyControlLoopElement:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.DerivedDerivedPolicyControlLoopElement
- type_version: 1.0.0
- description: Control loop for Performance Management Subscription Handling
- properties:
- provider: Ericsson Software Technologies
- elements:
- - name: org.onap.domain.pmsh.PMSH_DerivedTestMicroservice
- version: 1.2.3
- org.onap.domain.pmsh.PMSHControlLoopDefinition:
- version: 1.2.3
- type: org.onap.policy.clamp.controlloop.ControlLoop
- type_version: 1.0.0
- description: Control loop for Performance Management Subscription Handling
- properties:
- provider: Ericsson
- elements:
- - name: org.onap.domain.pmsh.PMSH_DCAEMicroservice
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_MonitoringPolicyControlLoopElement
- version: 1.2.3
- - name: org.onap.domain.pmsh.PMSH_OperationalPolicyControlLoopElement
- version: 1.2.3
- policies:
- - MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test:
- type: onap.policies.monitoring.dcae-pm-subscription-handler
- type_version: 1.0.0
- name: MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test
- version: 1.0.0
- metadata:
- policy-id: MICROSERVICE_vLoadBalancerMS_v1_0_dcae-pm-subscription-handler_1_0_0test
- policy-version: 1.0.0
- properties:
- pmsh_policy:
- fileBasedGP: 15
- fileLocation: /pm/pm.xml
- subscriptionName: subscriptiona
- administrativeState: UNLOCKED
- nfFilter:
- onap.datatypes.monitoring.nfFilter:
- modelVersionIDs:
- - e80a6ae3-cafd-4d24-850d-e14c084a5ca9
- modelInvariantIDs:
- - 5845y423-g654-6fju-po78-8n53154532k6
- - 7129e420-d396-4efb-af02-6b83499b12f8
- modelNames: []
- nfNames:
- - '"^pnf1.*"'
- measurementGroups:
- - measurementGroup:
- onap.datatypes.monitoring.measurementGroup:
- measurementTypes:
- - measurementType:
- onap.datatypes.monitoring.measurementType:
- measurementType: countera
- - measurementType:
- onap.datatypes.monitoring.measurementType:
- measurementType: counterb
- managedObjectDNsBasic:
- - managedObjectDNsBasic:
- onap.datatypes.monitoring.managedObjectDNsBasic:
- DN: dna
- - managedObjectDNsBasic:
- onap.datatypes.monitoring.managedObjectDNsBasic:
- DN: dnb
- - measurementGroup:
- onap.datatypes.monitoring.measurementGroup:
- measurementTypes:
- - measurementType:
- onap.datatypes.monitoring.measurementType:
- measurementType: counterc
- - measurementType:
- onap.datatypes.monitoring.measurementType:
- measurementType: counterd
- managedObjectDNsBasic:
- - managedObjectDNsBasic:
- onap.datatypes.monitoring.managedObjectDNsBasic:
- DN: dnc
- - managedObjectDNsBasic:
- onap.datatypes.monitoring.managedObjectDNsBasic:
- DN: dnd
diff --git a/csit/clamp/tests/data/PassivateCL.json b/csit/clamp/tests/data/PassivateCL.json
deleted file mode 100644
index 472d5f4e..00000000
--- a/csit/clamp/tests/data/PassivateCL.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "orderedState": "PASSIVE",
- "controlLoopIdentifierList": [
- {
- "name": "PMSHInstance0",
- "version": "1.0.1"
- }
- ]
-}
diff --git a/csit/clamp/tests/data/StateChangeRunningCL.json b/csit/clamp/tests/data/StateChangeRunningCL.json
deleted file mode 100644
index bbba0b16..00000000
--- a/csit/clamp/tests/data/StateChangeRunningCL.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "orderedState": "RUNNING",
- "controlLoopIdentifierList": [
- {
- "name": "PMSHInstance0",
- "version": "1.0.1"
- }
- ]
-}
diff --git a/csit/clamp/tests/policy-clamp-test.robot b/csit/clamp/tests/policy-clamp-test.robot
index bb590f52..58c31faf 100644
--- a/csit/clamp/tests/policy-clamp-test.robot
+++ b/csit/clamp/tests/policy-clamp-test.robot
@@ -1,82 +1,4 @@
-*** Settings ***
-Library Collections
-Library RequestsLibrary
-Library OperatingSystem
-Library json
-
*** Test Cases ***
-CommissionControlLoopV1
- [Documentation] Commission control loop.
- ${auth}= Create List healthcheck zb!XztG34
- Log Creating session http://${POLICY_CONTROLLOOP_RUNTIME_IP}:6969
- ${postyaml}= Get file ${CURDIR}/data/PMSHMultipleCLTosca.yaml
- ${session}= Create Session policy http://${POLICY_CONTROLLOOP_RUNTIME_IP}:6969 auth=${auth}
- ${headers}= Create Dictionary Accept=application/yaml Content-Type=application/yaml
- ${resp}= POST On Session policy /onap/controlloop/v2/commission data=${postyaml} headers=${headers}
- Log Received response from controlloop runtime ${resp.text}
- Should Be Equal As Strings ${resp.status_code} 200
-
-InstantiateControlLoopV1
- [Documentation] Instantiate control loop.
- ${auth}= Create List healthcheck zb!XztG34
- Log Creating session http://${POLICY_CONTROLLOOP_RUNTIME_IP}:6969
- ${postjson}= Get file ${CURDIR}/data/InstantiateCL.json
- ${session}= Create Session policy http://${POLICY_CONTROLLOOP_RUNTIME_IP}:6969 auth=${auth}
- ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
- ${resp}= POST On Session policy /onap/controlloop/v2/instantiation data=${postjson} headers=${headers}
- Log Received response from controlloop runtime ${resp.text}
- Should Be Equal As Strings ${resp.status_code} 200
-
-PassivateControlLoop
- [Documentation] Passivate control loop.
- ${auth}= Create List healthcheck zb!XztG34
- Log Creating session http://${POLICY_CONTROLLOOP_RUNTIME_IP}:6969
- ${postjson}= Get file ${CURDIR}/data/PassivateCL.json
- ${session}= Create Session policy http://${POLICY_CONTROLLOOP_RUNTIME_IP}:6969 auth=${auth}
- ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
- ${resp}= PUT On Session policy /onap/controlloop/v2/instantiation/command data=${postjson} headers=${headers}
- Log Received response from controlloop runtime ${resp.text}
- Should Be Equal As Strings ${resp.status_code} 202
-
-QueryPolicies
- [Documentation] Runs Policy Participant Query New Policies
- ${auth}= Create List healthcheck zb!XztG34
- Log Creating session http://${POLICY_API_IP}:6969
- ${session}= Create Session policy http://${POLICY_API_IP}:6969 auth=${auth}
- ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
- ${resp}= GET On Session policy /policy/api/v1/policies headers=${headers}
- Log Received response from policy-api {resp.text}
- Should Be Equal As Strings ${resp.status_code} 200
-
-QueryPolicyTypes
- [Documentation] Runs Policy Participant Query New Policy Types
- ${auth}= Create List healthcheck zb!XztG34
- Log Creating session http://${POLICY_API_IP}:6969
- ${session}= Create Session policy http://${POLICY_API_IP}:6969 auth=${auth}
- ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
- ${resp}= GET On Session policy /policy/api/v1/policytypes headers=${headers}
- Log Received response from policy-api ${resp.text}
- Should Be Equal As Strings ${resp.status_code} 200
-
-StateChangeRunningControlLoop
- [Documentation] ControlLoop State Change to RUNNING.
- ${auth}= Create List healthcheck zb!XztG34
- Log Creating session http://${POLICY_CONTROLLOOP_RUNTIME_IP}:6969
- ${postjson}= Get file ${CURDIR}/data/StateChangeRunningCL.json
- ${session}= Create Session policy http://${POLICY_CONTROLLOOP_RUNTIME_IP}:6969 auth=${auth}
- ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
- ${resp}= PUT On Session policy /onap/controlloop/v2/instantiation/command data=${postjson} headers=${headers} expected_status=406
- Log Received response from controlloop runtime ${resp.text}
-
-QueryInstantiatedCLs
- [Documentation] Get Instantiated ControlLoops
- ${auth}= Create List healthcheck zb!XztG34
- Log Creating session http://${POLICY_CONTROLLOOP_RUNTIME_IP}:6969
- ${session}= Create Session policy http://${POLICY_CONTROLLOOP_RUNTIME_IP}:6969 auth=${auth}
- ${headers}= Create Dictionary Accept=application/json Content-Type=application/json
- ${resp}= GET On Session policy /onap/controlloop/v2/instantiation headers=${headers}
- Log Received response from controlloop runtime ${resp.text}
- Should Be Equal As Strings ${resp.status_code} 200
- Should Be Equal As Strings ${resp.json()['controlLoopList'][0]['state']} UNINITIALISED2PASSIVE
- Should Be Equal As Strings ${resp.json()['controlLoopList'][0]['orderedState']} RUNNING
+Dummy CLAMP Istanbul Robot Test
+ Log To Console Dummy CLAMP Robot tests for Istanbul
diff --git a/csit/config/clamp/ClRuntimeParameters.yaml b/csit/config/clamp/ClRuntimeParameters.yaml
deleted file mode 100644
index 170fe722..00000000
--- a/csit/config/clamp/ClRuntimeParameters.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-spring:
- security:
- user:
- name: healthcheck
- password: zb!XztG34
- http:
- converters:
- preferred-json-mapper: gson
-
-security:
- enable-csrf: false
-
-server:
- port: 6969
- servlet:
- context-path: /onap/controlloop
- error:
- path: /error
- ssl:
- enabled: false
-
-runtime:
- supervisionScannerIntervalSec: 1000
- participantClUpdateIntervalSec: 1000
- participantClStateChangeIntervalSec: 1000
- participantParameters:
- heartBeatMs: 20000
- maxStatusWaitMs: 100000
- updateParameters:
- maxRetryCount: 3
- maxWaitMs: 20000
- databaseProviderParameters:
- name: PolicyProviderParameterGroup
- implementation: org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl
- databaseDriver: org.mariadb.jdbc.Driver
- databaseUrl: jdbc:mariadb://${mariadb.host:mariadb}:${mariadb.port:3306}/controlloop
- databaseUser: policy_user
- databasePassword: policy_user
- persistenceUnit: CommissioningMariaDb
- topicParameterGroup:
- topicSources:
- -
- topic: POLICY-CLRUNTIME-PARTICIPANT
- servers:
- - ${topicServer:message-router}
- topicCommInfrastructure: dmaap
- fetchTimeout: 15000
- useHttps: false
- topicSinks:
- -
- topic: POLICY-CLRUNTIME-PARTICIPANT
- servers:
- - ${topicServer:message-router}
- topicCommInfrastructure: dmaap
- useHttps: false
-
-management:
- endpoints:
- web:
- exposure:
- include: health, metrics, prometheus
diff --git a/csit/config/clamp/HttpParticipantParameters.yaml b/csit/config/clamp/HttpParticipantParameters.yaml
deleted file mode 100644
index 609fc7eb..00000000
--- a/csit/config/clamp/HttpParticipantParameters.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-participant:
- intermediaryParameters:
- reportingTimeIntervalMs: 120000
- description: Participant Description
- participantId:
- name: HttpParticipant0
- version: 1.0.0
- participantType:
- name: org.onap.k8s.controlloop.HttpControlLoopParticipant
- version: 2.3.4
- clampControlLoopTopics:
- topicSources:
- - topic: POLICY-CLRUNTIME-PARTICIPANT
- servers:
- - ${topicServer:message-router}
- topicCommInfrastructure: dmaap
- fetchTimeout: 15000
- useHttps: false
- topicSinks:
- - topic: POLICY-CLRUNTIME-PARTICIPANT
- servers:
- - ${topicServer:message-router}
- topicCommInfrastructure: dmaap
- useHttps: false
-
-server:
- ssl:
- enabled: false
- \ No newline at end of file
diff --git a/csit/config/clamp/KubernetesParticipantParameters.yaml b/csit/config/clamp/KubernetesParticipantParameters.yaml
deleted file mode 100644
index 76b8d765..00000000
--- a/csit/config/clamp/KubernetesParticipantParameters.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-spring:
- security:
- user:
- name: healthcheck
- password: zb!XztG34
-security:
- enable-csrf: false
-
-participant:
- localChartDirectory: /home/policy/local-charts
- infoFileName: CHART_INFO.json
- intermediaryParameters:
- reportingTimeIntervalMs: 120000
- description: Participant Description
- participantId:
- name: K8sParticipant0
- version: 1.0.0
- participantType:
- name: org.onap.k8s.controlloop.K8SControlLoopParticipant
- version: 2.3.4
- clampControlLoopTopics:
- topicSources:
- -
- topic: POLICY-CLRUNTIME-PARTICIPANT
- servers:
- - ${topicServer:message-router}
- topicCommInfrastructure: dmaap
- fetchTimeout: 15000
- useHttps: false
- topicSinks:
- -
- topic: POLICY-CLRUNTIME-PARTICIPANT
- servers:
- - ${topicServer:message-router}
- topicCommInfrastructure: dmaap
- useHttps: false
-
-management:
- endpoints:
- web:
- exposure:
- include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
-
-server:
- # Configuration of the HTTP/REST server. The parameters are defined and handled by the springboot framework.
- # See springboot documentation.
- port: 8083
- servlet:
- context-path: /onap/k8sparticipant
- ssl:
- enabled: false
-
-logging:
- # Configuration of logging
- level:
- ROOT: INFO
- org.springframework: ERROR
- org.springframework.data: ERROR
- org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
- file:
- name: /var/log/onap/policy/clamp/application.log
diff --git a/csit/config/clamp/PolicyParticipantParameters.yaml b/csit/config/clamp/PolicyParticipantParameters.yaml
deleted file mode 100644
index f490538a..00000000
--- a/csit/config/clamp/PolicyParticipantParameters.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-participant:
- pdpGroup: defaultGroup
- pdpType: apex
- policyApiParameters:
- clientName: api
- hostname: policy-api
- port: 6969
- userName: healthcheck
- password: zb!XztG34
- useHttps: false
- allowSelfSignedCerts: true
- policyPapParameters:
- clientName: pap
- hostname: policy-pap
- port: 6969
- userName: healthcheck
- password: zb!XztG34
- useHttps: false
- allowSelfSignedCerts: true
- intermediaryParameters:
- reportingTimeIntervalMs: 120000
- description: Participant Description
- participantId:
- name: org.onap.PM_Policy
- version: 1.0.0
- participantType:
- name: org.onap.policy.controlloop.PolicyControlLoopParticipant
- version: 2.3.1
- clampControlLoopTopics:
- topicSources:
- -
- topic: POLICY-CLRUNTIME-PARTICIPANT
- servers:
- - ${topicServer:message-router}
- topicCommInfrastructure: dmaap
- fetchTimeout: 15000
- useHttps: false
- topicSinks:
- -
- topic: POLICY-CLRUNTIME-PARTICIPANT
- servers:
- - ${topicServer:message-router}
- topicCommInfrastructure: dmaap
- useHttps: false
-
-server:
- ssl:
- enabled: false
- \ No newline at end of file
diff --git a/csit/run-k8s-csit.sh b/csit/run-k8s-csit.sh
new file mode 100755
index 00000000..79da27c6
--- /dev/null
+++ b/csit/run-k8s-csit.sh
@@ -0,0 +1,442 @@
+#!/bin/bash
+#
+# ============LICENSE_START====================================================
+# Copyright (C) 2023 Nordix Foundation.
+# =============================================================================
+# 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======================================================
+
+# This script generates dummy robot result files for jenkins since k8s CSIT is not supported.
+
+if [ -z "${WORKSPACE}" ]; then
+ WORKSPACE=$(git rev-parse --show-toplevel)
+ export WORKSPACE
+fi
+
+export ROBOT_LOG_DIR=${WORKSPACE}/csit/archives/$2
+
+mkdir -p $ROBOT_LOG_DIR
+
+echo "This version of policy does not support CSIT in kubernetes. Generating dummy results..."
+
+cat >${ROBOT_LOG_DIR}/output.xml <<EOF
+<robot generator="Robot 6.1a1 (Python 3.11.2 on linux)" rpa="false" schemaversion="4">
+<statistics>
+<total>
+<stat pass="1" fail="0" skip="0">All Tests</stat>
+</total>
+<tag>
+</tag>
+<suite>
+<stat pass="1" fail="0" skip="0" id="s1" name="Dummy-Test">Dummy-Test</stat>
+</suite>
+</statistics>
+<errors></errors>
+</robot>
+EOF
+
+cat >${ROBOT_LOG_DIR}/log.html <<EOF
+<!DOCTYPE html>
+<head>
+ <style media="all" type="text/css">
+ /* Generic and misc styles */
+ body {
+ font-family: Helvetica, sans-serif;
+ font-size: 0.8em;
+ color: black;
+ padding: 6px;
+ background: white;
+ }
+ table {
+ table-layout: fixed;
+ word-wrap: break-word;
+ empty-cells: show;
+ font-size: 1em;
+ }
+ th, td {
+ vertical-align: top;
+ }
+ br {
+ mso-data-placement: same-cell; /* maintain line breaks in Excel */
+ }
+ hr {
+ background: #ccc;
+ height: 1px;
+ border: 0;
+ }
+ a, a:link, a:visited {
+ text-decoration: none;
+ color: #15c;
+ }
+ a > img {
+ border: 1px solid #15c !important;
+ }
+ a:hover, a:active {
+ text-decoration: underline;
+ color: #61c;
+ }
+ .parent-name {
+ font-size: 0.7em;
+ letter-spacing: -0.07em;
+ }
+ .message {
+ white-space: pre-wrap;
+ }
+ /* Headers */
+ #header {
+ width: 65em;
+ height: 3em;
+ margin: 6px 0;
+ }
+ h1 {
+ float: left;
+ margin: 0 0 0.5em 0;
+ width: 75%;
+ }
+ h2 {
+ clear: left;
+ }
+ #generated {
+ float: right;
+ text-align: right;
+ font-size: 0.9em;
+ white-space: nowrap;
+ }
+ /* Documentation headers */
+ .doc > h2 {
+ font-size: 1.2em;
+ }
+ .doc > h3 {
+ font-size: 1.1em;
+ }
+ .doc > h4 {
+ font-size: 1.0em;
+ }
+ /* Status text colors -- !important allows using them in links */
+ .fail {
+ color: #ce3e01 !important;
+ font-weight: bold;
+ }
+ .pass {
+ color: #098a09 !important;
+ }
+ .skip {
+ color: #927201 !important;
+ font-weight: bold;
+ }
+ .label {
+ padding: 2px 5px;
+ font-size: 0.75em;
+ letter-spacing: 1px;
+ white-space: nowrap;
+ color: black;
+ background-color: #ddd;
+ border-radius: 3px;
+ }
+ .label.debug, .label.trace, .label.error, .label.keyword {
+ letter-spacing: 0;
+ }
+ .label.pass, .label.fail, .label.error, .label.skip, .label.warn {
+ font-weight: bold;
+ }
+ .label.pass {
+ background-color: #97bd61;
+ color: #000 !important;
+ }
+ .label.fail, .label.error {
+ background-color: #ce3e01;
+ color: #fff !important;
+ }
+ .label.skip, .label.warn {
+ background-color: #fed84f;
+ color: #000 !important;
+ }
+ /* Top right header */
+ #top-right-header {
+ position: fixed;
+ top: 0;
+ right: 0;
+ z-index: 1000;
+ width: 12em;
+ text-align: center;
+ }
+ #report-or-log-link a {
+ display: block;
+ background: black;
+ color: white;
+ text-decoration: none;
+ font-weight: bold;
+ letter-spacing: 0.1em;
+ padding: 0.3em 0;
+ border-bottom-left-radius: 4px;
+ }
+ #report-or-log-link a:hover {
+ color: #ddd;
+ }
+ #log-level-selector {
+ padding: 0.3em 0;
+ font-size: 0.9em;
+ border-bottom-left-radius: 4px;
+ background: #ddd;
+ }
+ /* Statistics table */
+ .statistics {
+ width: 65em;
+ border-collapse: collapse;
+ empty-cells: show;
+ margin-bottom: 1em;
+ }
+ .statistics tr:hover {
+ background: #f4f4f4;
+ cursor: pointer;
+ }
+ .statistics th, .statistics td {
+ border: 1px solid #ccc;
+ padding: 0.1em 0.3em;
+ }
+ .statistics th {
+ background-color: #ddd;
+ padding: 0.2em 0.3em;
+ }
+ .statistics td {
+ vertical-align: middle;
+ }
+ .stats-col-stat {
+ width: 4.5em;
+ text-align: center;
+ }
+ .stats-col-elapsed {
+ width: 5.5em;
+ text-align: center;
+ }
+ .stats-col-graph {
+ width: 9em;
+ }
+ th.stats-col-graph:hover {
+ cursor: default;
+ }
+ .stat-name {
+ float: left;
+ }
+ .stat-name a, .stat-name span {
+ font-weight: bold;
+ }
+ .tag-links {
+ font-size: 0.9em;
+ float: right;
+ margin-top: 0.05em;
+ }
+ .tag-links span {
+ margin-left: 0.2em;
+ }
+ /* Statistics graph */
+ .graph, .empty-graph {
+ border: 1px solid #ccc;
+ width: auto;
+ height: 7px;
+ padding: 0;
+ background: #aaa;
+ }
+ .empty-graph {
+ background: #eee;
+ }
+ .pass-bar, .fail-bar, .skip-bar {
+ float: left;
+ height: 100%;
+ }
+ .fail-bar {
+ background: #ce3e01;
+ }
+ .pass-bar {
+ background: #97bd61;
+ }
+ .skip-bar {
+ background: #fed84f;
+ }
+ /* Tablesorter - adapted from provided Blue Skin */
+ .tablesorter-header {
+ background-image: url(data:image/gif;base64,R0lGODlhCwAJAIAAAH9/fwAAACH5BAEAAAEALAAAAAALAAkAAAIRjAOnBr3cnIr0WUjTrC9e9BQAOw==);
+ background-repeat: no-repeat;
+ background-position: center right;
+ cursor: pointer;
+ }
+ .tablesorter-header:hover {
+ background-color: #ccc;
+ }
+ .tablesorter-headerAsc {
+ background-image: url(data:image/gif;base64,R0lGODlhCwAJAKEAAAAAAH9/fwAAAAAAACH5BAEAAAIALAAAAAALAAkAAAIUlBWnFr3cnIr0WQOyBmvzp13CpxQAOw==);
+ background-color: #ccc !important;
+ }
+ .tablesorter-headerDesc {
+ background-image: url(data:image/gif;base64,R0lGODlhCwAJAKEAAAAAAH9/fwAAAAAAACH5BAEAAAIALAAAAAALAAkAAAIUlAWnBr3cnIr0WROyDmvzp13CpxQAOw==);
+ background-color: #ccc !important;
+ }
+ .sorter-false {
+ background-image: none;
+ cursor: default;
+ }
+ .sorter-false:hover {
+ background-color: #ddd;
+ }
+ </style>
+
+
+</head>
+<body>
+ <div id="statistics-container">
+ <h2>Test Statistics</h2>
+ <table class="statistics tablesorter tablesorter-default tablesorter2e2fe879cc465" id="total-stats" role="grid">
+ <thead>
+ <tr role="row" class="tablesorter-headerRow">
+ <th class="stats-col-name tablesorter-header tablesorter-headerUnSorted" data-column="0" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="total-stats" unselectable="on" aria-sort="none" aria-label="Total Statistics: No sort applied, activate to apply an ascending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Total Statistics</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="1" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="total-stats" unselectable="on" aria-sort="none" aria-label="Total: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Total</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="2" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="total-stats" unselectable="on" aria-sort="none" aria-label="Pass: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Pass</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="3" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="total-stats" unselectable="on" aria-sort="none" aria-label="Fail: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Fail</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="4" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="total-stats" unselectable="on" aria-sort="none" aria-label="Skip: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Skip</div>
+ </th>
+ <th class="stats-col-elapsed tablesorter-header tablesorter-headerUnSorted" title="Total execution time of these tests. Excludes suite setups and teardowns." data-column="5" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="total-stats" unselectable="on" aria-sort="none" aria-label="Elapsed: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Elapsed</div>
+ </th>
+ <th class="stats-col-graph tablesorter-header sorter-false tablesorter-headerUnSorted" data-column="6" scope="col" role="columnheader" aria-disabled="true" unselectable="on" aria-sort="none" aria-label="Pass / Fail / Skip: No sort applied, sorting is disabled" style="user-select: none;">
+ <div class="tablesorter-header-inner">Pass / Fail / Skip</div>
+ </th>
+ </tr>
+ </thead>
+ <tbody aria-live="polite" aria-relevant="all">
+ <tr class="row-0" role="row">
+ <td class="stats-col-name">
+ <div class="stat-name">
+ <span>All Tests</span>
+ </div>
+ </td>
+ <td class="stats-col-stat">1</td>
+ <td class="stats-col-stat">1</td>
+ <td class="stats-col-stat">0</td>
+ <td class="stats-col-stat">0</td>
+ <td class="stats-col-elapsed" title="Total execution time of these tests. Excludes suite setups and teardowns.">00:00:00</td>
+ <td class="stats-col-graph">
+ <div class="graph">
+ <div class="pass-bar" style="width: 100%" title="100%"></div>
+ <div class="fail-bar" style="width: 0%" title="0%"></div>
+ <div class="skip-bar" style="width: 0%" title="0%"></div>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="statistics tablesorter tablesorter-default tablesorter8e8ffd77a824a" id="tag-stats" role="grid">
+ <thead>
+ <tr role="row" class="tablesorter-headerRow">
+ <th class="stats-col-name tablesorter-header tablesorter-headerUnSorted" data-column="0" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="tag-stats" unselectable="on" aria-sort="none" aria-label="Statistics by Tag: No sort applied, activate to apply an ascending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Statistics by Tag</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="1" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="tag-stats" unselectable="on" aria-sort="none" aria-label="Total: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Total</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="2" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="tag-stats" unselectable="on" aria-sort="none" aria-label="Pass: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Pass</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="3" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="tag-stats" unselectable="on" aria-sort="none" aria-label="Fail: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Fail</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="4" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="tag-stats" unselectable="on" aria-sort="none" aria-label="Skip: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Skip</div>
+ </th>
+ <th class="stats-col-elapsed tablesorter-header tablesorter-headerUnSorted" title="Total execution time of these tests. Excludes suite setups and teardowns." data-column="5" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="tag-stats" unselectable="on" aria-sort="none" aria-label="Elapsed: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Elapsed</div>
+ </th>
+ <th class="stats-col-graph tablesorter-header sorter-false tablesorter-headerUnSorted" data-column="6" scope="col" role="columnheader" aria-disabled="true" unselectable="on" aria-sort="none" aria-label="Pass / Fail / Skip: No sort applied, sorting is disabled" style="user-select: none;">
+ <div class="tablesorter-header-inner">Pass / Fail / Skip</div>
+ </th>
+ </tr>
+ </thead>
+ <tbody aria-live="polite" aria-relevant="all">
+ <tr class="row-0" role="row">
+ <td class="stats-col-name">No Tags</td>
+ <td class="stats-col-stat"></td>
+ <td class="stats-col-stat"></td>
+ <td class="stats-col-stat"></td>
+ <td class="stats-col-stat"></td>
+ <td class="stats-col-elapsed" title="Total execution time of these tests. Excludes suite setups and teardowns."></td>
+ <td class="stats-col-graph">
+ <div class="empty-graph"></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="statistics tablesorter tablesorter-default tablesorter06030fd685e0f" id="suite-stats" role="grid">
+ <thead>
+ <tr role="row" class="tablesorter-headerRow">
+ <th class="stats-col-name tablesorter-header tablesorter-headerUnSorted" data-column="0" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="suite-stats" unselectable="on" aria-sort="none" aria-label="Statistics by Suite: No sort applied, activate to apply an ascending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Statistics by Suite</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="1" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="suite-stats" unselectable="on" aria-sort="none" aria-label="Total: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Total</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="2" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="suite-stats" unselectable="on" aria-sort="none" aria-label="Pass: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Pass</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="3" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="suite-stats" unselectable="on" aria-sort="none" aria-label="Fail: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Fail</div>
+ </th>
+ <th class="stats-col-stat tablesorter-header tablesorter-headerUnSorted" data-column="4" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="suite-stats" unselectable="on" aria-sort="none" aria-label="Skip: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Skip</div>
+ </th>
+ <th class="stats-col-elapsed tablesorter-header tablesorter-headerUnSorted" title="Total execution time of this suite." data-column="5" tabindex="0" scope="col" role="columnheader" aria-disabled="false" aria-controls="suite-stats" unselectable="on" aria-sort="none" aria-label="Elapsed: No sort applied, activate to apply a descending sort" style="user-select: none;">
+ <div class="tablesorter-header-inner">Elapsed</div>
+ </th>
+ <th class="stats-col-graph tablesorter-header sorter-false tablesorter-headerUnSorted" data-column="6" scope="col" role="columnheader" aria-disabled="true" unselectable="on" aria-sort="none" aria-label="Pass / Fail / Skip: No sort applied, sorting is disabled" style="user-select: none;">
+ <div class="tablesorter-header-inner">Pass / Fail / Skip</div>
+ </th>
+ </tr>
+ </thead>
+ <tbody aria-live="polite" aria-relevant="all">
+ <tr onclick="makeElementVisible('s1')" class="row-0" role="row">
+ <td class="stats-col-name" title="pap">
+ <div class="stat-name">
+ <span href="#s1">
+ <span class="parent-name"></span>Dummy Test</span>
+ </div>
+ </td>
+ <td class="stats-col-stat">1</td>
+ <td class="stats-col-stat">1</td>
+ <td class="stats-col-stat">0</td>
+ <td class="stats-col-stat">0</td>
+ <td class="stats-col-elapsed" title="Total execution time of this suite.">00:00:00</td>
+ <td class="stats-col-graph">
+ <div class="graph">
+ <div class="pass-bar" style="width: 100%" title="100%"></div>
+ <div class="fail-bar" style="width: 0%" title="0%"></div>
+ <div class="skip-bar" style="width: 0%" title="0%"></div>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</body>
+</html>
+EOF
+
+cp ${ROBOT_LOG_DIR}/log.html ${ROBOT_LOG_DIR}/report.html