diff options
author | Miruna Paun <Miruna.Paun@enea.com> | 2019-06-10 12:33:41 +0200 |
---|---|---|
committer | Martin Borg <martin.borg@enea.com> | 2019-06-13 11:01:21 +0200 |
commit | a9508ba2cd124789b683fba112e395832b1bf3e3 (patch) | |
tree | a5804c3bdbefb8e8076c4d8eef227cf274cacc20 | |
parent | e54c169596de8fd0dc3afaf979d967ee4fabe639 (diff) | |
download | el_releases-nfv-access-a9508ba2cd124789b683fba112e395832b1bf3e3.tar.gz |
Added the System Test Spec Doc.
Change-Id: I532d2f343e5c6a0ddb7bf06961b6f889e9108952
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 | |||
50 | DOCBOOK_CLEANTMP ?= yes | 50 | DOCBOOK_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 |
53 | COMPONENTS := 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 | 53 | COMPONENTS := 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 | <row>, 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 | ||
26 | sudo apt-get -y update | ||
27 | sudo 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 | ||
37 | curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo | ||
38 | chmod a+x ~/bin/repo | ||
39 | export 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 | ||
62 | cd enea-linux | ||
63 | repo init -u git@git.enea.com:linux/manifests/el_manifests-virtualization.git \ | ||
64 | -b refs/tags/EL6 -m $MACHINE/default.xml | ||
65 | repo 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 @@ | |||
1 | eltf_params_template_updated_howto_use.txt | ||
2 | |||
3 | This is a way to collect all parameters for an Enea NFV Access release | ||
4 | in one parameter file, easy to automatically update by ELTF regularly. | ||
5 | |||
6 | NOTE: 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 | |||
9 | NOTE: 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 | |||
17 | The ordinary book XML files use xi:include statements to include elements | ||
18 | from this parameter file. The book XML files can thus be manually edited. | ||
19 | Before editing, you must run "make init". | ||
20 | Any other text in the template or updated.xml file, outside the parts that | ||
21 | are included in the book, are not used but still all must be correct | ||
22 | DocBook XML files. | ||
23 | |||
24 | ELTF work: | ||
25 | template => ELTF replaces ALL ELTF_xxx variables => updated XML file | ||
26 | => push to git only if changed | ||
27 | |||
28 | |||
29 | eltf_params_template.xml (in git) | ||
30 | File used by ELTF to autocreate/update the real parameter | ||
31 | file eltf_params_updated.xml. | ||
32 | |||
33 | eltf_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 | |||
39 | xi: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 | |||
48 | DocBook XML: All XML files must be correct DocBook XML files. | ||
49 | |||
50 | Do 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 | |||
54 | ELTF should autocreate a temporary "real" file but only replace | ||
55 | and push the eltf_params_updated.xml if it is changed. | ||
56 | |||
57 | |||
58 | make eltf | ||
59 | This lists all ELTF_xxx variables and some rules how to treat them | ||
60 | |||
61 | DocBook 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 < > and & | ||
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 | |||
71 | DocBook 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 | |||
81 | DocBook 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 | |||
85 | Each 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 | |||
98 | Tables 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 | |||
102 | Special - 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 | |||
112 | BELOW WE TRY TO EXPLAIN EACH ELTF_* variable, but always check with make eltf | ||
113 | if there are more new variables, missing in this description file. | ||
114 | |||
115 | _____________________________________________________________________________ | ||
116 | ELTF_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 | ||
125 | sudo apt-get update | ||
126 | sudo 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 | _____________________________________________________________________________ | ||
133 | ELTF_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: | ||
137 | mkdir -p ~/bin | ||
138 | curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo | ||
139 | chmod a+x ~/bin/repo | ||
140 | export PATH=~/bin:$PATH | ||
141 | |||
142 | _____________________________________________________________________________ | ||
143 | ELTF_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: | ||
150 | 6 | ||
151 | or | ||
152 | 6.1 | ||
153 | |||
154 | _____________________________________________________________________________ | ||
155 | ELTF_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: | ||
160 | 2.1 | ||
161 | |||
162 | _____________________________________________________________________________ | ||
163 | ELTF_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: | ||
168 | krogoth | ||
169 | |||
170 | _____________________________________________________________________________ | ||
171 | ELTF_YOCTO_PROJ_DOWNLOAD_TXTURL General parameters. These two are IDENTICAL | ||
172 | ELTF_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: | ||
177 | http://www.yoctoproject.org/downloads/core/krogoth/21 | ||
178 | |||
179 | _____________________________________________________________________________ | ||
180 | ELTF_EL_DOWNLOAD_TXTURL General parameters. These two are IDENTICAL strings | ||
181 | ELTF_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: | ||
187 | http://linux.enea.com/6 | ||
188 | |||
189 | _____________________________________________________________________________ | ||
190 | ELTF_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: | ||
197 | mkdir enea-linux | ||
198 | cd enea-linux | ||
199 | repo init -u git@git.enea.com:linux/manifests/el_manifests-virtualization.git \ | ||
200 | -b refs/tags/EL6 -m $MACHINE/default.xml | ||
201 | repo sync | ||
202 | |||
203 | _____________________________________________________________________________ | ||
204 | ELTF_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. | ||
214 | 4.5 (Mars) | ||
215 | |||
216 | |||
217 | _____________________________________________________________________________ | ||
218 | ELTF_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 | _____________________________________________________________________________ | ||
226 | ELTF_T_MANIFEST_DIR This happens to be in two places. Must be exactly | ||
227 | ELTF_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: | ||
232 | p2041rgb | ||
233 | or | ||
234 | ls1021aiot | ||
235 | or | ||
236 | qemuarm | ||
237 | |||
238 | _____________________________________________________________________________ | ||
239 | ELTF_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: | ||
243 | P2041RGB | ||
244 | or | ||
245 | LS1021a-IoT | ||
246 | or | ||
247 | qemuarm | ||
248 | |||
249 | _____________________________________________________________________________ | ||
250 | ELTF_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: | ||
255 | Power, e500mc | ||
256 | or | ||
257 | ARM Cortex-A7 | ||
258 | |||
259 | _____________________________________________________________________________ | ||
260 | ELTF_T_DS_TXTURL Target specific: "Link to target datasheet. These | ||
261 | ELTF_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: | ||
268 | url="http://wiki.qemu.org">http://wiki.qemu.org | ||
269 | or | ||
270 | url="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 | _____________________________________________________________________________ | ||
273 | ELTF_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: | ||
279 | 15.0.0 | ||
280 | or | ||
281 | Git commit id: 75ca53211488a3e268037a44ee2a7ac5c7181bd2 | ||
282 | |||
283 | _____________________________________________________________________________ | ||
284 | ELTF_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: | ||
290 | 5.3 | ||
291 | |||
292 | _____________________________________________________________________________ | ||
293 | ELTF_T_KERN_VER Target specific: "Linux Kernel Version". Often | ||
294 | different per target. | ||
295 | In book: An <entry> in a row | ||
296 | Example: | ||
297 | 3.12 | ||
298 | |||
299 | _____________________________________________________________________________ | ||
300 | ELTF_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: | ||
306 | Ethernet, I2C, SPI, PCI, USB, SD/SDHC/SDXC | ||
307 | |||
308 | |||
309 | _____________________________________________________________________________ | ||
310 | ELTF_T_EL_RPM_TXTURL Target specific: "Enea rpm folder for downloading | ||
311 | ELTF_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: | ||
318 | url="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><AF-TH-install-dir>/playbooks/onboardVNFImage.yml</filename></para> | ||
22 | |||
23 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/vnf_image/<VNF-Image-name>.qcow2</programlisting></para> | ||
31 | </listitem> | ||
32 | |||
33 | <listitem> | ||
34 | <para>A VNF Image JSON configuration file is created: | ||
35 | <filename><AF-TH-install-dir>/vnf_config/<VNF-Descriptor-name>/<VNF-Descriptor-name>.json</filename>.</para> | ||
36 | |||
37 | <para><emphasis role="bold">Example:</emphasis><programlisting><AF-TH-install-dir>/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><VNF-Image-name></literal> and the | ||
44 | <literal><VNF-Descriptor-name></literal> as extra-vars: | ||
45 | <programlisting>ansible-playbook playbooks/onboardVNFImage.yml -e "vnfb=<VNF-Image-name> \ | ||
46 | vnfd=<VNF-Descriptor-name>"</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 | <VNF-Descriptor-name> 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 <VNF-Descriptor-name> 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><AF-TH-install-dir>/playbooks/onboardVNFBundle.yml</filename></para> | ||
63 | |||
64 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/vnf_image/<VNF-Bundle-name>.zip</filename>.</para> | ||
69 | |||
70 | <para><emphasis role="bold">Action:</emphasis> Run the | ||
71 | <filename>onboardVNFBundle.yml</filename> Ansible Playbook with the | ||
72 | <literal><VNF-Bundle-name></literal> as extra-vars: | ||
73 | <programlisting>ansible-playbook playbooks/onboardVNFBundle.yml -e "vnfb=<VNF-Bundle-name>"</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 | <VNF-Bundle-name> 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 <VNF-Bundle-name> 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><AF-TH-install-dir>/playbooks/offboardVNF.yml</filename></para> | ||
89 | |||
90 | <para><filename><AF-TH-install-dir>/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><VNF-Descriptor-name></literal> as extra-vars: | ||
98 | <programlisting>ansible-playbook playbooks/offboardVNF.yml -e "vnfd=<VNF-Descriptor-name>"</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 | <VNF-Descriptor-name> 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 <VNF-Descriptor-name>!</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><AF-TH-install-dir>/playbooks/addDevice.yml</filename></para> | ||
115 | |||
116 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/lab_config/<Device-name>/<Device-name>.json</filename>.</para> | ||
121 | |||
122 | <para><emphasis role="bold">Example:</emphasis> <programlisting><AF-TH-install-dir>/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><Device-name></filename> as extra-vars: <programlisting>ansible-playbook playbooks/addDevice.yml -e "device=<Device-name>"</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 | <Device-name> 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 | <Device-name> 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><AF-TH-install-dir>/playbooks/removeDevice.yml</filename></para> | ||
143 | |||
144 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/lab_config/<Device-name>/<Device-name>.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><Device-name></literal> as extra-vars: <programlisting>ansible-playbook playbooks/removeDevice.yml -e "device=<Device-name>"</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 | <Device-name> 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 | <Device-name> 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><AF-TH-install-dir>/playbooks/bindNIC.yml</filename></para> | ||
179 | |||
180 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/lab_config/<Device-name>/<NIC>.json</filename>.</para> | ||
193 | |||
194 | <para><emphasis role="bold">Example:</emphasis> <programlisting><AF-TH-install-dir>/lab_config/intelc3850-2/wan_nic.json | ||
195 | <AF-TH-install-dir>/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><Device-name></literal> and | ||
202 | <literal><NIC></literal> as extra-vars: <programlisting>ansible-playbook playbooks/bindNIC.yml -e "device=<Device-name> nic=<NIC>"</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 | <NIC> 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><AF-TH-install-dir>/playbooks/unbindNIC.yml</filename></para> | ||
220 | |||
221 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/lab_config/<Device-name>/<NIC>.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><Device-name></literal> and | ||
239 | <literal><NIC></literal> as extra-vars: <programlisting>ansible-playbook playbooks/unbindNIC.yml -e "device=<Device-name> nic=<NIC>"</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 | <NIC> 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 | <NIC> 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><AF-TH-install-dir>/playbooks/addBridge.yml</filename></para> | ||
256 | |||
257 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/lab_config/<Device-name>/<Bridge-name>.json</filename></para> | ||
268 | |||
269 | <para><emphasis role="bold">Example:</emphasis><programlisting><AF-TH-install-dir>/lab_config/intelc3850-2/wan_br.json | ||
270 | <AF-TH-install-dir>/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><Device-name></literal> and the | ||
277 | <literal><Bridge-name></literal> as extra-vars: <programlisting>ansible-playbook playbooks/addBridge.yml -e "device=<Device-name> bridge=<Bridge-name>"</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 | <Bridge-name> 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><AF-TH-install-dir>/playbooks/deleteBridge.yml</filename></para> | ||
294 | |||
295 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/lab_config/<Device-name>/<Bridge-name>.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><Device-name></literal> and the | ||
309 | <literal><Bridge-name></literal> as extra-vars: <programlisting>ansible-playbook playbooks/deleteBridge.yml -e "device=<Device-name> \ | ||
310 | bridge=<Bridge-name>"</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 | <Bridge-name> 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 | <Bridge-name> 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><AF-TH-install-dir>/playbooks/instantiateVNFI.yml</filename></para> | ||
335 | |||
336 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/vnf_config/<VNF-Descriptor-name>/<VNFI-name>.json</filename></para> | ||
347 | |||
348 | <para><emphasis role="bold">Example:</emphasis> <programlisting><AF-TH-install-dir>/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><Device-name></literal>, | ||
355 | <literal><VNF-Descriptor-name></literal> and the | ||
356 | <literal><VNFI-name></literal> as extra-vars: <programlisting>ansible-playbook playbooks/instantiateVNFI.yml -e "device=<Device-name> \ | ||
357 | vnfd=<VNF-Descriptor-name> vnfi=<VNFI-name>"</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 | <VNFI-name> 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 | <VNFI-name> 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><AF-TH-install-dir>/playbooks/controlVNFI.yml</filename></para> | ||
375 | |||
376 | <para><filename><AF-TH-install-dir>/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><Device-name></literal>, | ||
384 | <literal><VNFI-name></literal> and the | ||
385 | <literal><Command></literal> as extra-vars: <programlisting>ansible-playbook playbooks/controlVNFI.yml -e "device=<Device-name> \ | ||
386 | vnfi=<VNFI-name> status=<Command>"</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 | <VNFI-name> status was set to <Command></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 | <VNFI-name> was not found!</programlisting><programlisting># debug | ||
396 | Invalid VNF Instance control command specified - <Command></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><AF-TH-install-dir>/playbooks/destroyVNFI.yml</filename></para> | ||
406 | |||
407 | <para><filename><AF-TH-install-dir>/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><Device-name></literal> and the | ||
415 | <filename><VNFI-name></filename> as extra-vars: <programlisting>ansible-playbook playbooks/destroyVNFI.yml -e "device=<Device-name> vnfi=<VNFI-name>"</programlisting><emphasis | ||
416 | role="bold">Result:</emphasis> Output of the test case run using the | ||
417 | Test Harness:<programlisting># Destroy VNFI task result | ||
418 | <VNFI-name> 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 | <VNFI-name> 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><AF-TH-install-dir>/playbooks/fortigateFWService/instantiateFortigateFW.yml</filename></para> | ||
489 | </listitem> | ||
490 | |||
491 | <listitem> | ||
492 | <para><filename><AF-TH-install-dir>/playbooks/fortigateFWService/testFortigateFWInstance.yml</filename></para> | ||
493 | </listitem> | ||
494 | |||
495 | <listitem> | ||
496 | <para><filename><AF-TH-install-dir>/playbooks/fortigateFWService/cleanupTestFortigateFWInstance.yml</filename></para> | ||
497 | </listitem> | ||
498 | |||
499 | <listitem> | ||
500 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/lab_config/<Device-name>/<Device-name>.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 \ | ||
524 | ansible_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><AF-TH-install-dir>/lab_config/<Device-name>/wan_nic.json</filename></para> | ||
531 | |||
532 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/lan_nic.json</filename></para> | ||
533 | </listitem> | ||
534 | |||
535 | <listitem> | ||
536 | <para>Bridge JSON configuration files are created:</para> | ||
537 | |||
538 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/wan_br.json</filename></para> | ||
539 | |||
540 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/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><AF-TH-install-dir>/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><AF-TH-install-dir>/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><Device-name></literal> as | ||
566 | extra-vars:<programlisting>ansible-playbook playbooks/fortigateFWService/instantiateFortigateFW.yml \ | ||
567 | -e "device=<Device-name>"</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 | ||
571 | FortigateFWInstance 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><Device-name></literal> as extra-vars: | ||
576 | <programlisting>ansible-playbook playbooks/fortigateFWService/cleanupFortigateFWInstance.yml \ | ||
577 | -e "device=<Device-name>"</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><AF-TH-install-dir>/playbooks/unittestSuiteTest/deployFortigateFWScenario.yml</literal></para> | ||
593 | </listitem> | ||
594 | |||
595 | <listitem> | ||
596 | <para><literal><AF-TH-install-dir>/playbooks/unittestSuiteTest/cleanupFortigateFWScenario.yml</literal></para> | ||
597 | </listitem> | ||
598 | |||
599 | <listitem> | ||
600 | <para><literal><AF-TH-install-dir>/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><AF-TH-install-dir>/lab_config/<Device-name>/<Device-name>.json</filename>.</para> | ||
619 | </listitem> | ||
620 | |||
621 | <listitem> | ||
622 | <para>NIC JSON configuration files are created:</para> | ||
623 | |||
624 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/wan_nic.json</filename></para> | ||
625 | |||
626 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/lan_nic.json</filename></para> | ||
627 | </listitem> | ||
628 | |||
629 | <listitem> | ||
630 | <para>Bridge JSON configuration files are created:</para> | ||
631 | |||
632 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/wan_br.json</filename></para> | ||
633 | |||
634 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/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><AF-TH-install-dir>/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><AF-TH-install-dir>/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><Device-name></literal> as extra-vars: | ||
672 | <programlisting>ansible-playbook playbooks/unittestSuiteTest/deployFortigateFWScenario.yml \ | ||
673 | -e "device=<Device-name>"</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 | ||
677 | FortigateFW 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><Device-name></literal> as extra-vars: | ||
682 | <programlisting>ansible-playbook playbooks/unittestSuiteTest/cleanupFortigateFWScenario.yml \ | ||
683 | -e "device=<Device-name>"</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><AF-TH-install-dir>/playbooks/chainedVNFsService/chainedVNFsService.yml</filename></para> | ||
699 | </listitem> | ||
700 | |||
701 | <listitem> | ||
702 | <para><filename><AF-TH-install-dir>/playbooks/chainedVNFsService/testChainedVNFsService.yml</filename></para> | ||
703 | </listitem> | ||
704 | |||
705 | <listitem> | ||
706 | <para><filename><AF-TH-install-dir>/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><AF-TH-install-dir>/lab_config/<Device-name>/<Device-name>.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 \ | ||
742 | ansible_pass=root</programlisting></para> | ||
743 | |||
744 | <para><programlisting>site2 ansible_host=172.24.14.50 ansible_port=22 ansible_user=root \ | ||
745 | ansible_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><AF-TH-install-dir>/lab_config/<Device-name>/mgmt_nic.json</filename></para> | ||
757 | </listitem> | ||
758 | |||
759 | <listitem> | ||
760 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/wan_nic.json</filename></para> | ||
761 | </listitem> | ||
762 | |||
763 | <listitem> | ||
764 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/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><AF-TH-install-dir>/lab_config/<Device-name>/vnf_mgmt_br.json</filename></para> | ||
776 | </listitem> | ||
777 | |||
778 | <listitem> | ||
779 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/sfc_br.json</filename></para> | ||
780 | </listitem> | ||
781 | |||
782 | <listitem> | ||
783 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/wan_br.json</filename></para> | ||
784 | </listitem> | ||
785 | |||
786 | <listitem> | ||
787 | <para><filename><AF-TH-install-dir>/lab_config/<Device-name>/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><AF-TH-install-dir>/lab_config/inteld1521-1</literal> | ||
794 | and | ||
795 | <literal><AF-TH-install-dir>/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><AF-TH-install-dir>/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><AF-TH-install-dir>/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><AF-TH-install-dir>/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 | <site1_lan-ip> ---> <site2_lan-ip> | ||
847 | LAN-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 | ||
4 | BOOK_VER ?= $(REL_VER)-dev | ||
5 | |||
6 | DOCBOOK_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 | |||
8 | BOOKPACKAGES := book-enea-nfv-access-system-test-specification | ||
9 | BOOKDESC_$(BOOKPACKAGES) := "Enea NFV Access $(PROD_VER) System Test Specification" | ||
10 | BOOKDEFAULTCONDITION := $(DEFAULTCONDITIONS) | ||