blob: aa3196516827d35f9851a9b9f5a9b41c56d42135 [file] [log] [blame]
saul.gill9217f6c2021-10-18 19:03:10 +01001.. This work is licensed under a Creative Commons Attribution 4.0 International License.
2
3.. _clamp-gui-controlloop-smoke-tests:
4
5CLAMP GUI Smoke Tests
6---------------------------
71. Introduction
8***************
9The CLAMP GUI for Control Loops is designed to provide a user the ability to interact
10with the Control Loop Runtime to perform several actions.
11
12- Commission new Tosca Service Templates.
13- Editing Common Properties.
14- Decommission existing Tosca Service Templates.
15- Create new instances of Control Loops.
16- Change the state of the Control Loops.
17- Delete Control Loops.
18
19This document will serve as a guide to do smoke tests on the different components that are involved when working with the GUI and outline how they operate. It will also show a developer how to set up their environment for carrying out smoke tests on the GUI.
20
212. Setup Guide
22**************
23This section will show the developer how to set up their environment to start testing in GUI 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. The IDE used in the examples here is Intellij but most or all of what is described should be the same across IDEs.
24
252.1 Prerequisites
26=================
27- Java 11
28- node
29- npm
30- Docker
31- Maven 3
32- Git
33- Refer to this guide for basic environment setup `Setting up dev environment <https://wiki.onap.org/display/DW/Setting+Up+Your+Development+Environment>`_
34
352.2 Assumptions
36===============
37- You are accessing the policy repositories through gerrit
38- You are using "git review".
39
40The following repositories are required for development in this project. These repositories should be present on your machine and you should run "mvn clean install" on all of them so that the packages are present in your .m2 repository.
41
42- policy/parent
43- policy/common
44- policy/models
45- policy/clamp
46- policy/docker
47- policy/gui
48- policy/api
49
50In 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.
51
522.3 Setting up the components
53=============================
54
552.3.3 MariaDB Setup
56^^^^^^^^^^^^^^^^^^^
57We will be using Docker to run our mariadb instance. It will have a total of three databases running in it.
58
59- controlloop: the runtime-controlloop db
60- cldsdb4: the clamp backend db
61- policyadmin: the policy-api db
62
63The easiest way to do this is to perform a small alteration on an SQL script provided by the clamp backend in the file "runtime/extra/sql/bulkload/create-db.sql"
64
65.. code-block:: mysql
66
67 CREATE DATABASE `cldsdb4`;
68 USE `cldsdb4`;
69 DROP USER 'clds';
70 CREATE USER 'clds';
71 GRANT ALL on cldsdb4.* to 'clds' identified by 'sidnnd83K' with GRANT OPTION;
72 CREATE DATABASE `controlloop`;
73 USE `controlloop`;
74 DROP USER 'policy';
75 CREATE USER 'policy';
76 GRANT ALL on controlloop.* to 'policy' identified by 'P01icY' with GRANT OPTION;
77 CREATE DATABASE `policyadmin`;
78 USE `policyadmin`;
79 DROP USER 'policy_user';
80 CREATE USER 'policy_user';
81 GRANT ALL on controlloop.* to 'policy_user' identified by 'policy_user' with GRANT OPTION;
82 FLUSH PRIVILEGES;
83
84Once this has been done, we can run the bash script provided here: "runtime/extra/bin-for-dev/start-db.sh"
85
86.. code-block:: bash
87
88 ./start-db.sh
89
90This will setup all three databases. It will also ensure that the tables in cldsdb4 are created. The database will be exposed locally on port 3306 and will be backed by an anonymous docker volume.
91
922.3.4 DMAAP Simulator
93^^^^^^^^^^^^^^^^^^^^^
94For convenience, a dmaap simulator has been provided in the policy/models repository. To start the simulator, you can do the following:
95
961. Navigate to /models-sim/policy-models-simulators in the policy/models repository.
972. Add a configuration file to src/test/resources with the following contents:
98
99.. code-block:: json
100
101 {
102 "dmaapProvider":{
103 "name":"DMaaP simulator",
104 "topicSweepSec":900
105 },
106 "restServers":[
107 {
108 "name":"DMaaP simulator",
109 "providerClass":"org.onap.policy.models.sim.dmaap.rest.DmaapSimRestControllerV1",
110 "host":"localhost",
111 "port":3904,
112 "https":false
113 }
114 ]
115 }
116
1173. You can then start dmaap with:
118
119.. code-block:: bash
120
121 mvn exec:java -Dexec.mainClass=org.onap.policy.models.simulators.Main -Dexec.args="src/test/resources/YOUR_CONF_FILE.json"
122
123At this stage the dmaap simulator should be running on your local machine on port 3904.
124
1252.3.5 Policy API
126^^^^^^^^^^^^^^^^
127In the policy-api repo, you should fine the file "src/main/resources/etc/defaultConfig.json". This file must be altered slightly - as below with the restServerParameters and databaseProviderParameters shown. Note how the database parameters match-up with what you setup in Mariadb:
128
129.. code-block:: json
130
131 {
132 "restServerParameters": {
133 "host": "0.0.0.0",
134 "port": 6970,
135 "userName": "healthcheck",
136 "password": "zb!XztG34",
137 "prometheus": true,
138 "https": false,
139 "aaf": false
140 },
141 "databaseProviderParameters": {
142 "name": "PolicyProviderParameterGroup",
143 "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
144 "databaseDriver": "org.mariadb.jdbc.Driver",
145 "databaseUrl": "jdbc:mariadb://mariadb:3306/policyadmin",
146 "databaseUser": "policy_user",
147 "databasePassword": "policy_user",
148 "persistenceUnit": "PolicyMariaDb"
149 },
150 }
151
152Next, navigate to the "/main" directory. You can then run the following command to start the policy api:
153
154.. code-block:: bash
155
156 mvn exec:java -Dexec.mainClass=org.onap.policy.api.main.startstop.Main -Dexec.args=" -c ../packages/policy-api-tarball/src/main/resources/etc/defaultConfig.json"
157
1582.3.6 Clamp Backend
159^^^^^^^^^^^^^^^^^^^
160The Clamp Backend can potentially make calls to policy pap, policy api, cds, sdc and others. For controlloop development purposes, we only need to connect with the controlloop runtime api. For convenience, there has been an emulator provided to respond to requests from Clamp to all those services that we do not care about. This emulator can be run by running the following bash script "runtime/extra/bin-for-dev/start-emulator.sh"
161
162.. code-block:: bash
163
164 ./start-emulator.sh
165
166Once the emulator is running, we can then run the clamp backend. Before doing this, we need to make sure that all of the calls from the clamp backend are directed towards the correct places. We can do this by editing the application-noaaf.properties file: "src/main/resources/application-noaaf.properties". For development purposes and because we are running the components in a non-https way, this file will not need to be altered currently. The clamp backend can then be run with the script "runtime/extra/bin-for-dev/start-backend.sh".
167
168.. code-block:: bash
169
170 ./start-backend.sh
171
172Once the clamp backend is running, we can start the controlloop runtime.
173
1742.3.7 Controlloop Runtime
175^^^^^^^^^^^^^^^^^^^^^^^^^
176To start the controlloop runtime we need to go the "runtime-controlloop" directory in the clamp repo. There is a config file that is used, by default, for the controlloop runtime. That config file is here: "src/main/resources/application.yaml". For development in your local environment, it shouldn't need any adjustment and we can just run the controlloop runtime with:
177
178.. code-block:: bash
179
180 mvn spring-boot:run
181
1822.3.8 Controlloop GUI
183^^^^^^^^^^^^^^^^^^^^^
184At this point, all of the components required to test out the controlloop gui are running.We can start to make changes, and have those changes reflected in the UI for immediate feedback on our changes. But first, we must run the GUI.
185
186Firstly, go to the GUI repo and navigate to "gui-clamp/ui-react". To setup for development, we must install the dependencies of the GUI. We can do this using the npm package manager. In the directory, simply run:
187
188.. code-block:: bash
189
190 npm install
191
192This will trigger installation of the required packages. The application is configured to proxy all relevant calls to the clamp backend. The application can be started with a simple:
193
194.. code-block:: bash
195
196 npm start
197
198This uses nodes internal test dev web server to server the GUI. Once started, you can navigate to the server at "https://localhost:3000" and login with "admin/password".
199
200That completes the development setup of the environment.
201
2023. Running Tests
203****************
204In 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
205
206:download:`Tosca Service Template <tosca/tosca-for-gui-smoke-tests.yaml>`
207
208
2093.1 Commissioning
210=================
211We can carry out commissioning using the GUI. To do so, from the main page, we can select "Upload Tosca to Commissioning" as shown in the image below:
212
213.. image:: images/gui/CommissioningUpload.png
214
215Clicking this will take us to a screen where we can upload a file. Select a file to upload and click on the upload button.
216
217.. image:: images/gui/CommissioningModal.png
218
219After clicking upload, you should get a message on the modal to tell you that the upload was successful. You can then look in the logs of the policy-participant to see that the message has been received from the runtime:
220
221.. image:: images/gui/CommissioningMessageOnParticipant.png
222
223This confirms that commissioning has been complete.
224
2253.2 Edit Common Properties
226==========================
227At this stage we can edit the common properties. These properties will be common to all instances of the control loop definitions we uploaded with the tosca service template. Once an instance is created, we will not be able to alter these common properties again. We can simply click on "Edit Common Properties" in the dropdown menu and we will be taken to the modal shown below.
228
229.. image:: images/gui/CommonPropertiesModal.png
230
231The arrows to the left of the modal can be used to expand and contract the elements. If we expand one of the elements, we can see that the provider is one of the properties that we can edit. Edit this property to be "Ericsson Software Technologies". Press "Save" and then press "Commission". You should get a success message. Once you do, you can look at the full tosca service template to confirm the change in provider has been recorder. Click on "Manage Commissioned Tosca Template". Then click on "Pull Tosca Service Template". You should receive the full template on the screen. You should find your change as shown below.
232
233.. image:: images/gui/ViewEditedCommonProperties.png
234
2353.3 Create New Instances of Control Loops
236=========================================
237Once the template is commissioned, we can start to create instances. In the dropdown, click on "Instantiation Management". In the modal, you will see an empty table, as shown.
238
239.. image:: images/gui/ManageInstancesModal.png
240
241Then we will click on "Create Instance". That takes us to a page where we can edit the properties of the instance. Not the common properties, but the instance properties. The last element has Provider set as an instance property. In the same way as we did for the common properties, change the provider to "Some Other Company" - then click save. You should get a success message if all went ok. You can then go back to the instantiation management table and you should now see an instance there.
242
243.. image:: images/gui/InstanceUninitialised.png
244
245Since the instance is uninitialised, the policies and policy types are not being deployed to the policy api. We can confirm this by looking at the policy-apis database. See the image below.
246
247.. image:: images/gui/PolicyTypeNotPresent.png
248
2493.3 Change the State of the Instance
250====================================
251Now we will change the instance state to PASSIVE. This should trigger the deployment of the policy types onto the policy-api. To trigger the change of state, click on the "change" button on the instance in the instance management table. This will bring up another modal to allow you to change the state.
252
253.. image:: images/gui/ChangeState.png
254
255Pick PASSIVE and then click save. If we once again navigate to the Instance Management table, we can see that our actual state has become passive.
256
257.. image:: images/gui/PassiveState.png
258
259This should also mean that our policies and policy types should be written to the policy-api database. We can query that DB again. In the images below, we can see that the policies and the policy types have been written successfully.
260
261.. image:: images/gui/PolicyTypeSuccess.png
262
263and
264
265.. image:: images/gui/PolicySuccess.png
266
267Following the same procedure as changeing the state to PASSIVE, we can then change to UNINITIALISED. This deletes the policies and policy types through the policy api and changes the overall state of the loop. we can then delete it from the Manage Instances table by clicking on Delete.
268
269Decommissioning
270===============
271Finally, we can decommission the template. On the dropdown menu, click "Manage Commissioned Tosca Template" and then pull it. Clicking the "Delete Tosca Service Template" button will fully decommission the template. You will receive a success message if the deletion was successful.
272
273.. image:: images/gui/ViewEditedCommonProperties.png
274
275This concluded the required smoke tests
276
277