aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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