Add docs for participant intermediary, simulator 16/125416/1
authorSirisha_Manchikanti <sirisha.manchikanti@est.tech>
Tue, 19 Oct 2021 12:16:02 +0000 (13:16 +0100)
committerLiam Fallon <liam.fallon@est.tech>
Fri, 29 Oct 2021 10:11:55 +0000 (10:11 +0000)
This commit contains docs for participant intermediary, participant
simulator and respective smoke tests

Issue-ID: POLICY-3716
Signed-off-by: Sirisha_Manchikanti <sirisha.manchikanti@est.tech>
Change-Id: I72f658d39a3afeab643f680981ab73354418a26c
(cherry picked from commit 0f40950baa6a423aad590e8c964468f34c6582f7)

docs/clamp/controlloop/design-impl/participants/participant-intermediary.rst
docs/clamp/controlloop/design-impl/participants/participant-simulator.rst
docs/clamp/controlloop/design-impl/participants/swagger/participant-sim.json [new file with mode: 0644]
docs/development/devtools/apex-s3p.rst
docs/development/devtools/clamp-cl-participant-protocol-smoke.rst [new file with mode: 0644]
docs/development/devtools/clamp-s3p.rst
docs/development/devtools/devtools.rst

index 7f6cf49..a483dfc 100644 (file)
@@ -10,4 +10,120 @@ state handling for participant implementations. It provides a Java API, which pa
 implementations implement to receive and send messages to the CLAMP runtime and to handle
 Control Loop Element state.
 
