summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiruna Paun <Miruna.Paun@enea.com>2019-06-10 12:33:41 +0200
committerMartin Borg <martin.borg@enea.com>2019-06-13 11:01:21 +0200
commita9508ba2cd124789b683fba112e395832b1bf3e3 (patch)
treea5804c3bdbefb8e8076c4d8eef227cf274cacc20
parente54c169596de8fd0dc3afaf979d967ee4fabe639 (diff)
downloadel_releases-nfv-access-a9508ba2cd124789b683fba112e395832b1bf3e3.tar.gz
Added the System Test Spec Doc.
Change-Id: I532d2f343e5c6a0ddb7bf06961b6f889e9108952
-rw-r--r--doc/Makefile2
-rw-r--r--doc/book-enea-nfv-access-system-test-specification/doc/book.xml27
-rw-r--r--doc/book-enea-nfv-access-system-test-specification/doc/configuration.xml32
-rw-r--r--doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_template.xml151
-rw-r--r--doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_updated.xml286
-rwxr-xr-xdoc/book-enea-nfv-access-system-test-specification/doc/eltf_params_updated_template_how_to_use.txt320
-rw-r--r--doc/book-enea-nfv-access-system-test-specification/doc/overview.xml125
-rw-r--r--doc/book-enea-nfv-access-system-test-specification/doc/sample_test_cases.xml855
-rwxr-xr-xdoc/book-enea-nfv-access-system-test-specification/swcomp.mk10
9 files changed, 1807 insertions, 1 deletions
diff --git a/doc/Makefile b/doc/Makefile
index 2cf6e28..b9e7bac 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -50,7 +50,7 @@ DOCBOOK_TO_BOOKDIR ?= yes
50DOCBOOK_CLEANTMP ?= yes 50DOCBOOK_CLEANTMP ?= yes
51 51
52#Components (books) in this subsystem. Now use all books found here 52#Components (books) in this subsystem. Now use all books found here
53COMPONENTS := book-enea-nfv-access-example-usecases book-enea-nfv-access-getting-started book-enea-nfv-access-open-source book-enea-nfv-access-release-info book-enea-nfv-access-vnf-onboarding-guide book-enea-nfv-access-reference-guide-intel book-enea-nfv-access-auto-fw-th-user-guide 53COMPONENTS := book-enea-nfv-access-example-usecases book-enea-nfv-access-getting-started book-enea-nfv-access-open-source book-enea-nfv-access-release-info book-enea-nfv-access-vnf-onboarding-guide book-enea-nfv-access-reference-guide-intel book-enea-nfv-access-auto-fw-th-user-guide book-enea-nfv-access-system-test-specification
54# COMPONENTS += 54# COMPONENTS +=
55#book-enea-linux-eclipse-open-source 55#book-enea-linux-eclipse-open-source
56#book-enea-nfv-access-dev-hardening-guide 56#book-enea-nfv-access-dev-hardening-guide
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/book.xml b/doc/book-enea-nfv-access-system-test-specification/doc/book.xml
new file mode 100644
index 0000000..d1b0cae
--- /dev/null
+++ b/doc/book-enea-nfv-access-system-test-specification/doc/book.xml
@@ -0,0 +1,27 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
4<!ENTITY % local.common.attrib "xml:base CDATA #IMPLIED">
5]>
6<book id="book_enea_nfv_access_system_test_specification">
7 <title><trademark class="registered">Enea</trademark> NFV Access System Test Specification</title>
8
9 <subtitle>Release Version <xi:include href="eltf_params_updated.xml"
10 xmlns:xi="http://www.w3.org/2001/XInclude"
11 xpointer="element(EneaLinux_REL_VER/1)" /></subtitle>
12
13 <!-- OLINKDBPATH_USED_BY_XMLMIND ../../s_docbuild/olinkdb -->
14
15 <xi:include href="../../s_docbuild/template/docsrc_common/bookinfo_userdoc.xml"
16 xmlns:xi="http://www.w3.org/2001/XInclude" />
17
18 <xi:include href="overview.xml"
19 xmlns:xi="http://www.w3.org/2001/XInclude" />
20
21 <xi:include href="configuration.xml"
22 xmlns:xi="http://www.w3.org/2001/XInclude" />
23
24 <xi:include href="sample_test_cases.xml"
25 xmlns:xi="http://www.w3.org/2001/XInclude" />
26
27</book>
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/configuration.xml b/doc/book-enea-nfv-access-system-test-specification/doc/configuration.xml
new file mode 100644
index 0000000..d1415c2
--- /dev/null
+++ b/doc/book-enea-nfv-access-system-test-specification/doc/configuration.xml
@@ -0,0 +1,32 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="config_sts">
3 <title>Configuration</title>
4
5 <section id="test_objects">
6 <title>Test Objects</title>
7
8 <para>The test objects for the Test Harness are considered to be the Enea
9 NFV Access and Enea uCPE Manager installations performed as indicated in
10 chapter 3 of the Enea NFV Access Automation Framework and Test Harness
11 User Guide.</para>
12 </section>
13
14 <section id="test_env">
15 <title>Test Environment</title>
16
17 <para>To setup the required Test Harness environment please refer to the
18 "Environment" chapter from the Enea NFV Access Automation Framework and
19 Test Harness User Guide.</para>
20 </section>
21
22 <section id="precon_exe_steps">
23 <title>Preconditions and Execution Steps</title>
24
25 <para>Please refer to the "Prerequisites" and "Installation and Initial
26 Setup" chapters from Enea NFV Access Automation Framework and Test Harness
27 User Guide.</para>
28
29 <para>For detailed execution steps of the sample test cases included with
30 the Test Harness please see chapter 3 in this document.</para>
31 </section>
32</chapter> \ No newline at end of file
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_template.xml b/doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_template.xml
new file mode 100644
index 0000000..eaa7ebd
--- /dev/null
+++ b/doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_template.xml
@@ -0,0 +1,151 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4<section id="eltf_created_params">
5 <title>File with Parameters in the Book Auto-updated by ELFT</title>
6
7 <note>
8 <para>See the <emphasis
9 role="bold">eltf_params_updated_template_howto_use.txt</emphasis> text
10 file for description of how to create the final <emphasis
11 role="bold">eltf_params_updated.xml</emphasis> from this template and for
12 all <emphasis role="bold">REQUIREMENTS</emphasis>. Use the command
13 "<emphasis role="bold">make eltf</emphasis>" to extract a full list of all
14 ELTF variables, which always begins with ELTF_ and don't only rely on the
15 howto text file list! The plan is that ELTF will auto-update this when
16 needed.</para>
17 </note>
18
19 <section id="host_prereq">
20 <title>Common Parameters</title>
21
22 <bridgehead>A programlisting, ID
23 "eltf-prereq-apt-get-commands-host"</bridgehead>
24
25 <para id="eltf-prereq-apt-get-commands-host"><programlisting>ELTF_PL_HOST_PREREQ</programlisting></para>
26
27 <bridgehead>A programlisting, ID
28 "eltf-getting-repo-install-command"</bridgehead>
29
30 <para id="eltf-getting-repo-install-command"><programlisting>ELTF_PL_GET_REPO</programlisting></para>
31
32 <bridgehead>Several phrase elements, various IDs. Ensure EL_REL_VER is
33 correct also compared to the "previous" REL VER in pardoc-distro.xml
34 "prev_baseline".</bridgehead>
35
36 <para id="EneaLinux_REL_VER"><phrase>ELTF_EL_REL_VER</phrase></para>
37
38 <para id="Yocto_VER"><phrase>ELTF_YOCTO_VER</phrase></para>
39
40 <para id="Yocto_NAME"><phrase>ELTF_YOCTO_NAME</phrase></para>
41
42 <para id="ULINK_YOCTO_PROJECT_DOWNLOAD"><ulink
43 url="ELTF_YOCTO_PROJ_DOWNLOAD_URL">ELTF_YOCTO_PROJ_DOWNLOAD_TXTURL</ulink></para>
44
45 <para id="ULINK_ENEA_LINUX_URL"><ulink
46 url="ELTF_EL_DOWNLOAD_URL">ELTF_EL_DOWNLOAD_TXTURL</ulink></para>
47
48 <bridgehead>A programlisting, ID "eltf-repo-cloning-enea-linux". Use
49 $MACHINE/default.xml as parameter, where MACHINE is one of the target
50 directory names in the manifest.</bridgehead>
51
52 <para id="eltf-repo-cloning-enea-linux"><programlisting>ELTF_PL_CLONE_W_REPO</programlisting></para>
53
54 <bridgehead>A table with ONE row, only the row with ID
55 "eltf-eclipse-version-row" is included in the book. MANUALLY BOTH in the
56 template.xml and in the updated.xml, set condition hidden on the
57 &lt;row&gt;, if eclipse is not in the release.</bridgehead>
58
59 <informaltable>
60 <tgroup cols="1">
61 <tbody>
62 <row id="eltf-eclipse-version-row">
63 <entry>Eclipse version ELTF_ECLIPSE_VERSION plus command line
64 development tools are included in this Enea NFV Access release.</entry>
65 </row>
66 </tbody>
67 </tgroup>
68 </informaltable>
69
70 <bridgehead>Below is one big section with title "Supported Targets with
71 Parameters". The entire section is included completely in the book via ID
72 "eltf-target-tables-section" and shall be LAST in the template. The
73 template contains ONE target subsection. COPY/APPEND it, if multiple
74 targets exist in the release and optionally add rows with additional
75 target parameters in each target subsection table.</bridgehead>
76 </section>
77
78 <section id="eltf-target-tables-section">
79 <title>Supported Targets with Parameters</title>
80
81 <para>The tables below describes the target(s) supported in this Enea
82 NFV Access release.</para>
83
84 <section id="eltf-target-table-ELTF_T_MANIFEST_DIR">
85 <title>MACHINE ELTF_T_MANIFEST_DIR - Information</title>
86
87 <para><informaltable>
88 <tgroup cols="2">
89 <colspec colwidth="6*" />
90
91 <colspec colwidth="9*" />
92
93 <tbody>
94 <row>
95 <entry>Target official name</entry>
96
97 <entry>ELTF_T_NAME</entry>
98 </row>
99
100 <row>
101 <entry>Architecture and Description</entry>
102
103 <entry>ELTF_T_ARC_DESC</entry>
104 </row>
105
106 <row>
107 <entry>Link to target datasheet</entry>
108
109 <entry>See <ulink
110 url="ELTF_T_DS_URL">ELTF_T_DS_TXTURL</ulink></entry>
111 </row>
112
113 <row>
114 <entry>Poky version</entry>
115
116 <entry>ELTF_T_POKY_VER</entry>
117 </row>
118
119 <row>
120 <entry>GCC version</entry>
121
122 <entry>ELTF_T_GCC_VER</entry>
123 </row>
124
125 <row>
126 <entry>Linux Kernel Version</entry>
127
128 <entry>ELTF_T_KERN_VER</entry>
129 </row>
130
131 <row>
132 <entry>Supported Drivers</entry>
133
134 <entry>ELTF_T_DRIVERS</entry>
135 </row>
136
137 <row>
138 <entry>Enea rpm folder for downloading RPM packages for this
139 target</entry>
140
141 <entry><ulink
142 url="ELTF_T_EL_RPM_URL">ELTF_T_EL_RPM_TXTURL</ulink></entry>
143 </row>
144 </tbody>
145 </tgroup>
146 </informaltable></para>
147 </section>
148
149 <!-- ELTFADD_MORE_TARGET_SECTIONS_BELOW_IF_NEEDED -->
150 </section>
151</section> \ No newline at end of file
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_updated.xml b/doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_updated.xml
new file mode 100644
index 0000000..feabc9f
--- /dev/null
+++ b/doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_updated.xml
@@ -0,0 +1,286 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4<section id="eltf_created_params">
5 <title>File with Parameters in the Book Auto-updated by ELFT</title>
6
7 <note>
8 <para>See the <emphasis
9 role="bold">eltf_params_updated_template_howto_use.txt</emphasis> text
10 file for description of how to create the final <emphasis
11 role="bold">eltf_params_updated.xml</emphasis> from this template and for
12 all <emphasis role="bold">REQUIREMENTS</emphasis>. Use the command
13 "<emphasis role="bold">make eltf</emphasis>" to extract a full list of all
14 ELTF variables, which always begins with ELTF_ and don't only rely on the
15 howto text file list! The plan is that ELTF will auto-update this when
16 needed.</para>
17 </note>
18
19 <section id="host_prereq">
20 <title>Common Parameters</title>
21
22 <bridgehead>A programlisting, ID
23 "eltf-prereq-apt-get-commands-host"</bridgehead>
24
25 <para id="eltf-prereq-apt-get-commands-host"><programlisting># Host Ubuntu 16.04 LTS 64bit
26sudo apt-get -y update
27sudo apt-get -y install sed wget subversion git-core coreutils unzip texi2html \
28 texinfo libsdl1.2-dev docbook-utils fop gawk python-pysqlite2 diffstat \
29 make gcc build-essential xsltproc g++ desktop-file-utils chrpath \
30 libgl1-mesa-dev libglu1-mesa-dev autoconf automake groff libtool xterm \
31 libxml-parser-perl</programlisting></para>
32
33 <bridgehead>A programlisting, ID
34 "eltf-getting-repo-install-command"</bridgehead>
35
36 <para id="eltf-getting-repo-install-command"><programlisting>mkdir -p ~/bin
37curl https://storage.googleapis.com/git-repo-downloads/repo &gt; ~/bin/repo
38chmod a+x ~/bin/repo
39export PATH=~/bin:$PATH</programlisting></para>
40
41 <bridgehead>Several phrase elements, various IDs. Ensure EL_REL_VER is
42 correct also compared to the "previous" REL VER in pardoc-distro.xml
43 "prev_baseline".</bridgehead>
44
45 <para id="EneaLinux_REL_VER"><phrase>2.2.1</phrase></para>
46
47 <para id="Yocto_VER"><phrase>2.4</phrase></para>
48
49 <para id="Yocto_NAME"><phrase>rocko</phrase></para>
50
51 <para id="ULINK_YOCTO_PROJECT_DOWNLOAD"><ulink
52 url="http://www.yoctoproject.org/downloads">http://www.yoctoproject.org/downloads</ulink></para>
53
54 <para id="ULINK_ENEA_LINUX_URL"><ulink
55 url="https://linux.enea.com/6">https://linux.enea.com/6</ulink></para>
56
57 <bridgehead>A programlisting, ID "eltf-repo-cloning-enea-linux". Use
58 $MACHINE/default.xml as parameter, where MACHINE is one of the target
59 directory names in the manifest.</bridgehead>
60
61 <para id="eltf-repo-cloning-enea-linux"><programlisting>mkdir enea-linux
62cd enea-linux
63repo init -u git@git.enea.com:linux/manifests/el_manifests-virtualization.git \
64 -b refs/tags/EL6 -m $MACHINE/default.xml
65repo sync</programlisting></para>
66
67 <bridgehead>A table with ONE row, only the row with ID
68 "eltf-eclipse-version-row" is included in the book. MANUALLY in book, set
69 condition hidden if eclipse is not in the release. Do this both in
70 template.xml and updated.xml.</bridgehead>
71
72 <informaltable>
73 <tgroup cols="1">
74 <tbody>
75 <row condition="hidden" id="eltf-eclipse-version-row">
76 <entry>Eclipse version 4.3 (Mars) plus command line development
77 tools are included in this Enea NFV Access release.</entry>
78 </row>
79 </tbody>
80 </tgroup>
81 </informaltable>
82
83 <bridgehead>Below is one big section with title "Supported Targets with
84 Parameters". The entire section is included completely in the book via ID
85 "eltf-target-tables-section" and shall be LAST in the template. The
86 template contains ONE target subsection. COPY/APPEND it, if multiple
87 targets exist in the release and optionally add rows with additional
88 target parameters in each target subsection table.</bridgehead>
89 </section>
90
91 <section id="eltf-target-tables-section">
92 <title>Supported Reference Boards with Parameters</title>
93
94 <para>The table(s) below describes the target(s) supported in this Enea
95 NFV Access release.</para>
96
97 <table>
98 <title>MACHINE Information Intel Xeon D</title>
99
100 <tgroup cols="2">
101 <colspec align="center" />
102
103 <thead>
104 <row>
105 <entry align="center">Component</entry>
106
107 <entry align="center">Description</entry>
108 </row>
109 </thead>
110
111 <tbody>
112 <row>
113 <entry align="left">Target official name</entry>
114
115 <entry>Intel Xeon D</entry>
116 </row>
117
118 <row>
119 <entry align="left">Architecture and Description</entry>
120
121 <entry>x86-64</entry>
122 </row>
123
124 <row>
125 <entry align="left">Link to target datasheet</entry>
126
127 <entry><ulink
128 url="https://www.intel.com/content/www/us/en/processors/xeon/xeon-d-1500-datasheet-vol-1.html">Intel's
129 datasheet</ulink></entry>
130 </row>
131
132 <row>
133 <entry align="left">Poky version</entry>
134
135 <entry>Git-commit-id:
136 7e7ee662f5dea4d090293045f7498093322802cc</entry>
137 </row>
138
139 <row>
140 <entry align="left">GCC version</entry>
141
142 <entry>7.3</entry>
143 </row>
144
145 <row>
146 <entry align="left">Linux Kernel Version</entry>
147
148 <entry>4.14</entry>
149 </row>
150
151 <row condition="hidden">
152 <entry align="left">Supported Drivers</entry>
153
154 <entry>Ethernet, RTC, UART</entry>
155 </row>
156 </tbody>
157 </tgroup>
158 </table>
159
160 <table>
161 <title>MACHINE Information Intel Atom C3000</title>
162
163 <tgroup cols="2">
164 <colspec align="center" />
165
166 <thead>
167 <row>
168 <entry align="center">Component</entry>
169
170 <entry align="center">Description</entry>
171 </row>
172 </thead>
173
174 <tbody>
175 <row>
176 <entry align="left">Target official name</entry>
177
178 <entry>Intel Atom C3000</entry>
179 </row>
180
181 <row>
182 <entry align="left">Architecture and Description</entry>
183
184 <entry>x86-64</entry>
185 </row>
186
187 <row>
188 <entry align="left">Link to target datasheet</entry>
189
190 <entry><ulink
191 url="https://www.intel.com/content/www/us/en/products/docs/processors/atom/c-series/c3000-family-datasheet.html">Intel's
192 datasheet</ulink></entry>
193 </row>
194
195 <row>
196 <entry align="left">Poky version</entry>
197
198 <entry>Git-commit-id:
199 7e7ee662f5dea4d090293045f7498093322802cc</entry>
200 </row>
201
202 <row>
203 <entry align="left">GCC version</entry>
204
205 <entry>7.3</entry>
206 </row>
207
208 <row>
209 <entry align="left">Linux Kernel Version</entry>
210
211 <entry>4.14</entry>
212 </row>
213
214 <row condition="hidden">
215 <entry align="left">Supported Drivers</entry>
216
217 <entry>Ethernet, RTC, UART</entry>
218 </row>
219 </tbody>
220 </tgroup>
221 </table>
222
223 <table condition="arm">
224 <title>MACHINE Information</title>
225
226 <tgroup cols="2">
227 <colspec align="center" />
228
229 <thead>
230 <row>
231 <entry align="center">Component</entry>
232
233 <entry align="center">Description</entry>
234 </row>
235 </thead>
236
237 <tbody>
238 <row>
239 <entry align="left">Target official name</entry>
240
241 <entry>OCTEON TXâ„¢ cn8304</entry>
242 </row>
243
244 <row>
245 <entry align="left">Architecture and Description</entry>
246
247 <entry>arm64</entry>
248 </row>
249
250 <row>
251 <entry align="left">Link to target datasheet</entry>
252
253 <entry><ulink
254 url="http://www.cavium.com/OCTEON-TX-CN82XX-83XX.html">OCTEON
255 TXâ„¢ cn8304 datasheet</ulink></entry>
256 </row>
257
258 <row>
259 <entry align="left">Poky version</entry>
260
261 <entry>Git-commit-id:
262 f01b909a266498853e6b3f10e6b39f2d95148129</entry>
263 </row>
264
265 <row>
266 <entry align="left">GCC version</entry>
267
268 <entry>5.3<remark>FIXME</remark></entry>
269 </row>
270
271 <row>
272 <entry align="left">Linux Kernel Version</entry>
273
274 <entry>3.12<remark>FIXME</remark></entry>
275 </row>
276
277 <row condition="hidden">
278 <entry align="left">Supported Drivers</entry>
279
280 <entry>Ethernet, RTC, UART</entry>
281 </row>
282 </tbody>
283 </tgroup>
284 </table>
285 </section>
286</section> \ No newline at end of file
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_updated_template_how_to_use.txt b/doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_updated_template_how_to_use.txt
new file mode 100755
index 0000000..62e5d02
--- /dev/null
+++ b/doc/book-enea-nfv-access-system-test-specification/doc/eltf_params_updated_template_how_to_use.txt
@@ -0,0 +1,320 @@
1eltf_params_template_updated_howto_use.txt
2
3This is a way to collect all parameters for an Enea NFV Access release
4in one parameter file, easy to automatically update by ELTF regularly.
5
6NOTE: Both the release info AND the open source books use parameters from
7 here, but the XML file is inside the release info book directory.
8
9NOTE: The manifest_conf.mk, or overridden by the environment variable
10 MANIFESTHASH, contains the full tag (or hashvalue) for downloading
11 the manifest when the books are built. The list of target
12 directories are fetched from the manifest into the book.
13 The eltf_params_updates.xml can all the time contain
14 the final next complete tag e.g. refs/tags/EL6 or similar
15 in the ELTF_PL_CLONE_W_REPO parameter command lines.
16
17The ordinary book XML files use xi:include statements to include elements
18from this parameter file. The book XML files can thus be manually edited.
19Before editing, you must run "make init".
20Any other text in the template or updated.xml file, outside the parts that
21are included in the book, are not used but still all must be correct
22DocBook XML files.
23
24ELTF work:
25 template => ELTF replaces ALL ELTF_xxx variables => updated XML file
26 => push to git only if changed
27
28
29eltf_params_template.xml (in git)
30 File used by ELTF to autocreate/update the real parameter
31 file eltf_params_updated.xml.
32
33eltf_params_updated.xml (in git)
34 Real parameter file where ELTF has replaced all ELTF_xx variables with
35 strings, in several cases with multiline strings.
36 No spaces or linefeed allowed in beginning or end of the variable values!
37
38
39xi:include: Each parameter is xi:include'ed in various book files, using
40 the IDs existing in the parameter files.
41 In most cases the 1:st element inside an element with an ID is included
42 using a format like eltf-prereq-apt-get-commands-host/1.
43 In very few cases the element with the ID is included in the book, one
44 example is the target section which has an ID, but which contains
45 multiple subsections, one per target.
46 All IDs in a book must be unique.
47
48DocBook XML: All XML files must be correct DocBook XML files.
49
50Do NOT edit/save the real *updated.xml file with XMLmind to avoid changes
51 not done by ELTF. But it is OK to open the real file in XMLmind to
52 check that the format is correct.
53
54ELTF should autocreate a temporary "real" file but only replace
55 and push the eltf_params_updated.xml if it is changed.
56
57
58make eltf
59 This lists all ELTF_xxx variables and some rules how to treat them
60
61DocBook Format: All elements - rules:
62 Several strict generic XML rules apply for all strings:
63 1. No TABs allowed or any other control chr than "linefeed"
64 2. Only 7-bit ASCII
65 3. Any < > & must be converted to &lt; &gt; and &amp;
66 Similar for any other non-7-bit-ASCII but avoid those!
67 4. No leading spaces or linefeeds when replacing the ELTF_* variable
68 5. No trailing spaces or linefeeds when replacing the ELTF_* variable
69 6. Note: Keep existing spaces before/efter ELTF_* in a few cases.
70
71DocBook Format: <programlisting> - rules: ELTF*PL* variables
72 Several strict rules apply for the multiline string in programlisting
73 in addition to the general XML rules above:
74 7. Max line length < 80 char
75 8. Use backslash (\) to break longer lines
76 9. Use spaces (e.g. 4) to indent continuation lines in programlistings
77 10. No trailing spaces on any line
78 11. No spaces or linefeed immediately after leading <programlisting>
79 12. No spaces or linefeed before trailing </programlisting>
80
81DocBook Format: <ulink> - rules: ELTF_*URL* variables
82 13. ELTF_*URL and corresponding ELTF_*TXTURL shall be identical strings
83 14. Only if the URL is extremely long, the TXTURL can be a separate string
84
85Each target has one section with target parameters:
86 <section id="eltf-target-table-ELTF_T_MANIFEST_DIR">
87 <title>MACHINE ELTF_T_MANIFEST_DIR - Information</title>
88 ..... with many ELTF_ variables ....
89 </section>
90
91 15. If there is only one target. ELTF just replaces ELTF parameters
92
93 16. It there are multiple targets. ELTF copies the section and appends the
94 section the required number of times.
95 Each section ID will become unique: eltf-target-table-ELTF_T_MANIFEST_DIR
96 Each section title will become unique
97
98Tables with target parameters in each target section:
99 17. It is possible for ELTF to append more rows with one parameter each
100 to these tables, because the entire tables are included in the book
101
102Special - NOT YET READY DEFINED how to handle the optionally included
103 Eclipse and its version, but this is a first suggestion:
104 18. Just now ELTF can define ELFT_ECLIPSE_VERSION as a full string
105 with both version number and name,
106 19. MANUALLY if Eclipse is NOT included in the release,
107 the release manager should manually set condition="hidden" on
108 the entire section in the book XML about Eclipse
109
110
111
112BELOW WE TRY TO EXPLAIN EACH ELTF_* variable, but always check with make eltf
113if there are more new variables, missing in this description file.
114
115_____________________________________________________________________________
116ELTF_PL_HOST_PREREQ Multiline list of host prerequisites, e.g. commands
117 like sudo apt-get install xxxx or similar.
118 First line = comment with the complete host name!
119 It is possible to include multiple hosts by just
120 adding an empty line, comment with host name, etc.
121 xi:include eltf-prereq-apt-get-commands-host/1
122 This is a <programlisting>...</programlisting>
123 Example:
124# Host Ubuntu 14.04.5 LTS 64bit
125sudo apt-get update
126sudo apt-get install sed wget subversion git-core coreutils unzip texi2html \
127 texinfo libsdl1.2-dev docbook-utils fop gawk python-pysqlite2 diffstat \
128 make gcc build-essential xsltproc g++ desktop-file-utils chrpath \
129 libgl1-mesa-dev libglu1-mesa-dev autoconf automake groff libtool xterm \
130 libxml-parser-perl
131
132_____________________________________________________________________________
133ELTF_PL_GET_REPO Multiline commands to download the repo tool
134 xi:include eltf-getting-repo-install-command/1
135 This is a <programlisting>...</programlisting>
136 Example:
137mkdir -p ~/bin
138curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
139chmod a+x ~/bin/repo
140export PATH=~/bin:$PATH
141
142_____________________________________________________________________________
143ELTF_EL_REL_VER General parameter string: The version of this Enea
144 NFV Access release. Major version and optional .Minor
145 Typically created from MAJOR and MINOR in enea.conf
146 MINOR in enea.conf is empty or contains a dot+minor
147 xi_include EneaLinux_REL_VER/1
148 This is a <phrase>X.x</phrase> used in many places.
149 Examples:
1506
151 or
1526.1
153
154_____________________________________________________________________________
155ELTF_YOCTO_VER General parameter string: Yocto version, created
156 from DISTRO in poky.ent
157 xi:include Yocto_VER/1
158 This is a <phrase>X.x</phrase> used in many places.
159 Example:
1602.1
161
162_____________________________________________________________________________
163ELTF_YOCTO_NAME General parameter string: Yocto name (branch), created
164 from DISTRO_NAME_NO_CAP in poky.ent
165 xi:include Yocto_NAME/1
166 This is a <phrase>X.x</phrase> used in many places.
167 Example:
168krogoth
169
170_____________________________________________________________________________
171ELTF_YOCTO_PROJ_DOWNLOAD_TXTURL General parameters. These two are IDENTICAL
172ELTF_YOCTO_PROJ_DOWNLOAD_URL strings with correct Yocto version string
173 at the end, typically without "dot".
174 xi:include ULINK_YOCTO_PROJECT_DOWNLOAD/1
175 This is an <ulink url="...">...</ulink>
176 Example:
177http://www.yoctoproject.org/downloads/core/krogoth/21
178
179_____________________________________________________________________________
180ELTF_EL_DOWNLOAD_TXTURL General parameters. These two are IDENTICAL strings
181ELTF_EL_DOWNLOAD_URL and shall be the http:/..... address where
182 Enea NFV Access can be downloaded
183 Often containing same version as in ELTF_EL_REL_VER
184 xi:include ULINK_ENEA_LINUX_URL/1
185 This is an <ulink url="...">...</ulink>
186 Example:
187http://linux.enea.com/6
188
189_____________________________________________________________________________
190ELTF_PL_CLONE_W_REPO Multiline commands to run repo to clone everything.
191 Use the variable $MACHINE/default.xml (the text in
192 the book will list the avaiable values of MACHINE,
193 taken from the manifest repository)
194 xi:include eltf-repo-cloning-enea-linux/1
195 This is a <programlisting>...</programlisting>
196 Example:
197mkdir enea-linux
198cd enea-linux
199repo init -u git@git.enea.com:linux/manifests/el_manifests-virtualization.git \
200 -b refs/tags/EL6 -m $MACHINE/default.xml
201repo sync
202
203_____________________________________________________________________________
204ELTF_ECLIPSE_VERSION Optional general parameter string.
205 NOT YET READY DEFINED
206 Just now a release manage must manually set
207 condition="hidden" on the Eclipse section,
208 if Eclipse is not included in the release.
209 ELTF just replaces ELTF_ECLIPSE_VERSION with a full
210 string with "X.Y (name)"
211 It includes the ID and can only be ONCE in the book.
212 xi:include eltf-eclipse-version-row
213 Example.
2144.5 (Mars)
215
216
217_____________________________________________________________________________
218ELTF_T_* All these are in each target (MACHINE) and ELTF
219 must separately replace them with strings for
220 each target
221 NOTE: All (except the MANIFEST_DIR) are in rows
222 in a table and ELTF can select to append
223 more parameters by adding more rows
224
225_____________________________________________________________________________
226ELTF_T_MANIFEST_DIR This happens to be in two places. Must be exactly
227ELTF_T_MANIFEST_DIR the directory name in the manifest, e.g. same
228 as the MACHINE names in $MACHINE/default.xml.
229 In book: a) Part of section ID
230 b) Part of section title
231 Examples:
232p2041rgb
233 or
234ls1021aiot
235 or
236qemuarm
237
238_____________________________________________________________________________
239ELTF_T_NAME Target specific: "Target Official Name"
240 NOT same as the target directory name in most cases.
241 In book: An <entry> element in a row
242 Examples:
243P2041RGB
244 or
245LS1021a-IoT
246 or
247qemuarm
248
249_____________________________________________________________________________
250ELTF_T_ARC_DESC Target specific: "Architecture and Description"
251 It can be a short identification string or
252 it can be a longer descriptive sentence.
253 In book: An <entry> element in a row
254 Examples:
255Power, e500mc
256 or
257ARM Cortex-A7
258
259_____________________________________________________________________________
260ELTF_T_DS_TXTURL Target specific: "Link to target datasheet. These
261ELTF_T_DS_URL two usually are IDENTICAL strings with correct
262 hyperlink to the target's official datasheet.
263 In book: an <ulink url="...">...</ulink>
264 Only if the link is VERY LONG, the text part shall
265 instead be a descriptive string (see 2:nd example).
266 NOTE: Also here no spaces or line-feeds!
267 Examples:
268url="http://wiki.qemu.org">http://wiki.qemu.org
269or
270url="http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/qoriq-arm-processors/qoriq-ls1021a-iot-gateway-reference-design:LS1021A-IoT">link to NXP's datasheet
271
272_____________________________________________________________________________
273ELTF_T_POKY_VER Target specific: "Poky version" created either
274 from POKYVERSION in poky.ent
275 or using a hashvalue with a leading string, in
276 which case it may be different per target.
277 In book: An <entry> in a row
278 Examples:
27915.0.0
280or
281Git commit id: 75ca53211488a3e268037a44ee2a7ac5c7181bd2
282
283_____________________________________________________________________________
284ELTF_T_GCC_VER Target specific: "GCC Version". Should be in poky
285 but not easy to find among various parameters.
286 ELTF would extract it from build logs building SDK
287 and it is possibly different per target.
288 In book: An <entry> in a row
289 Example:
2905.3
291
292_____________________________________________________________________________
293ELTF_T_KERN_VER Target specific: "Linux Kernel Version". Often
294 different per target.
295 In book: An <entry> in a row
296 Example:
2973.12
298
299_____________________________________________________________________________
300ELTF_T_DRIVERS Target specific: "Supported Drivers". This is a
301 comma-separated list of driver names.
302 ELTF should create the list in same order for each
303 target, e.g. alphabetic migth be OK.
304 In book: An <entry> in a row
305 Example:
306Ethernet, I2C, SPI, PCI, USB, SD/SDHC/SDXC
307
308
309_____________________________________________________________________________
310ELTF_T_EL_RPM_TXTURL Target specific: "Enea rpm folder for downloading
311ELTF_T_EL_RPM_URL RPM packages for this target". These two are
312 INDENTICAL strings with hyperlink to the web site
313 at Enea where the customer can download RPMs
314 Note: Often the ELFT_EL_REL_VER value and
315 the ELTF_T_MANIFEST_DIR are used in the link.
316 In book: an <ulink url="...">...</ulink>
317 Example:
318url="https://linux.enea.com/6/ls1021aiot/rpm">https://linux.enea.com/6/ls1021aiot/rpm
319
320_____________________________________________________________________________
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/overview.xml b/doc/book-enea-nfv-access-system-test-specification/doc/overview.xml
new file mode 100644
index 0000000..7df9acc
--- /dev/null
+++ b/doc/book-enea-nfv-access-system-test-specification/doc/overview.xml
@@ -0,0 +1,125 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="overview_sts">
3 <title>Overview</title>
4
5 <para>This document specifies a Sample Test Suite for System Testing of the
6 Enea NFV Access Solution. It also provides information regarding the
7 necessary steps to run these tests.</para>
8
9 <section id="scope">
10 <title>Scope</title>
11
12 <para>The scope of this document is to describe the Test Harness (TH)
13 sample test cases for System Testing of the Enea NFV Access Solution.
14 Furthermore, this document shall also describe the necessary environment
15 setup to run these tests successfully.</para>
16 </section>
17
18 <section id="def_acro_sts">
19 <title>Definitions and Acronyms</title>
20
21 <table>
22 <title>Definitions</title>
23
24 <tgroup cols="2">
25 <colspec align="center" />
26
27 <thead>
28 <row>
29 <entry align="center">Component</entry>
30
31 <entry align="center">Description</entry>
32 </row>
33 </thead>
34
35 <tbody>
36 <row>
37 <entry>Enea NFV Access Solution</entry>
38
39 <entry>Enea NFV Access (with ODM) Runtime Platform and Enea uCPE
40 Manager.</entry>
41 </row>
42
43 <row>
44 <entry>Enea Portal</entry>
45
46 <entry><ulink
47 url="https://portal.enea.com">https://portal.enea.com</ulink></entry>
48 </row>
49 </tbody>
50 </tgroup>
51 </table>
52
53 <table>
54 <title>Acronyms</title>
55
56 <tgroup cols="2">
57 <colspec align="center" />
58
59 <thead>
60 <row>
61 <entry align="center">Component</entry>
62
63 <entry align="center">Description</entry>
64 </row>
65 </thead>
66
67 <tbody>
68 <row>
69 <entry>AF</entry>
70
71 <entry>Automation Framework for Enea NFV Access.</entry>
72 </row>
73
74 <row>
75 <entry>JSON</entry>
76
77 <entry>JavaScript Object Notation.</entry>
78 </row>
79
80 <row>
81 <entry>NIC</entry>
82
83 <entry>Network Interface Card.</entry>
84 </row>
85
86 <row>
87 <entry>NFV</entry>
88
89 <entry>Network Functions Virtualization.</entry>
90 </row>
91
92 <row>
93 <entry>ODM</entry>
94
95 <entry>Enea Element On Device Management.</entry>
96 </row>
97
98 <row>
99 <entry>OVS</entry>
100
101 <entry>Open vSwitch.</entry>
102 </row>
103
104 <row>
105 <entry>TH</entry>
106
107 <entry>Test Harness for Enea NFV Access.</entry>
108 </row>
109
110 <row>
111 <entry>uCPE Manager</entry>
112
113 <entry>Enea Universal Customer Premises Equipment Manager.</entry>
114 </row>
115
116 <row>
117 <entry>VNF</entry>
118
119 <entry>Virtualized Network Function.</entry>
120 </row>
121 </tbody>
122 </tgroup>
123 </table>
124 </section>
125</chapter> \ No newline at end of file
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/sample_test_cases.xml b/doc/book-enea-nfv-access-system-test-specification/doc/sample_test_cases.xml
new file mode 100644
index 0000000..50907ca
--- /dev/null
+++ b/doc/book-enea-nfv-access-system-test-specification/doc/sample_test_cases.xml
@@ -0,0 +1,855 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="sample_testcases">
3 <title>Sample Test Cases</title>
4
5 <para>The test cases specified in this chapter are implemented as a Sample
6 Test Suite included in the TH.</para>
7
8 <section id="vnf_dev_net_smoke">
9 <title>VNF, Device and Network Smoke Test Cases</title>
10
11 <para>The following is an automated test suite that acts as basic smoke
12 tests for the Enea NFV Access Solution and as a sanity-check test suite
13 for the AF and TH.</para>
14
15 <section id="onb_vnf_image">
16 <title>VNF - Onboard_VNF_Image</title>
17
18 <para><emphasis role="bold">Description: </emphasis>Onboarding a VNF
19 Image into the uCPE Manager. For details please refer to:</para>
20
21 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/onboardVNFImage.yml</filename></para>
22
23 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/onboardVNFRaw.py</filename></para>
24
25 <para><emphasis role="bold">Preconditions:</emphasis></para>
26
27 <itemizedlist>
28 <listitem>
29 <para>Add the VNF Image in the <literal>vnf_image</literal> folder
30 in QCOW2 format: <programlisting>&lt;AF-TH-install-dir&gt;/vnf_image/&lt;VNF-Image-name&gt;.qcow2</programlisting></para>
31 </listitem>
32
33 <listitem>
34 <para>A VNF Image JSON configuration file is created:
35 <filename>&lt;AF-TH-install-dir&gt;/vnf_config/&lt;VNF-Descriptor-name&gt;/&lt;VNF-Descriptor-name&gt;.json</filename>.</para>
36
37 <para><emphasis role="bold">Example:</emphasis><programlisting>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage/fortigateImage.json</programlisting></para>
38 </listitem>
39 </itemizedlist>
40
41 <para><emphasis role="bold">Action:</emphasis> Run the
42 <filename>onboardVNFImage.yml</filename> Ansible Playbook with the
43 <literal>&lt;VNF-Image-name&gt;</literal> and the
44 <literal>&lt;VNF-Descriptor-name&gt;</literal> as extra-vars:
45 <programlisting>ansible-playbook playbooks/onboardVNFImage.yml -e "vnfb=&lt;VNF-Image-name&gt; \
46vnfd=&lt;VNF-Descriptor-name&gt;"</programlisting></para>
47
48 <para><emphasis role="bold">Result:</emphasis> Output of the test case
49 run using the Test Harness: <programlisting># Onboard VNF Image task result
50&lt;VNF-Descriptor-name&gt; successfully onboarded!</programlisting><emphasis
51 role="bold">Note:</emphasis> The test will not fail if the VNF Image is
52 already onboarded. The output will instead contain: <programlisting># debug &lt;VNF-Descriptor-name&gt; already onboarded!</programlisting></para>
53 </section>
54
55 <section id="onb_vnf_bundle">
56 <title>VNF - Onboard_VNF_Bundle<remark>since we're removing mention of
57 bundles is this section still relevant?</remark></title>
58
59 <para><emphasis role="bold">Description:</emphasis> Onboarding a VNF
60 Bundle into the uCPE Manager. For details please refer to:</para>
61
62 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/onboardVNFBundle.yml</filename></para>
63
64 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/onboardVNF.py</filename></para>
65
66 <para><emphasis role="bold">Precondition:</emphasis> Add the VNF Bundle
67 in the <literal>vnf_image</literal> folder in the zip format:
68 <filename>&lt;AF-TH-install-dir&gt;/vnf_image/&lt;VNF-Bundle-name&gt;.zip</filename>.</para>
69
70 <para><emphasis role="bold">Action:</emphasis> Run the
71 <filename>onboardVNFBundle.yml</filename> Ansible Playbook with the
72 <literal>&lt;VNF-Bundle-name&gt;</literal> as extra-vars:
73 <programlisting>ansible-playbook playbooks/onboardVNFBundle.yml -e "vnfb=&lt;VNF-Bundle-name&gt;"</programlisting></para>
74
75 <para><emphasis role="bold">Result:</emphasis> Output of the test case
76 run using the Test Harness: <programlisting># Onboard VNF Bundle task result
77&lt;VNF-Bundle-name&gt; successfully onboarded!</programlisting><emphasis
78 role="bold">Note:</emphasis> The test will not fail if the VNF Bundle is
79 already onboarded. The output will instead contain: <programlisting># debug &lt;VNF-Bundle-name&gt; already onboarded!</programlisting></para>
80 </section>
81
82 <section id="offb_vnf">
83 <title>VNF - Offboard_VNF</title>
84
85 <para><emphasis role="bold">Description:</emphasis> Removing a VNF
86 Descriptor from the uCPE Manager. For details please refer to:</para>
87
88 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/offboardVNF.yml</filename></para>
89
90 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/offboardVNF.py</filename>.</para>
91
92 <para><emphasis role="bold">Precondition:</emphasis> The VNF has been
93 previously onboarded in the uCPE Manager instance.</para>
94
95 <para><emphasis role="bold">Action:</emphasis> Run the
96 <filename>offboardVNF.yml</filename> Ansible Playbook with the
97 <literal>&lt;VNF-Descriptor-name&gt;</literal> as extra-vars:
98 <programlisting>ansible-playbook playbooks/offboardVNF.yml -e "vnfd=&lt;VNF-Descriptor-name&gt;"</programlisting></para>
99
100 <para><emphasis role="bold">Result:</emphasis> Output of the test case
101 run using the Test Harness: <programlisting># Remove Descriptor task result
102&lt;VNF-Descriptor-name&gt; was removed!</programlisting><emphasis
103 role="bold">Note:</emphasis> The test will not fail if the VNF
104 Descriptor does not exist. The output will instead contain:
105 <programlisting># debug No Descriptor with name &lt;VNF-Descriptor-name&gt;!</programlisting></para>
106 </section>
107
108 <section id="add_device">
109 <title>Device - Add_Device</title>
110
111 <para><emphasis role="bold">Description:</emphasis> Adding a uCPE device
112 to the uCPE Manager. For details please refer to:</para>
113
114 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/addDevice.yml</filename></para>
115
116 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/addDevice.py</filename>.</para>
117
118 <para><emphasis role="bold">Precondition:</emphasis> A device JSON
119 configuration file must be created:
120 <filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</filename>.</para>
121
122 <para><emphasis role="bold">Example:</emphasis> <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/intelc3850-2/intelc3850-2.json</programlisting></para>
123
124 <para><emphasis role="bold">Action:</emphasis> Run the
125 <filename>addDevice.yml</filename> Ansible playbook with the
126 <filename>&lt;Device-name&gt;</filename> as extra-vars: <programlisting>ansible-playbook playbooks/addDevice.yml -e "device=&lt;Device-name&gt;"</programlisting></para>
127
128 <para><emphasis role="bold">Result:</emphasis> Output of the test case
129 run using the Test Harness: <programlisting># Add Device task result
130&lt;Device-name&gt; device was added!</programlisting><emphasis
131 role="bold">Note:</emphasis> The test will not fail if the device
132 already exists. The output will instead contain: <programlisting># debug
133&lt;Device-name&gt; device already exists!</programlisting></para>
134 </section>
135
136 <section id="remv_dev">
137 <title>Device - Remove_Device</title>
138
139 <para><emphasis role="bold">Description:</emphasis> Removing a uCPE
140 device from the uCPE Manager. For details please refer to:</para>
141
142 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/removeDevice.yml</filename></para>
143
144 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/removeDevice.py</filename>.</para>
145
146 <para><emphasis role="bold">Preconditions:</emphasis></para>
147
148 <itemizedlist>
149 <listitem>
150 <para>The device has to be previously added to the uCPE Manager
151 instance.</para>
152 </listitem>
153
154 <listitem>
155 <para>The device JSON configuration file must exist:
156 <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</programlisting></para>
157 </listitem>
158 </itemizedlist>
159
160 <para><emphasis role="bold">Action:</emphasis> Run the
161 <filename>removeDevice.yml</filename> Ansible Playbook with the
162 <literal>&lt;Device-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/removeDevice.yml -e "device=&lt;Device-name&gt;"</programlisting></para>
163
164 <para><emphasis role="bold">Result:</emphasis> Output of the test case
165 run using the Test Harness:<programlisting># Remove Device task result
166&lt;Device-name&gt; device was removed!</programlisting> <emphasis
167 role="bold">Note:</emphasis> The test will not fail if the device does
168 not exist. The output will contain: <programlisting># debug
169&lt;Device-name&gt; device was not found!</programlisting></para>
170 </section>
171
172 <section id="bind_nic">
173 <title>Network - Bind_NIC</title>
174
175 <para><emphasis role="bold">Description:</emphasis> Binding a physical
176 network interface (NIC) to a device. For details please refer to:</para>
177
178 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/bindNIC.yml</filename></para>
179
180 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/bindNetworkInterface.py</filename>.</para>
181
182 <para><emphasis role="bold">Preconditions:</emphasis></para>
183
184 <itemizedlist>
185 <listitem>
186 <para>A device must have been previously added to the uCPE Manager
187 instance.</para>
188 </listitem>
189
190 <listitem>
191 <para>A NIC JSON configuration file must exist:
192 <filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;NIC&gt;.json</filename>.</para>
193
194 <para><emphasis role="bold">Example:</emphasis> <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/intelc3850-2/wan_nic.json
195&lt;AF-TH-install-dir&gt;/lab_config/intelc3850-2/lan_nic.json</programlisting></para>
196 </listitem>
197 </itemizedlist>
198
199 <para><emphasis role="bold">Action:</emphasis> Run the
200 <filename>bindNIC.yml</filename> Ansible Playbook with the
201 <literal>&lt;Device-name&gt;</literal> and
202 <literal>&lt;NIC&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/bindNIC.yml -e "device=&lt;Device-name&gt; nic=&lt;NIC&gt;"</programlisting></para>
203
204 <para><emphasis role="bold">Result:</emphasis> Output of the test case
205 run using the Test Harness: <programlisting># Bind NIC task result
206&lt;NIC&gt; binded successfully!</programlisting> <emphasis
207 role="bold">Note:</emphasis> The test will not fail if the NIC is
208 already bound, it will be unbound and bound again with the provided
209 configuration.</para>
210 </section>
211
212 <section id="unbind_nic">
213 <title>Network - Unbind_NIC</title>
214
215 <para><emphasis role="bold">Description:</emphasis> Unbinding a physical
216 network interface (NIC) from a device. For details please refer
217 to:</para>
218
219 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/unbindNIC.yml</filename></para>
220
221 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/unbindNetworkInterface.py</filename>.</para>
222
223 <para><emphasis role="bold">Preconditions:</emphasis></para>
224
225 <itemizedlist>
226 <listitem>
227 <para>A NIC is bound to a device in a uCPE Manager instance.</para>
228 </listitem>
229
230 <listitem>
231 <para>A NIC JSON configuration file exists:
232 <filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;NIC&gt;.json</filename></para>
233 </listitem>
234 </itemizedlist>
235
236 <para><emphasis role="bold">Action:</emphasis> Run the
237 <filename>unbindNIC.yml</filename> Ansible Playbook with the
238 <literal>&lt;Device-name&gt;</literal> and
239 <literal>&lt;NIC&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/unbindNIC.yml -e "device=&lt;Device-name&gt; nic=&lt;NIC&gt;"</programlisting></para>
240
241 <para><emphasis role="bold">Result:</emphasis> Output of the test case
242 run using the Test Harness: <programlisting># Unbind NIC task result
243&lt;NIC&gt; unbinded!</programlisting> <emphasis role="bold">Note:</emphasis>
244 The test will not fail if the NIC is not bound. The output will instead
245 contain:<programlisting># debug
246&lt;NIC&gt; is not binded!</programlisting></para>
247 </section>
248
249 <section id="create_bri">
250 <title>Network - Create_Bridge</title>
251
252 <para><emphasis role="bold">Description:</emphasis> Creating an OVS
253 network bridge on a uCPE device. For details please refer to:</para>
254
255 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/addBridge.yml</filename></para>
256
257 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/newNetworkBridge.py</filename>.</para>
258
259 <para><emphasis role="bold">Precondition:</emphasis><itemizedlist>
260 <listitem>
261 <para>A NIC is bound to a device in a uCPE Manager
262 instance.</para>
263 </listitem>
264
265 <listitem>
266 <para>A Bridge JSON configuration file is created:
267 <filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Bridge-name&gt;.json</filename></para>
268
269 <para><emphasis role="bold">Example:</emphasis><programlisting>&lt;AF-TH-install-dir&gt;/lab_config/intelc3850-2/wan_br.json
270&lt;AF-TH-install-dir&gt;/lab_config/intelc3850-2/lan_br.json</programlisting></para>
271 </listitem>
272 </itemizedlist></para>
273
274 <para><emphasis role="bold">Action:</emphasis> Run the
275 <filename>addBridge.yml</filename> Ansible Playbook with the
276 <literal>&lt;Device-name&gt;</literal> and the
277 <literal>&lt;Bridge-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/addBridge.yml -e "device=&lt;Device-name&gt; bridge=&lt;Bridge-name&gt;"</programlisting></para>
278
279 <para><emphasis role="bold">Result:</emphasis> Output of the test case
280 run using the Test Harness: <programlisting># Add Bridge task result
281&lt;Bridge-name&gt; network bridge was added!</programlisting><emphasis
282 role="bold">Note:</emphasis> The test will not fail if there already
283 exists a bridge with the same name, it will be deleted and the bridge
284 will be created again with the provided configuration.</para>
285 </section>
286
287 <section id="remov_bri">
288 <title>Network - Remove_Bridge</title>
289
290 <para><emphasis role="bold">Description:</emphasis> Removing an OVS
291 network bridge from a uCPE device. For details please refer to:</para>
292
293 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/deleteBridge.yml</filename></para>
294
295 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/delNetworkBridge.py</filename>.</para>
296
297 <para><emphasis role="bold">Preconditions:</emphasis> <itemizedlist>
298 <listitem>
299 <para>A Bridge is created in a uCPE Manager instance.</para>
300 </listitem>
301
302 <listitem>
303 <para>A Bridge JSON configuration file exists:
304 <filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Bridge-name&gt;.json</filename>.</para>
305 </listitem>
306 </itemizedlist><emphasis role="bold">Action:</emphasis> Run the
307 <filename>deleteBridge.yml</filename> Ansible Playbook with the
308 <literal>&lt;Device-name&gt;</literal> and the
309 <literal>&lt;Bridge-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/deleteBridge.yml -e "device=&lt;Device-name&gt; \
310bridge=&lt;Bridge-name&gt;"</programlisting></para>
311
312 <para><emphasis role="bold">Result:</emphasis> Output of the test case
313 run using the Test Harness: <programlisting># Delete Bridge task result
314&lt;Bridge-name&gt; network bridge was deleted!</programlisting><emphasis
315 role="bold">Note:</emphasis> The test will not fail if the bridge does
316 not exist: <programlisting># debug
317&lt;Bridge-name&gt; bridge not found!</programlisting></para>
318 </section>
319 </section>
320
321 <section id="vnf_deploy_lifecycle">
322 <title>VNF Deployment and Lifecycle</title>
323
324 <para>The following details the automated suite that handles the testing
325 of the instantiation, lifecycle and destruction of a VNF for the Enea NFV
326 Access Solution.</para>
327
328 <section id="inst_vnfi">
329 <title>Instantiate_VNFI</title>
330
331 <para><emphasis role="bold">Description:</emphasis> Creating a VNF
332 instance on a uCPE device. For details please refer to:</para>
333
334 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/instantiateVNFI.yml</filename></para>
335
336 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/instantiateVNFI.py</filename>.</para>
337
338 <para><emphasis role="bold">Preconditions:</emphasis> <itemizedlist>
339 <listitem>
340 <para>A VNF Image is onboarded and a device is added to the uCPE
341 Manager. Depending on the VNF, other steps may be required.</para>
342 </listitem>
343
344 <listitem>
345 <para>A VNFI JSON configuration file is created:
346 <filename>&lt;AF-TH-install-dir&gt;/vnf_config/&lt;VNF-Descriptor-name&gt;/&lt;VNFI-name&gt;.json</filename></para>
347
348 <para><emphasis role="bold">Example:</emphasis> <programlisting>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage/fortigateFWInstance.json</programlisting></para>
349 </listitem>
350 </itemizedlist></para>
351
352 <para><emphasis role="bold">Action:</emphasis> Run the
353 <filename>instantiateVNFI.yml</filename> Ansible Playbook with the
354 <literal>&lt;Device-name&gt;</literal>,
355 <literal>&lt;VNF-Descriptor-name&gt;</literal> and the
356 <literal>&lt;VNFI-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/instantiateVNFI.yml -e "device=&lt;Device-name&gt; \
357vnfd=&lt;VNF-Descriptor-name&gt; vnfi=&lt;VNFI-name&gt;"</programlisting></para>
358
359 <para><emphasis role="bold">Result:</emphasis> Output of the test case
360 run using the Test Harness: <programlisting># Instantiate VNF task result
361&lt;VNFI-name&gt; was instantiated!</programlisting><emphasis
362 role="bold">Note:</emphasis> The test will not fail when the VNF
363 instance already exists. The output will contain: <programlisting># debug
364&lt;VNFI-name&gt; already exists!</programlisting></para>
365 </section>
366
367 <section id="control_vnfi">
368 <title>Control_VNFI</title>
369
370 <para><emphasis role="bold">Description:</emphasis> Changing the status
371 of a VNF instance (Pause, Resume, Stop, Start). For details please refer
372 to:</para>
373
374 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/controlVNFI.yml</filename></para>
375
376 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/controlVNFI.py</filename>.</para>
377
378 <para><emphasis role="bold">Precondition:</emphasis> A VNF is
379 instantiated on a uCPE device.</para>
380
381 <para><emphasis role="bold">Action:</emphasis> Run the
382 <filename>controlVNFI.yml</filename> Ansible Playbook with the
383 <literal>&lt;Device-name&gt;</literal>,
384 <literal>&lt;VNFI-name&gt;</literal> and the
385 <literal>&lt;Command&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/controlVNFI.yml -e "device=&lt;Device-name&gt; \
386vnfi=&lt;VNFI-name&gt; status=&lt;Command&gt;"</programlisting>Where Command =
387 { pause | resume | stop | start }</para>
388
389 <para><emphasis role="bold">Result:</emphasis> Output of the test case
390 run using the Test Harness: <programlisting># Change VNFI Status task result
391&lt;VNFI-name&gt; status was set to &lt;Command&gt;</programlisting><emphasis
392 role="bold">Note:</emphasis> The test will not fail if the VNF instance
393 does not exist or when the specified command is not valid. Depending on
394 the case, the output will contain: <programlisting># debug
395&lt;VNFI-name&gt; was not found!</programlisting><programlisting># debug
396Invalid VNF Instance control command specified - &lt;Command&gt;</programlisting></para>
397 </section>
398
399 <section id="destroy_vnfi">
400 <title>Destroy_VNFI</title>
401
402 <para><emphasis role="bold">Description:</emphasis> Destroying a VNF
403 instance from a uCPE device. For details please refer to:</para>
404
405 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/destroyVNFI.yml</filename></para>
406
407 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/destroyVNFI.py</filename>.</para>
408
409 <para><emphasis role="bold">Precondition:</emphasis> A VNF is
410 instantiated on a uCPE device.</para>
411
412 <para><emphasis role="bold">Action:</emphasis> Run the
413 <filename>destroyVNFI.yml</filename> Ansible Playbook with the
414 <literal>&lt;Device-name&gt;</literal> and the
415 <filename>&lt;VNFI-name&gt;</filename> as extra-vars: <programlisting>ansible-playbook playbooks/destroyVNFI.yml -e "device=&lt;Device-name&gt; vnfi=&lt;VNFI-name&gt;"</programlisting><emphasis
416 role="bold">Result:</emphasis> Output of the test case run using the
417 Test Harness:<programlisting># Destroy VNFI task result
418&lt;VNFI-name&gt; was destroyed!</programlisting><emphasis
419 role="bold">Note:</emphasis> The test will not fail when the VNF
420 instance does not exist. The output will contain: <programlisting># debug
421&lt;VNFI-name&gt; was not found!</programlisting></para>
422 </section>
423 </section>
424
425 <section id="serv_creat_lifecycle">
426 <title>Service Creation and Lifecycle</title>
427
428 <para>This test suite contains more complex test cases designed to verify
429 service creation and service lifecycle management. These test cases also
430 serve as examples of how different services can be deployed using the
431 Automation Framework (AF) and the Test Harness (TH).</para>
432
433 <section id="fortigate_firewall">
434 <title>Fortigate_VNF_as_a_Firewall</title>
435
436 <para>This test case was implemented in 2 different ways to exemplify
437 both methods supported by the AF and TH to deploy such services.</para>
438
439 <para>Prerequisites needed in order to deploy the FortiGate VNF as a
440 Firewall:</para>
441
442 <orderedlist>
443 <listitem>
444 <para>Onboard the FortiGate VNF Image.</para>
445 </listitem>
446
447 <listitem>
448 <para>Add a device.</para>
449 </listitem>
450
451 <listitem>
452 <para>Bind 2 physical interfaces, <literal>wan_nic</literal> (this
453 physical interface has to be connected to Lab Network) and
454 <literal>lan_nic</literal>.</para>
455 </listitem>
456
457 <listitem>
458 <para>Create 2 bridges, <literal>wan_br</literal> (using
459 <literal>wan_nic</literal> interface) and <literal>lan_br</literal>
460 (using <literal>lan_nic</literal> interface).</para>
461 </listitem>
462
463 <listitem>
464 <para>Instantiate the FortiGate VNF using the basic Firewall
465 configuration and the FortiGate License.</para>
466 </listitem>
467 </orderedlist>
468
469 <para>For more information please refer to "FortiGate VNF as a Firewall"
470 chapter from the "Enea NFV Access Example Use-cases" manual.<note>
471 <para>The license and configuration files for the FortiGate VNF are
472 not included in the TH and should be obtained from the user's Enea
473 Portal account.</para>
474 </note></para>
475
476 <section id="fortigate_fw_instance">
477 <title>FortigateFWInstance Test</title>
478
479 <para><emphasis role="bold">Description:</emphasis> Instantiate the
480 FortiGate VNF as a Firewall and test it using isolated network
481 namespace.</para>
482
483 <para>This example was implemented with the "Test Harness" method,
484 based on Ansible Playbooks. For details please refer to:</para>
485
486 <itemizedlist>
487 <listitem>
488 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/fortigateFWService/instantiateFortigateFW.yml</filename></para>
489 </listitem>
490
491 <listitem>
492 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/fortigateFWService/testFortigateFWInstance.yml</filename></para>
493 </listitem>
494
495 <listitem>
496 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/fortigateFWService/cleanupTestFortigateFWInstance.yml</filename></para>
497 </listitem>
498
499 <listitem>
500 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/fortigateFWService/cleanupFortigateFWInstance.yml</filename></para>
501 </listitem>
502 </itemizedlist>
503
504 <para><emphasis role="bold">Preconditions:</emphasis></para>
505
506 <itemizedlist>
507 <listitem>
508 <para>Add the Fortigate VNF Image
509 (<filename>fortios.qcow2</filename>) to the
510 <literal>vnf_image</literal> folder.</para>
511 </listitem>
512
513 <listitem>
514 <para>Device JSON configuration file is created:
515 <filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</filename>.</para>
516 </listitem>
517
518 <listitem>
519 <para>Add device settings in the <literal>hosts</literal> Ansible
520 inventory file under <literal>[fortigateFW]</literal> and remove
521 the <filename>intelc3850-2</filename> example.</para>
522
523 <para><emphasis role="bold">Example:</emphasis> <programlisting>intelc3850-2 ansible_host=172.24.12.114 ansible_port=22 \
524ansible_user=root ansible_pass=root</programlisting></para>
525 </listitem>
526
527 <listitem>
528 <para>NIC JSON configuration files are created:</para>
529
530 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_nic.json</filename></para>
531
532 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_nic.json</filename></para>
533 </listitem>
534
535 <listitem>
536 <para>Bridge JSON configuration files are created:</para>
537
538 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_br.json</filename></para>
539
540 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_br.json</filename></para>
541 </listitem>
542
543 <listitem>
544 <para>Download the FortiGate VNF Firewall basic configuration from
545 the Enea Portal, copy it into the
546 <filename>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage</filename>
547 directory and rename it to<filename>
548 fortigateFW.conf</filename>.</para>
549 </listitem>
550
551 <listitem>
552 <para>Retrieve the FortiGate VNF license from Fortinet or the Enea
553 Portal, copy it into the
554 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage</literal>
555 directory and rename it to
556 <filename>fortigateLicense.lic</filename>.</para>
557
558 <para>Please refer to "FortiGate VNF as a Firewall" chapter from
559 the Enea NFV Access Example Use-cases manual.</para>
560 </listitem>
561 </itemizedlist>
562
563 <para><emphasis role="bold">Action:</emphasis> Run the <emphasis
564 role="bold">instantiateFortigateFW.yml</emphasis> Ansible Playbook
565 with the <literal>&lt;Device-name&gt;</literal> as
566 extra-vars:<programlisting>ansible-playbook playbooks/fortigateFWService/instantiateFortigateFW.yml \
567-e "device=&lt;Device-name&gt;"</programlisting></para>
568
569 <para><emphasis role="bold">Result:</emphasis> Output of the test case
570 run using the Test Harness: <programlisting># Test FortigateFWInstance task result
571FortigateFWInstance tested successfully!</programlisting></para>
572
573 <para><emphasis role="bold">Cleanup:</emphasis> Run the
574 <literal>cleanupFortigateFWInstance.yml</literal> Ansible Playbook
575 with the <literal>&lt;Device-name&gt;</literal> as extra-vars:
576 <programlisting>ansible-playbook playbooks/fortigateFWService/cleanupFortigateFWInstance.yml \
577-e "device=&lt;Device-name&gt;"</programlisting></para>
578 </section>
579
580 <section id="deploy_fortigate_fw">
581 <title>DeployFortigateFW Scenario</title>
582
583 <para><emphasis role="bold">Description:</emphasis> Deploy the
584 Fortigate VNF as a Firewall. This example was implemented with the
585 "Automation Framework" method, based on the
586 <filename>unittestSuite.py</filename> Python module.</para>
587
588 <para>For details please refer to:</para>
589
590 <itemizedlist>
591 <listitem>
592 <para><literal>&lt;AF-TH-install-dir&gt;/playbooks/unittestSuiteTest/deployFortigateFWScenario.yml</literal></para>
593 </listitem>
594
595 <listitem>
596 <para><literal>&lt;AF-TH-install-dir&gt;/playbooks/unittestSuiteTest/cleanupFortigateFWScenario.yml</literal></para>
597 </listitem>
598
599 <listitem>
600 <para><literal>&lt;AF-TH-install-dir&gt;/automation_framework/unittestSuite</literal>
601 directory.</para>
602 </listitem>
603 </itemizedlist>
604
605 <para><emphasis role="bold">Preconditions:</emphasis></para>
606
607 <itemizedlist>
608 <listitem>
609 <para>Add the FortiGate VNF Image
610 (<filename>fortios.qcow2</filename>) to the
611 <literal>vnf_image</literal> folder.</para>
612 </listitem>
613
614 <listitem>
615 <para>Device JSON configuration file is created:
616 <filename></filename></para>
617
618 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</filename>.</para>
619 </listitem>
620
621 <listitem>
622 <para>NIC JSON configuration files are created:</para>
623
624 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_nic.json</filename></para>
625
626 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_nic.json</filename></para>
627 </listitem>
628
629 <listitem>
630 <para>Bridge JSON configuration files are created:</para>
631
632 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_br.json</filename></para>
633
634 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_br.json</filename></para>
635 </listitem>
636
637 <listitem>
638 <para>Download the FortiGate VNF Firewall basic configuration from
639 the Enea Portal, copy it into the
640 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage</literal>
641 directory and rename it to
642 <filename>fortigateFW.conf</filename>.</para>
643 </listitem>
644
645 <listitem>
646 <para>Retrieve the FortiGate VNF license file from Fortinet or the
647 Enea Portal, copy it into the
648 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage</literal>
649 directory and rename it to
650 <filename>fortigateLicense.lic</filename>.</para>
651
652 <para>For more details, please refer to:</para>
653
654 <itemizedlist>
655 <listitem>
656 <para>The "FortiGate VNF as a Firewall" chapter from the Enea
657 NFV Access Example Use-cases manual.</para>
658 </listitem>
659
660 <listitem>
661 <para>The "Python Unit-Test Suite" chapter from the Enea NFV
662 Access Automation Framework and Test Harness User
663 Guide.</para>
664 </listitem>
665 </itemizedlist>
666 </listitem>
667 </itemizedlist>
668
669 <para><emphasis role="bold">Action:</emphasis> Run the
670 <filename>deployFortigateFWScenario.yml</filename> Ansible Playbook
671 with the <literal>&lt;Device-name&gt;</literal> as extra-vars:
672 <programlisting>ansible-playbook playbooks/unittestSuiteTest/deployFortigateFWScenario.yml \
673-e "device=&lt;Device-name&gt;"</programlisting></para>
674
675 <para><emphasis role="bold">Result:</emphasis> Output of the test case
676 run using the Test Harness: <programlisting># unittestSuite Deploy Test task result
677FortigateFW Scenario deployed successfully!</programlisting></para>
678
679 <para><emphasis role="bold">Cleanup:</emphasis> Run the
680 <filename>cleanupFortigateFWScenario.yml</filename> Ansible Playbook
681 with the <literal>&lt;Device-name&gt;</literal> as extra-vars:
682 <programlisting>ansible-playbook playbooks/unittestSuiteTest/cleanupFortigateFWScenario.yml \
683-e "device=&lt;Device-name&gt;"</programlisting></para>
684 </section>
685 </section>
686
687 <section id="chained_vnf">
688 <title>chainedVNFsService</title>
689
690 <para><emphasis role="bold">Description:</emphasis> This sample test
691 case corresponds to the "VNF Chaining Example Use-case" from the Enea
692 NFV Access Example Use-cases manual.</para>
693
694 <para>For details please refer to:</para>
695
696 <itemizedlist>
697 <listitem>
698 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/chainedVNFsService/chainedVNFsService.yml</filename></para>
699 </listitem>
700
701 <listitem>
702 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/chainedVNFsService/testChainedVNFsService.yml</filename></para>
703 </listitem>
704
705 <listitem>
706 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/chainedVNFsService/cleanupChainedVNFsService.yml</filename></para>
707 </listitem>
708 </itemizedlist>
709
710 <para><emphasis role="bold">Preconditions:</emphasis></para>
711
712 <itemizedlist>
713 <listitem>
714 <para>Add the Fortigate VNF Image
715 (<filename>fortios.qcow2</filename>) to the
716 <literal>vnf_image</literal> folder.</para>
717 </listitem>
718
719 <listitem>
720 <para>Add the Juniper vSRX VNF Image
721 (<filename>juniper.qcow2</filename>) to the
722 <literal>vnf_image</literal> folder.</para>
723 </listitem>
724
725 <listitem>
726 <para>Devices JSON configuration files are created, e.g.:</para>
727
728 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</filename>.</para>
729 </listitem>
730
731 <listitem>
732 <para>Add device settings in the <literal>hosts</literal> Ansible
733 inventory file under <literal>[chainedVNFs]</literal>, keeping both
734 devices, the "site1" and "site2" entries, and updating the values
735 for <literal>ansible_host</literal>,
736 <literal>ansible_port</literal>, <literal>ansible_user</literal> and
737 <literal>ansible_pass</literal>, as applicable.</para>
738
739 <para><emphasis role="bold">Example:</emphasis></para>
740
741 <para><programlisting>site1 ansible_host=172.24.14.157 ansible_port=22 ansible_user=root \
742ansible_pass=root</programlisting></para>
743
744 <para><programlisting>site2 ansible_host=172.24.14.50 ansible_port=22 ansible_user=root \
745ansible_pass=root</programlisting></para>
746 </listitem>
747
748 <listitem>
749 <para>NIC JSON configuration files are created for each of the
750 devices, where <literal>mgmt_nic</literal> is connected to the DHCP
751 from the Lab Network and <literal>wan_nic</literal> is connected
752 back to back to the other device:</para>
753
754 <itemizedlist>
755 <listitem>
756 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/mgmt_nic.json</filename></para>
757 </listitem>
758
759 <listitem>
760 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_nic.json</filename></para>
761 </listitem>
762
763 <listitem>
764 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_nic.json</filename></para>
765 </listitem>
766 </itemizedlist>
767 </listitem>
768
769 <listitem>
770 <para>Bridge JSON configuration files are created for each of the
771 devices:</para>
772
773 <itemizedlist>
774 <listitem>
775 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/vnf_mgmt_br.json</filename></para>
776 </listitem>
777
778 <listitem>
779 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/sfc_br.json</filename></para>
780 </listitem>
781
782 <listitem>
783 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_br.json</filename></para>
784 </listitem>
785
786 <listitem>
787 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_br.json</filename></para>
788 </listitem>
789 </itemizedlist>
790
791 <para>Note that sample configuration files needed for devices' NICs
792 and bridges can be found in:
793 <literal>&lt;AF-TH-install-dir&gt;/lab_config/inteld1521-1</literal>
794 and
795 <literal>&lt;AF-TH-install-dir&gt;/lab_config/inteld1521-2</literal>.</para>
796 </listitem>
797
798 <listitem>
799 <para>Download the FortiGate VNF Firewall basic configuration files
800 from the Enea Portal (<filename>FortiFW-Site1.conf</filename> and
801 <filename>FortiFW-Site2.conf</filename>), and copy them into the
802 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateFWImage</literal>
803 directory.</para>
804 </listitem>
805
806 <listitem>
807 <para>Retrieve the FortiGate VNF license from Fortinet or the Enea
808 Portal, copy it into the
809 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateFWImage</literal>
810 directory and rename it to
811 <filename>fortigateLicense.lic</filename>.</para>
812 </listitem>
813
814 <listitem>
815 <para>Download the Juniper vSRX basic configuration files from the
816 Enea Portal (<filename>vSRX-Site1.iso</filename> and
817 <filename>vSRX-Site2.iso</filename>), and copy them into the
818 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/junipervSRXImage</literal>
819 directory.</para>
820 </listitem>
821
822 <listitem>
823 <para>Download <filename>vSRX-domain-update-script</filename> from
824 the Enea Portal and copy it into the
825 <literal>junipervSRXImage</literal> directory.</para>
826
827 <para>Please refer to the "VNF Chaining Example Use-case" chapter
828 from the Enea NFV Access Example Use-cases manual for additional
829 information about the preconditions.</para>
830 </listitem>
831 </itemizedlist>
832
833 <para><emphasis role="bold">Action:</emphasis> Run the
834 <filename>chainedVNFsService.yml</filename> Ansible Playbook as follows:
835 <programlisting>ansible-playbook playbooks/chainedVNFsService/chainedVNFsService.yml \
836-e "site1=inteld1521-1 site2=inteld1521-2 arch=XeonD"</programlisting></para>
837
838 <para>Note that "arch" may either be { XeonD | AtomC } depending on the
839 target set chosen.</para>
840
841 <para><emphasis role="bold">Result:</emphasis> Output of the test case
842 run using the Test Harness: <programlisting># testChainedVNFsService task result
843******************************************************************************
844 * site1 - changed=False ----------------------------------------------
845----
846&lt;site1_lan-ip&gt; ---&gt; &lt;site2_lan-ip&gt;
847LAN-to-LAN connectivity (through VPN tunnel)tested successfully!</programlisting></para>
848
849 <para><emphasis role="bold">Cleanup:</emphasis> Run the
850 <filename>cleanupChainedVNFsService.yml</filename> Ansible Playbook as
851 follows: <programlisting>ansible-playbook playbooks/chainedVNFsService/cleanupChainedVNFsService.yml \
852-e "site1=inteld1521-1 site2=inteld1521-2 arch=XeonD"</programlisting></para>
853 </section>
854 </section>
855</chapter> \ No newline at end of file
diff --git a/doc/book-enea-nfv-access-system-test-specification/swcomp.mk b/doc/book-enea-nfv-access-system-test-specification/swcomp.mk
new file mode 100755
index 0000000..aea86ca
--- /dev/null
+++ b/doc/book-enea-nfv-access-system-test-specification/swcomp.mk
@@ -0,0 +1,10 @@
1# Component build specification
2
3# Version of THIS book
4BOOK_VER ?= $(REL_VER)-dev
5
6DOCBOOK_SRC := $(COMP)/swcomp.mk $(COMP)/doc/book.xml $(shell find $(COMP)/doc -type f \( -name "*.xml" -o -name "*.svg" -o -name "*.png" \) ! -name "book.xml" -print)
7
8BOOKPACKAGES := book-enea-nfv-access-system-test-specification
9BOOKDESC_$(BOOKPACKAGES) := "Enea NFV Access $(PROD_VER) System Test Specification"
10BOOKDEFAULTCONDITION := $(DEFAULTCONDITIONS)