SO CSIT Macroflow Documentation
[so.git] / docs / developer_info / CSIT_Macroflow_developer_info.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. Copyright 2022 Huawei Technologies Co., Ltd.
4
5 SO CSIT (Macroflow)
6 ========================
7
8 Ensure you have a healthy ONAP Deployment running. The following components will be required/used as part of this guide:
9
10 - SO
11 - SDC
12 - AAI
13 - DMAAP
14 - SDNC
15 - MultiCloud
16
17 What is Macroflow?
18 -----------------
19
20 The SO building blocks are a set of database-driven, configurable and generic process steps to be leveraged through several actions defined as 'Macro' flows. For each of the macro flows, there are a set of actions to be performed which are implemented as building blocks - which then implement generic logic to handle the orchestration of services and various type of resources orchestrated by ONAP, as well as their corresponding actions.
21
22 **Macroflow** method allows the user to build and send only one request to instantiate all objects : Service, VNFs, VFModules and Networks.
23
24 How to run CSIT Macroflow?
25 --------------------------
26
27 The follow steps are to be installed and run on an Ubuntu 18.04 (desktop) installation.
28 Later versions of Ubuntu and Java may work for the tests.
29
30 **Prerequisite:**
31 Install Java 11, Maven, docker, docker-compose
32
33 Following steps need to be followed to run the CSIT Macroflow:
34
35 First pull the CSIT repo from Gerrit, either with or without the hooks
36
37 … code-block::
38
39     git clone "https://gerrit.onap.org/r/integration/csit"
40 or
41
42 .. code-block::
43
44     git clone "https://gerrit.onap.org/r/integration/csit" && (cd "csit" && mkdir -p .git/hooks && curl -Lo `git rev-parse --git-dir`/hooks/commit-msg https://gerrit.onap.org/r/tools/hooks/commit-msg; chmod +x `git rev-parse --git-dir`/hooks/commit-msg)
45     
46 Once this is downloaded a few more installations are required.
47
48 Install pip (if required)
49
50 .. code-block::
51
52     sudo apt install python-pip
53
54 Install Robot Framework through pip
55
56 .. code-block::
57
58     pip install robotframework
59
60 Run Script
61
62 Once all of this is done, then the tests should be run by calling the run-csit.sh script and giving it the location of our test folder (csit/plans/so/macroflow).
63
64 From the csit projects root folder run the following command:
65
66 .. code-block::
67     
68     ./run-csit.sh plans/so/macroflow
69     
70 This should successfully run the CSIT Macroflow
71
72 The run-csit.sh will automatically set up a Robot environment for you, and execute the test plan defined in the plans/so/macroflow directory.
73
74 If you look at the contents of the plans/so/macroflow you will see the following:
75
76 **setup.sh:** the shell script that starts all the necessary docker containers required by this test plan, as well as passing the necessary environment variables to Robot.
77 **testplan.txt:** the text file listing, in order, the test suites that should be executed by Robot for this particular test plan. This allows you to refactor test suites to be reused by multiple test plans as necessary.
78 **teardown.sh:** the shell script that kills all the docker containers that were started by this test plan.
79 **docker-compose.yml:** This lists all the requrired docker.
80
81 How to run tests against specific SO versions
82 --------------------------------------------
83 It is possible to run the CSIT Macroflow suite against local docker images although it is not the default. Through this method specific versions of SO can be tested.
84
85 There are two changes required to make this work.
86
87 1. The env file, located at [containing folder]/csit/plans/so/macroflow/config/env, first needs to be changed. The DOCKER_ENVIROMENT needs to be changed from "remote" to "local". Also the TAG value might need to be changed. This Tag relates to the version of images being used. Make sure the cnf-adapter image version also need to be changed here.
88
89 2. Secondly all of the required docker images must be present on system.
90
91 This should be enough to run the CSIT Macroflow test suite locally.
92
93 CSIT Macroflow Tests High Level Scenarios
94 ---------------------------------------------------
95
96 **Step 1:**
97
98 Perform Configuration / Setup Steps prior to running tests
99
100 **Step 2:**
101
102 Onoboard the Macroflow Csar Package to complete the distribution from sdc-controller. This will be done by RoboFramework itlself. ASDC saves both heat and helm info into mso catalogdb.
103
104 **Step 3:**
105
106 Once the distribution done, next Instantiation will be executed for Macrolfow. RoboFramework is used to trigger the Instantiation flow. In this case, API handler receives the call and fetches required information from mso catalogdb.
107
108 **Step 4:**
109
110 Bpmn-Infra is called and fetches required information from mso catalogdb and executes all the selected building blocks which will call cnf-adapter or openstack adapter on the basis of usecase whether it is Macroflow Heat or Macroflow Helm.
111
112 **Step 5:**
113
114 Bpmn-Infra also fetches and updates Action infromation to the AAI-Simulator and SDNC-Simulator
115
116 **Step 6:**
117
118 Cnf-Adapter will then call to Multicloud (Multicloud-Simulator) and complete the Execution of Macroflow.
119
120 Follow the diagram in the image below to understand the step
121
122 .. image:: ../images/Architecture_flow.png
123
124 What are the tests doing?
125 -------------------------
126 There are three tests currently being run "Distribute Service Template", "Invoke Service Instantiation".
127
128 **Distribute Service Template**
129
130 As the name would suggest the aim for the "Distribute Service Template" test is to distribute a service template within the SDC controller pod. Once a http session of the SDC controller is created a post request can be made to it. This post requests sends binary data from "serviceBasicVfCnfnotification.json" for Macroflow heat and "serviceBasicVfCnfWithHelm.json" for Macroflow helm. These json files contain the information of resources and artifacts required to distribute a service. These json file gather information from the Csar package which resides in the plans/so/macroflow/config/distribution-test-zip directory. Once this post request is sent, the response status code is checked to see if it is 200. If the code is not equal to 200 then the test is thought to be a failure.
131
132 **Invoke Service Instantiation**
133
134 The aim of the "Invoke Service Instantiation" test is to invoke the service distributed to the sdc controller in the previous test. A http session of the api handler pod is created. This session is sent a post request containing "macroflow.json" for Macroflow heat and "MacroflowWithHelm.json" for Macroflow helm. Once these request are made the response is checked if it a valid code is returned.  A for loop is used to continually make calls to check the orchestration request for both the request, to check the status of service instantiation. Only once this orchestration returns either a fail or success, will we break out of the for loop. Once outside the for loop a final statement is used to check if service has been successfully instantiated.
135
136 Troubleshooting
137 ---------------
138 There are a number of simple issues relating from Python and its libraries
139
140 A correct installation of the robot framework to run our tests requiring python and the following pip libraries.
141
142 - robotframework
143 - robotframework-extendedselenium2library
144 - robotframework-httplibrary
145 - robotframework-onap
146 - robotframework-requests
147 - robotframework-selenium2library
148
149 To make sure each of the previous libraries is installed run the following command
150
151 .. code-block::
152
153     pip -list