-.. warning:: To be completed
+Terminology
+-----------
+- Broadcast message: a message for all participants (participantId=null and participantType=null)
+- Message to a participant: a message only for a participant (participantId and participantType properly filled)
+- MessageSender: a class that takes care of sending messages from participant-intermediary
+- GUI: graphical user interface, Postman or a Front-End Application
+
+Inbound messages to participants
+--------------------------------
+- PARTICIPANT_REGISTER_ACK: received as a response from controlloop runtime server as an acknowledgement to ParticipantRegister message sent from a participant
+- PARTICIPANT_DEREGISTER_ACK: received as a response from controlloop runtime server as an acknowledgement to ParticipantDeregister message sent from a participant
+- CONTROL_LOOP_STATE_CHANGE: a message received from controlloop runtime server for a state change of controlloop
+- CONTROL_LOOP_UPDATE: a message received from controlloop runtime server for a controlloop update with controlloop instances
+- PARTICIPANT_UPDATE: a message received from controlloop runtime server for a participant update with tosca definitions of controlloop
+- PARTICIPANT_STATUS_REQ: A status request received from controlloop runtime server to send an immediate ParticipantStatus from all participants
+
+Outbound messages
+-----------------
+- PARTICIPANT_REGISTER: is sent by a participant during startup
+- PARTICIPANT_DEREGISTER: is sent by a participant during shutdown
+- PARTICIPANT_STATUS: is sent by a participant as heartbeat with the status and health of a participant
+- CONTROLLOOP_STATECHANGE_ACK: is an acknowledgement sent by a participant as a response to ControlLoopStateChange
+- CONTROLLOOP_UPDATE_ACK: is an acknowledgement sent by a participant as a response to ControlLoopUpdate
+- PARTICIPANT_UPDATE_ACK: is an acknowledgement sent by a participant as a response to ParticipantUpdate
+
+Design of a PARTICIPANT_REGISTER message
+----------------------------------------
+- A participant starts and send a PARTICIPANT_REGISTER message
+- ParticipantRegisterListener collects the message from DMaap
+- if participant is not present in DB, it saves participant reference with status UNKNOWN to DB
+- if participant is present in DB, it triggers the execution to send a PARTICIPANT_UPDATE message to the participant registered (message of Priming)
+- the message is built by ParticipantUpdatePublisher using Tosca Service Template data (to fill the list of ParticipantDefinition)
+- It triggers the execution to send a PARTICIPANT_REGISTER_ACK message to the participant registered
+- MessageIntercept intercepts that event, if PARTICIPANT_UPDATE message has been sent, it will be add a task to handle PARTICIPANT_REGISTER in SupervisionScanner
+- SupervisionScanner starts the monitoring for participantUpdate
+
+Design of a PARTICIPANT_DEREGISTER message
+------------------------------------------
+- A participant starts and send a PARTICIPANT_DEREGISTER message
+- ParticipantDeregisterListener collects the message from DMaap
+- if participant is not present in DB, do nothing
+- if participant is present in DB, it triggers the execution to send a PARTICIPANT_UPDATE message to the participant registered (message of DePriming)
+- the message is built by ParticipantUpdatePublisher using Tosca Service Template data as null
+- ParticipantHandler removes the tosca definitions stored
+- It triggers the execution to send a PARTICIPANT_DEREGISTER_ACK message to the participant registered
+- Participant is not monitored.
+
+Design of a creation of a Control Loop Type
+-------------------------------------------
+- If there are participants registered with CL-runtime, it triggers the execution to send a broadcast PARTICIPANT_UPDATE message
+- the message is built by ParticipantUpdatePublisher using Tosca Service Template data (to fill the list of ParticipantDefinition)
+- Participant-intermediary will receive a PARTICIPANT_UDPATE message and stores the Tosca Service Template data on ParticipantHandler
+
+Design of a deletion of a Control Loop Type
+-------------------------------------------
+- if there are participants registered, CL-runtime triggers the execution to send a broadcast PARTICIPANT_UPDATE message
+- the message is built by ParticipantUpdatePublisher with an empty list of ParticipantDefinition
+- It deletes the Control Loop Type from DB
+- Participant-intermediary will receive a PARTICIPANT_UDPATE message and deletes the Tosca Service Template data on ParticipantHandler
+
+Design of a creation of a Control Loop
+--------------------------------------
+- CONTROL_LOOP_UPDATE message with instantiation details and UNINITIALISED state is sent to participants
+- Participant-intermediary validates the current state change
+- Participant-intermediary will recieve CONTROL_LOOP_UPDATE message and sends the details of ControlLoopElements to participants
+- Each participant performs its designated job of deployment by interacting with respective frameworks
+
+Design of a deletion of a Control Loop
+--------------------------------------
+- CONTROL_LOOP_STATE_CHANGE message with UNINITIALISED state is sent to participants
+- Participant-intermediary validates the current state change
+- Participant-intermediary will recieve CONTROL_LOOP_STATE_CHANGE message and sends the details of ControlLoopElements to participants
+- Each participant performs its designated job of undeployment by interacting with respective frameworks
+
+Design of "issues control loop commands to control loops" - case UNINITIALISED to PASSIVE
+-----------------------------------------------------------------------------------------
+- CONTROL_LOOP_STATE_CHANGE message with state changed from UNINITIALISED to PASSIVE is sent to participants
+- Participant-intermediary validates the current state change
+- Participant-intermediary will recieve CONTROL_LOOP_STATE_CHANGE message and sends the details of state change to participants
+- Each participant performs its designated job of state change by interacting with respective frameworks
+
+Design of "issues control loop commands to control loops" - case PASSIVE to UNINITIALISED
+-----------------------------------------------------------------------------------------
+- CONTROL_LOOP_STATE_CHANGE message with state changed from PASSIVE to UNINITIALISED is sent to participants
+- Participant-intermediary validates the current state change
+- Participant-intermediary will recieve CONTROL_LOOP_STATE_CHANGE message and sends the details of state change to participants
+- Each participant performs its designated job of state change by interacting with respective frameworks
+
+Design of "issues control loop commands to control loops" - case PASSIVE to RUNNING
+-----------------------------------------------------------------------------------
+- CONTROL_LOOP_STATE_CHANGE message with state changed from PASSIVE to RUNNING is sent to participants
+- Participant-intermediary validates the current state change
+- Participant-intermediary will recieve CONTROL_LOOP_STATE_CHANGE message and sends the details of state change to participants
+- Each participant performs its designated job of state change by interacting with respective frameworks
+
+Design of "issues control loop commands to control loops" - case RUNNING to PASSIVE
+-----------------------------------------------------------------------------------
+- CONTROL_LOOP_STATE_CHANGE message with state changed from RUNNING to PASSIVE is sent to participants
+- Participant-intermediary validates the current state change
+- Participant-intermediary will recieve CONTROL_LOOP_STATE_CHANGE message and sends the details of state change to participants
+- Each participant performs its designated job of state change by interacting with respective frameworks
+
+Design of a PARTICIPANT_STATUS message
+--------------------------------------
+- A participant sends a scheduled PARTICIPANT_STATUS message
+- This message will hold the state and healthStatus of all the participants running actively
+- PARTICIPANT_STATUS message holds a special attribute to return Tosca definitions, this attribute is populated only in response to PARTICIPANT_STATUS_REQ
+
+Design of a CONTROLLOOP_UPDATE_ACK message
+------------------------------------------
+- A participant sends CONTROLLOOP_UPDATE_ACK message in response to a CONTROLLOOP_UPDATE message.
+- For each CL-elements moved to the ordered state as indicated by the CONTROLLOOP_UPDATE
+- ControlLoopUpdateAckListener in CL-runtime collects the messages from DMaap
+- It checks the status of all control loop elements and checks if the control loop is primed
+- It updates the controlloop in DB accordingly
+
+Design of a CONTROLLOOP_STATECHANGE_ACK is similar to the design for CONTROLLOOP_UPDATE_ACK
index 8f59a9f..9ac4e73 100644 (file)
@@ -5,4 +5,17 @@
 Participant Simulator
 #####################
 
-To be completed.
+This can be used for simulation testing purpose when there are no actual frameworks or a full deployment.
+Participant simulator can edit the states of ControlLoopElements and Participants for verification of other controlloop components
+for early testing.
+All controlloop components should be setup, except participant frameworks (for example, no policy framework components
+are needed) and participant simulator acts as respective participant framework, and state changes can be done with following REST APIs
+
+Participant Simulator API
+=========================
+
+This API allows a Participant Simulator to be started and run for test purposes.
+
+:download:`Download Policy Participant Simulator API Swagger  <swagger/participant-sim.json>`
+
+.. swaggerv2doc:: swagger/participant-sim.json
diff --git a/docs/clamp/controlloop/design-impl/participants/swagger/participant-sim.json b/docs/clamp/controlloop/design-impl/participants/swagger/participant-sim.json
new file mode 100644 (file)
index 0000000..79fc301
--- /dev/null
@@ -0,0 +1,478 @@
+{
+    "swagger": "2.0",
+    "info": {
+        "description": "Api Documentation",
+        "version": "1.0",
+        "title": "Api Documentation",
+        "termsOfService": "urn:tos",
+        "contact": {},
+        "license": {
+            "name": "Apache 2.0",
+            "url": "http://www.apache.org/licenses/LICENSE-2.0"
+        }
+    },
+    "paths": {
+        "/onap/participantsim/v2/elements": {
+            "put": {
+                "tags": [
+                    "Clamp Control Loop Participant Simulator API"
+                ],
+                "summary": "Updates simulated control loop elements",
+                "description": "Updates simulated control loop elements, returning the updated control loop definition IDs",
+                "operationId": "updateUsingPUT",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json",
+                    "application/yaml"
+                ],
+                "parameters": [
+                    {
+                        "in": "body",
+                        "name": "body",
+                        "description": "Body of a control loop element",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/ControlLoopElementReq",
+                            "originalRef": "ControlLoopElementReq"
+                        }
+                    },
+                    {
+                        "name": "X-ONAP-RequestID",
+                        "in": "header",
+                        "description": "RequestID for http transaction",
+                        "required": false,
+                        "type": "string",
+                        "format": "uuid"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/TypedSimpleResponse«ControlLoopElement»",
+                            "originalRef": "TypedSimpleResponse«ControlLoopElement»"
+                        }
+                    },
+                    "201": {
+                        "description": "Created"
+                    },
+                    "401": {
+                        "description": "Authentication Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Authorization Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Not Found"
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "basicAuth": []
+                    }
+                ],
+                "x-interface info": {
+                    "api-version": "1.0.0",
+                    "last-mod-release": "Dublin"
+                }
+            }
+        },
+        "/onap/participantsim/v2/elements/{name}/{version}": {
+            "get": {
+                "tags": [
+                    "Clamp Control Loop Participant Simulator API"
+                ],
+                "summary": "Query details of the requested simulated control loop elements",
+                "description": "Queries details of the requested simulated control loop elements, returning all control loop element details",
+                "operationId": "elementsUsingGET",
+                "produces": [
+                    "application/json",
+                    "application/yaml"
+                ],
+                "parameters": [
+                    {
+                        "name": "name",
+                        "in": "path",
+                        "description": "Control loop element name",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "version",
+                        "in": "path",
+                        "description": "Control loop element version",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "X-ONAP-RequestID",
+                        "in": "header",
+                        "description": "RequestID for http transaction",
+                        "required": false,
+                        "type": "string",
+                        "format": "uuid"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "object",
+                            "additionalProperties": {
+                                "$ref": "#/definitions/ControlLoopElementRes",
+                                "originalRef": "ControlLoopElementRes"
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Authentication Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Authorization Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Not Found"
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "basicAuth": []
+                    }
+                ],
+                "x-interface info": {
+                    "api-version": "1.0.0",
+                    "last-mod-release": "Dublin"
+                }
+            }
+        },
+        "/onap/participantsim/v2/participants": {
+            "put": {
+                "tags": [
+                    "Clamp Control Loop Participant Simulator API"
+                ],
+                "summary": "Updates simulated participants",
+                "description": "Updates simulated participants, returning the updated control loop definition IDs",
+                "operationId": "updateUsingPUT_1",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json",
+                    "application/yaml"
+                ],
+                "parameters": [
+                    {
+                        "in": "body",
+                        "name": "body",
+                        "description": "Body of a participant",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/ParticipantReq",
+                            "originalRef": "ParticipantReq"
+                        }
+                    },
+                    {
+                        "name": "X-ONAP-RequestID",
+                        "in": "header",
+                        "description": "RequestID for http transaction",
+                        "required": false,
+                        "type": "string",
+                        "format": "uuid"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/TypedSimpleResponse«Participant»",
+                            "originalRef": "TypedSimpleResponse«Participant»"
+                        }
+                    },
+                    "201": {
+                        "description": "Created"
+                    },
+                    "401": {
+                        "description": "Authentication Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Authorization Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Not Found"
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "basicAuth": []
+                    }
+                ],
+                "x-interface info": {
+                    "api-version": "1.0.0",
+                    "last-mod-release": "Dublin"
+                }
+            }
+        },
+        "/onap/participantsim/v2/participants/{name}/{version}": {
+            "get": {
+                "tags": [
+                    "Clamp Control Loop Participant Simulator API"
+                ],
+                "summary": "Query details of the requested simulated participants",
+                "description": "Queries details of the requested simulated participants, returning all participant details",
+                "operationId": "participantsUsingGET",
+                "produces": [
+                    "application/json",
+                    "application/yaml"
+                ],
+                "parameters": [
+                    {
+                        "name": "name",
+                        "in": "path",
+                        "description": "Participant name",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "version",
+                        "in": "path",
+                        "description": "Participant version",
+                        "required": true,
+                        "type": "string"
+                    },
+                    {
+                        "name": "X-ONAP-RequestID",
+                        "in": "header",
+                        "description": "RequestID for http transaction",
+                        "required": false,
+                        "type": "string",
+                        "format": "uuid"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/ParticipantRes",
+                                "originalRef": "ParticipantRes"
+                            }
+                        }
+                    },
+                    "401": {
+                        "description": "Authentication Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    },
+                    "403": {
+                        "description": "Authorization Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Not Found"
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "headers": {
+                            "X-LatestVersion": {
+                                "type": "string"
+                            },
+                            "X-PatchVersion": {
+                                "type": "string"
+                            },
+                            "X-MinorVersion": {
+                                "type": "string"
+                            },
+                            "X-ONAP-RequestID": {
+                                "type": "string",
+                                "format": "uuid"
+                            }
+                        }
+                    }
+                },
+                "security": [
+                    {
+                        "basicAuth": []
+                    }
+                ],
+                "x-interface info": {
+                    "api-version": "1.0.0",
+                    "last-mod-release": "Dublin"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
index bfed24e..ce61e55 100644 (file)
@@ -102,7 +102,7 @@ The following steps can be used to configure the parameters of test plan.
  wait                Wait time if required after a request (in milliseconds)
  threads             Number of threads to run test cases in parallel
  threadsTimeOutInMs  Synchronization timer for threads running in parallel (in milliseconds)
-===================  ================================================================================
+===================  ===============================================================================
 
 Run Test
 --------
diff --git a/docs/development/devtools/clamp-cl-participant-protocol-smoke.rst b/docs/development/devtools/clamp-cl-participant-protocol-smoke.rst
new file mode 100644 (file)
index 0000000..98d7fcd
--- /dev/null
@@ -0,0 +1,144 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. _clamp-gui-controlloop-smoke-tests:
+CLAMP Participant Protocol Smoke Tests
+---------------------------
+1. Introduction
+***************
+The CLAMP Control Loop Participant protocol is an asynchronous protocol that is used by the CLAMP runtime
+to coordinate life cycle management of Control Loop instances.
+This document will serve as a guide to do smoke tests on the different usecases that are involved when
+working with the Participant protocol and outline how they operate.
+It will also show a developer how to set up their environment for carrying out smoke tests on the participants.
+
+2. Setup Guide
+**************
+This section will show the developer how to set up their environment to start testing participants with some instruction on how to carry out the tests. There are a number of prerequisites. Note that this guide is written by a Linux user - although the majority of the steps show will be exactly the same in Windows or other systems.
+
+2.1 Prerequisites
+=================
+- Java 11
+- Docker
+- Maven 3
+- Git
+- Refer to this guide for basic environment setup `Setting up dev environment <https://wiki.onap.org/display/DW/Setting+Up+Your+Development+Environment>`_
+
+2.2 Setting up the components
+=============================
+- Controlloop runtime component docker image is started and running.
+- Participant docker images policy-clamp-cl-pf-ppnt, policy-clamp-cl-http-ppnt, policy-clamp-cl-k8s-ppnt are started and running.
+- Dmaap simulator for communication between components.
+- mariadb docker container for policy and controlloop database.
+- policy-api for communication between policy participant and policy-framework
+In this setup guide, we will be setting up all the components technically required for a working convenient dev environment. We will not be setting up all of the participants - we will setup only the policy participant as an example.
+
+2.2.1 MariaDB Setup
+===================
+We will be using Docker to run our mariadb instance. It will have a total of two databases running in it.
+- controlloop: the runtime-controlloop db
+- policyadmin: the policy-api db
+
+3. Running Tests of protocol dialogues
+**************************************
+lloop type definitions and common property values for participant types
+In this section, we will run through the functionalities mentioned at the start of this document is section 1. Each functionality will be tested and we will confirm that they were carried out successfully. There is a tosca service template that can be used for this test
+:download:`Tosca Service Template <tosca/tosca-for-gui-smoke-tests.yaml>`
+
+3.1 Participant Registration
+============================
+Action: Bring up the participant
+Test result:
+- Observe PARTICIPANT_REGISTER going from participant to runtime
+- Observe PARTICIPANT_REGISTER_ACK going from runtime to participant
+- Observe PARTICIPANT_UPDATE going from runtime to participant
+
+3.2 Participant Deregistration
+==============================
+Action: Bring down the participant
+Test result:
+- Observe PARTICIPANT_DEREGISTER going from participant to runtime
+- Observe PARTICIPANT_DEREGISTER_ACK going from runtime to participant
+
+3.3 Participant Priming
+=======================
+When a control loop is primed, the portion of the Control Loop Type Definition and Common Property values for the participants
+of each participant type mentioned in the Control Loop Definition are sent to the participants.
+Action: Invoke a REST API to prime controlloop type definitions and set values of common properties
+Test result:
+- Observe PARTICIPANT_UPDATE going from runtime to participant with controlloop type definitions and common property values for participant types
+- Observe that the controlloop type definitions and common property values for participant types are stored on ParticipantHandler
+- Observe PARTICIPANT_UPDATE_ACK going from runtime to participant
+
+3.4 Participant DePriming
+=========================
+When a control loop is de-primed, the portion of the Control Loop Type Definition and Common Property values for the participants
+of each participant type mentioned in the Control Loop Definition are deleted on participants.
+Action: Invoke a REST API to deprime controlloop type definitions
+Test result:
+- If controlloop instances exist in runtime database, return a response for the REST API with error response saying "Cannot decommission controlloop type definition"
+- If no controlloop instances exist in runtime database, Observe PARTICIPANT_UPDATE going from runtime to participant with definitions as null
+- Observe that the controlloop type definitions and common property values for participant types are removed on ParticipantHandler
+- Observe PARTICIPANT_UPDATE_ACK going from runtime to participant
+
+3.5 Control Loop Update
+=======================
+Control Loop Update handles creation, change, and deletion of control loops on participants.
+Action: Trigger controlloop instantiation from GUI
+Test result:
+- Observe CONTROL_LOOP_UPDATE going from runtime to participant
+- Observe that the controlloop type instances and respective property values for participant types are stored on ControlLoopHandler
+- Observe that the controlloop state is UNINITIALISED
+- Observe CONTROL_LOOP_UPDATE_ACK going from participant to runtime
+
+3.6 Control Loop state change to PASSIVE
+========================================
+Control Loop Update handles creation, change, and deletion of control loops on participants.
+Action: Change state of the controlloop to PASSIVE
+Test result:
+- Observe CONTROL_LOOP_STATE_CHANGE going from runtime to participant
+- Observe that the ControlLoopElements state is PASSIVE
+- Observe that the controlloop state is PASSIVE
+- Observe CONTROL_LOOP_STATE_CHANGE_ACK going from participant to runtime
+
+3.7 Control Loop state change to RUNNING
+========================================
+Control Loop Update handles creation, change, and deletion of control loops on participants.
+Action: Change state of the controlloop to RUNNING
+Test result:
+- Observe CONTROL_LOOP_STATE_CHANGE going from runtime to participant
+- Observe that the ControlLoopElements state is RUNNING
+- Observe that the controlloop state is RUNNING
+- Observe CONTROL_LOOP_STATE_CHANGE_ACK going from participant to runtime
+
+3.8 Control Loop state change to PASSIVE
+========================================
+Control Loop Update handles creation, change, and deletion of control loops on participants.
+Action: Change state of the controlloop to PASSIVE
+Test result:
+- Observe CONTROL_LOOP_STATE_CHANGE going from runtime to participant
+- Observe that the ControlLoopElements state is PASSIVE
+- Observe that the controlloop state is PASSIVE
+- Observe CONTROL_LOOP_STATE_CHANGE_ACK going from participant to runtime
+
+3.9 Control Loop state change to UNINITIALISED
+==============================================
+Control Loop Update handles creation, change, and deletion of control loops on participants.
+Action: Change state of the controlloop to UNINITIALISED
+Test result:
+- Observe CONTROL_LOOP_STATE_CHANGE going from runtime to participant
+- Observe that the ControlLoopElements state is UNINITIALISED
+- Observe that the controlloop state is UNINITIALISED
+- Observe that the ControlLoopElements undeploy the instances from respective frameworks
+- Observe that the control loop instances are removed from participants
+- Observe CONTROL_LOOP_STATE_CHANGE_ACK going from participant to runtime
+
+3.10 Control Loop monitoring and reporting
+==========================================
+This dialogue is used as a heartbeat mechanism for participants, to monitor the status of Control Loop Elements, and to gather statistics on control loops. The ParticipantStatus message is sent periodically by each participant. The reporting interval for sending the message is configurable
+Action: Bring up participant
+Test result:
+- Observe that PARTICIPANT_STATUS message is sent from participants to runtime in a regular interval
+- Trigger a PARTICIPANT_STATUS_REQ from runtime and observe a PARTICIPANT_STATUS message with tosca definitions of control loop type definitions sent
+from all the participants to runtime
+
+This concluded the required smoke tests
+
index e01848d..08f0953 100644 (file)
@@ -48,14 +48,14 @@ The following steps can be used to configure the parameters of test plan.
 - **HTTP Header Manager** - used to store headers which will be used for making HTTP requests.
 - **User Defined Variables** -  used to store following user defined parameters.
 
-===========   ===================================================================
- **Name**      **Description**
-===========   ===================================================================
- RUNTIME_HOST IP Address or host name of controlloop runtime component
- RUNTIME_PORT Port number of controlloop runtime components for making REST API calls
- POLICY_PARTICIPANT_HOST IP Address or host name of policy participant
- POLICY_PARTICIPANT_HOST_PORT Port number of policy participant
-===========   ===================================================================
+=============================  ========================================================================
+ **Name**                      **Description**
+=============================  ========================================================================
+ RUNTIME_HOST                  IP Address or host name of controlloop runtime component
+ RUNTIME_PORT                  Port number of controlloop runtime components for making REST API calls
+ POLICY_PARTICIPANT_HOST       IP Address or host name of policy participant
+ POLICY_PARTICIPANT_HOST_PORT  Port number of policy participant
+=============================  ========================================================================
 
 The test was run in the background via "nohup", to prevent it from being interrupted:
 
@@ -88,17 +88,17 @@ Stability test plan was triggered for 72 hours.
 
 **Controloop component Setup**
 
-================ =======================                            ==================                              ==========================
-**CONTAINER ID**  **IMAGE**                                             **PORTS**                                     **NAMES**
-================ =======================  ==================        ==================================              ==========================
- a9cb0cd103cf   onap/policy-clamp-cl-runtime:latest                     6969/tcp                                      policy-clamp-cl-runtime
- 886e572b8438   onap/policy-clamp-cl-pf-ppnt:latest                     6973/tcp                                      policy-clamp-cl-pf-ppnt
- 035707b1b95f   nexus3.onap.org:10001/onap/policy-api:latest            6969/tcp                                      policy-api
- d34204f95ff3   onap/policy-clamp-cl-http-ppnt:latest                   6971/tcp                                      policy-clamp-cl-http-ppnt
- 4470e608c9a8   onap/policy-clamp-cl-k8s-ppnt:latest                    6972/tcp, 8083/tcp                            policy-clamp-cl-k8s-ppnt
- 62229d46b79c   nexus3.onap.org:10001/onap/policy-models-simulator:latest 3905/tcp, 6666/tcp, 6668-6670/tcp, 6680/tcp simulator
- efaf0ca5e1f0   nexus3.onap.org:10001/mariadb:10.5.8                    3306/tcp                                      mariadb
-=======================  =================  ==================  ======================================              ===========================
+================  =========================================================  ===========================================  =========================
+**CONTAINER ID**  **IMAGE**                                                  **PORTS**                                    **NAMES**
+================  =========================================================  ===========================================  =========================
+ a9cb0cd103cf     onap/policy-clamp-cl-runtime:latest                        6969/tcp                                     policy-clamp-cl-runtime
+ 886e572b8438     onap/policy-clamp-cl-pf-ppnt:latest                        6973/tcp                                     policy-clamp-cl-pf-ppnt
+ 035707b1b95f     nexus3.onap.org:10001/onap/policy-api:latest               6969/tcp                                     policy-api
+ d34204f95ff3     onap/policy-clamp-cl-http-ppnt:latest                      6971/tcp                                     policy-clamp-cl-http-ppnt
+ 4470e608c9a8     onap/policy-clamp-cl-k8s-ppnt:latest                       6972/tcp, 8083/tcp                           policy-clamp-cl-k8s-ppnt
+ 62229d46b79c     nexus3.onap.org:10001/onap/policy-models-simulator:latest  3905/tcp, 6666/tcp, 6668-6670/tcp, 6680/tcp  simulator
+ efaf0ca5e1f0     nexus3.onap.org:10001/mariadb:10.5.8                       3306/tcp                                     mariadb
+================  =========================================================  ===========================================  =========================
 
 .. Note::
 
@@ -108,11 +108,11 @@ Stability test plan was triggered for 72 hours.
 
 **JMeter Screenshot**
 
-.. image:: clamp-s3p-results/controlloop_stability_jmeter.PNG
+.. image:: clamp-s3p-results/controlloop_stability_jmeter.png
 
 **JMeter Screenshot**
 
-.. image:: clamp-s3p-results/controlloop_stability_table.PNG
+.. image:: clamp-s3p-results/controlloop_stability_table.png
 
 **Memory and CPU usage**
 
@@ -120,11 +120,11 @@ The memory and CPU usage can be monitored by running "docker stats" command. A s
 
 Memory and CPU usage before test execution:
 
-.. image:: clamp-s3p-results/Stability_before_stats.PNG
+.. image:: clamp-s3p-results/Stability_before_stats.png
 
 Memory and CPU usage after test execution:
 
-.. image:: clamp-s3p-results/Stability_after_stats.PNG
+.. image:: clamp-s3p-results/Stability_after_stats.png
 
 
 Performance Test of Controlloop components
@@ -180,18 +180,18 @@ Test results are shown as below.
 
 **Controloop component Setup**
 
-================ =======================                            ==================                              ==========================
-**CONTAINER ID**  **IMAGE**                                             **PORTS**                                     **NAMES**
-================ =======================  ==================        ==================================              ==========================
- a9cb0cd103cf   onap/policy-clamp-cl-runtime:latest                     6969/tcp                                      policy-clamp-cl-runtime
- 886e572b8438   onap/policy-clamp-cl-pf-ppnt:latest                     6973/tcp                                      policy-clamp-cl-pf-ppnt
- 035707b1b95f   nexus3.onap.org:10001/onap/policy-api:latest            6969/tcp                                      policy-api
- d34204f95ff3   onap/policy-clamp-cl-http-ppnt:latest                   6971/tcp                                      policy-clamp-cl-http-ppnt
- 4470e608c9a8   onap/policy-clamp-cl-k8s-ppnt:latest                    6972/tcp, 8083/tcp                            policy-clamp-cl-k8s-ppnt
- 62229d46b79c   nexus3.onap.org:10001/onap/policy-models-simulator:latest 3905/tcp, 6666/tcp, 6668-6670/tcp, 6680/tcp simulator
- efaf0ca5e1f0   nexus3.onap.org:10001/mariadb:10.5.8                    3306/tcp                                      mariadb
-=======================  =================  ==================  ======================================              ===========================
+================  =========================================================  ===========================================  =========================
+**CONTAINER ID**  **IMAGE**                                                  **PORTS**                                    **NAMES**
+================  =========================================================  ===========================================  =========================
+ a9cb0cd103cf     onap/policy-clamp-cl-runtime:latest                        6969/tcp                                     policy-clamp-cl-runtime
+ 886e572b8438     onap/policy-clamp-cl-pf-ppnt:latest                        6973/tcp                                     policy-clamp-cl-pf-ppnt
+ 035707b1b95f     nexus3.onap.org:10001/onap/policy-api:latest               6969/tcp                                     policy-api
+ d34204f95ff3     onap/policy-clamp-cl-http-ppnt:latest                      6971/tcp                                     policy-clamp-cl-http-ppnt
+ 4470e608c9a8     onap/policy-clamp-cl-k8s-ppnt:latest                       6972/tcp, 8083/tcp                           policy-clamp-cl-k8s-ppnt
+ 62229d46b79c     nexus3.onap.org:10001/onap/policy-models-simulator:latest  3905/tcp, 6666/tcp, 6668-6670/tcp, 6680/tcp  simulator
+ efaf0ca5e1f0     nexus3.onap.org:10001/mariadb:10.5.8                       3306/tcp                                     mariadb
+================  =========================================================  ===========================================  =========================
 
 **JMeter Screenshot**
 
-.. image:: clamp-s3p-results/cl-s3p-performance-result-jmeter.PNG
+.. image:: clamp-s3p-results/cl-s3p-performance-result-jmeter.png
index 0cf11a4..0654b3a 100644 (file)
@@ -297,6 +297,9 @@ familiar with the Policy Framework components and test any local changes.
 ..
    clamp-smoke.rst
 
+..
+   clamp-cl-participant-protocol-smoke.rst
+
 Running the Stability/Performance Tests
 ***************************************
 
@@ -315,7 +318,7 @@ familiar with the Policy Framework components and test any local changes.
    clamp-s3p.rst
 
 Running the Pairwise Tests
-***********************
+**************************
 
 The following links contain instructions on how to run the pairwise tests. These may be helpful to developers check that
 the Policy Framework works in a full ONAP deployment.