diff options
3 files changed, 115 insertions, 121 deletions
diff --git a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/automation_framework_test_harness.xml b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/automation_framework_test_harness.xml index f32e5b7..888db4a 100644 --- a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/automation_framework_test_harness.xml +++ b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/automation_framework_test_harness.xml | |||
| @@ -95,8 +95,7 @@ Options: | |||
| 95 | Fortigate <emphasis role="bold">deployment</emphasis> scenario | 95 | Fortigate <emphasis role="bold">deployment</emphasis> scenario |
| 96 | <filename>fortigateDeploy.json</filename>:</para> | 96 | <filename>fortigateDeploy.json</filename>:</para> |
| 97 | 97 | ||
| 98 | <para><programlisting> | 98 | <para><programlisting>[ |
| 99 | [ | ||
| 100 | { | 99 | { |
| 101 | "config": "config/waitDeviceUp.json", | 100 | "config": "config/waitDeviceUp.json", |
| 102 | "module": "../device/waitDeviceUp.py" | 101 | "module": "../device/waitDeviceUp.py" |
| @@ -121,15 +120,13 @@ Options: | |||
| 121 | "config": "config/controlVNFI.json", | 120 | "config": "config/controlVNFI.json", |
| 122 | "module": "../vnf/controlVNFI.py" | 121 | "module": "../vnf/controlVNFI.py" |
| 123 | } | 122 | } |
| 124 | ] | 123 | ]</programlisting></para> |
| 125 | </programlisting></para> | ||
| 126 | 124 | ||
| 127 | <para>Below is a sample unit-test configuration file, describing the | 125 | <para>Below is a sample unit-test configuration file, describing the |
| 128 | Fortigate <emphasis role="bold">cleanup</emphasis> scenario | 126 | Fortigate <emphasis role="bold">cleanup</emphasis> scenario |
| 129 | <filename>fortigateCleanup.json</filename>:</para> | 127 | <filename>fortigateCleanup.json</filename>:</para> |
| 130 | 128 | ||
| 131 | <programlisting> | 129 | <programlisting>[ |
| 132 | [ | ||
| 133 | { | 130 | { |
| 134 | "config": "config/destroyVNFI.json", | 131 | "config": "config/destroyVNFI.json", |
| 135 | "module": "../vnf/destroyVNFI.py" | 132 | "module": "../vnf/destroyVNFI.py" |
| @@ -146,8 +143,7 @@ Options: | |||
| 146 | "config": "config/offboardVNF.json", | 143 | "config": "config/offboardVNF.json", |
| 147 | "module": "../vnf/offboardVNF.py" | 144 | "module": "../vnf/offboardVNF.py" |
| 148 | } | 145 | } |
| 149 | ] | 146 | ]</programlisting> |
| 150 | </programlisting> | ||
| 151 | 147 | ||
| 152 | <para>The <literal>config</literal> key contains the path to the test | 148 | <para>The <literal>config</literal> key contains the path to the test |
| 153 | case's configuration file.</para> | 149 | case's configuration file.</para> |
| @@ -162,9 +158,8 @@ Options: | |||
| 162 | <para>Unit-test behavior can be tweaked through setting any of the | 158 | <para>Unit-test behavior can be tweaked through setting any of the |
| 163 | following options. This is done through the | 159 | following options. This is done through the |
| 164 | <filename>eneaUcpeMgr.py</filename> file:</para> | 160 | <filename>eneaUcpeMgr.py</filename> file:</para> |
| 165 | 161 | ||
| 166 | <programlisting> | 162 | <programlisting># Defaults for the framework |
| 167 | # Defaults for the framework | ||
| 168 | username = "admin" | 163 | username = "admin" |
| 169 | password = "admin" | 164 | password = "admin" |
| 170 | host = None | 165 | host = None |
| @@ -189,105 +184,105 @@ consoleLoggingLevel = logging.INFO | |||
| 189 | </programlisting> | 184 | </programlisting> |
| 190 | 185 | ||
| 191 | <table> | 186 | <table> |
| 192 | <title>eneaUcpeMgr.py Options</title> | 187 | <title>eneaUcpeMgr.py Options</title> |
| 193 | 188 | ||
| 194 | <tgroup cols="2"> | 189 | <tgroup cols="2"> |
| 195 | <colspec align="left" /> | 190 | <colspec align="left" /> |
| 196 | 191 | ||
| 197 | <colspec colwidth="2*" /> | 192 | <colspec colwidth="2*" /> |
| 198 | 193 | ||
| 199 | <colspec colwidth="5*" /> | 194 | <colspec colwidth="5*" /> |
| 200 | 195 | ||
| 201 | <thead> | 196 | <thead> |
| 202 | <row> | 197 | <row> |
| 203 | <entry align="center">Option</entry> | 198 | <entry align="center">Option</entry> |
| 204 | 199 | ||
| 205 | <entry align="center">Description</entry> | 200 | <entry align="center">Description</entry> |
| 206 | </row> | 201 | </row> |
| 207 | </thead> | 202 | </thead> |
| 208 | 203 | ||
| 209 | <tbody> | 204 | <tbody> |
| 210 | <row> | 205 | <row> |
| 211 | <entry><literal>username</literal></entry> | 206 | <entry><literal>username</literal></entry> |
| 212 | 207 | ||
| 213 | <entry>The user authentication used to log into the uCPE | 208 | <entry>The user authentication used to log into the uCPE |
| 214 | Manager. This can be overwritten by setting the Python | 209 | Manager. This can be overwritten by setting the Python |
| 215 | unit-test suite command line option | 210 | unit-test suite command line option |
| 216 | <literal>-u</literal>.</entry> | 211 | <literal>-u</literal>.</entry> |
| 217 | </row> | 212 | </row> |
| 218 | 213 | ||
| 219 | <row> | 214 | <row> |
| 220 | <entry><literal>password</literal></entry> | 215 | <entry><literal>password</literal></entry> |
| 221 | 216 | ||
| 222 | <entry>The password used to log into the uCPE Manager. This | 217 | <entry>The password used to log into the uCPE Manager. This |
| 223 | can be overwritten by setting the Python unit-test suite | 218 | can be overwritten by setting the Python unit-test suite |
| 224 | command line option <literal>-p</literal>.</entry> | 219 | command line option <literal>-p</literal>.</entry> |
| 225 | </row> | 220 | </row> |
| 226 | 221 | ||
| 227 | <row> | 222 | <row> |
| 228 | <entry><literal>host</literal></entry> | 223 | <entry><literal>host</literal></entry> |
| 229 | 224 | ||
| 230 | <entry>The IP address of the uCPE Manager host. This can be | 225 | <entry>The IP address of the uCPE Manager host. This can be |
| 231 | overwritten by setting the Python unit-test suite command | 226 | overwritten by setting the Python unit-test suite command line |
| 232 | line option <literal>-H</literal>.</entry> | 227 | option <literal>-H</literal>.</entry> |
| 233 | </row> | 228 | </row> |
| 234 | 229 | ||
| 235 | <row> | 230 | <row> |
| 236 | <entry><literal>devicename</literal></entry> | 231 | <entry><literal>devicename</literal></entry> |
| 237 | 232 | ||
| 238 | <entry>The name of the vCPE agent against which tests will | 233 | <entry>The name of the vCPE agent against which tests will be |
| 239 | be performed. This can be overwritten by setting the Python | 234 | performed. This can be overwritten by setting the Python |
| 240 | unit-test suite command line option | 235 | unit-test suite command line option |
| 241 | <literal>-n</literal>.</entry> | 236 | <literal>-n</literal>.</entry> |
| 242 | </row> | 237 | </row> |
| 243 | 238 | ||
| 244 | <row> | 239 | <row> |
| 245 | <entry><literal>ftpUsername</literal></entry> | 240 | <entry><literal>ftpUsername</literal></entry> |
| 246 | 241 | ||
| 247 | <entry>The user authentication used for the FTP connection | 242 | <entry>The user authentication used for the FTP connection |
| 248 | when onboarding a VNF image. This can be overwritten by | 243 | when onboarding a VNF image. This can be overwritten by |
| 249 | setting the Python script command line option | 244 | setting the Python script command line option |
| 250 | <literal>-f</literal>.</entry> | 245 | <literal>-f</literal>.</entry> |
| 251 | </row> | 246 | </row> |
| 252 | 247 | ||
| 253 | <row> | 248 | <row> |
| 254 | <entry><literal>ftpPassword</literal></entry> | 249 | <entry><literal>ftpPassword</literal></entry> |
| 255 | 250 | ||
| 256 | <entry>The password used for the FTP connection when | 251 | <entry>The password used for the FTP connection when |
| 257 | onboarding a VNF image. This can be overwritten by setting | 252 | onboarding a VNF image. This can be overwritten by setting the |
| 258 | the Python script command line option | 253 | Python script command line option |
| 259 | <literal><literal>-w</literal></literal>.</entry> | 254 | <literal><literal>-w</literal></literal>.</entry> |
| 260 | </row> | 255 | </row> |
| 261 | 256 | ||
| 262 | <row> | 257 | <row> |
| 263 | <entry><literal>ftpPort</literal></entry> | 258 | <entry><literal>ftpPort</literal></entry> |
| 264 | 259 | ||
| 265 | <entry>The port used for the FTP connection when onboarding | 260 | <entry>The port used for the FTP connection when onboarding a |
| 266 | a VNF image. This can be overwritten by setting the Python | 261 | VNF image. This can be overwritten by setting the Python |
| 267 | script command line option <literal>-P</literal>.</entry> | 262 | script command line option <literal>-P</literal>.</entry> |
| 268 | </row> | 263 | </row> |
| 269 | 264 | ||
| 270 | <row> | 265 | <row> |
| 271 | <entry><literal>failfast</literal></entry> | 266 | <entry><literal>failfast</literal></entry> |
| 272 | 267 | ||
| 273 | <entry>Describes the unit-test execution behavior on the | 268 | <entry>Describes the unit-test execution behavior on the first |
| 274 | first error or failure encountered.</entry> | 269 | error or failure encountered.</entry> |
| 275 | </row> | 270 | </row> |
| 276 | 271 | ||
| 277 | <row> | 272 | <row> |
| 278 | <entry><literal>fileLoggingLevel</literal></entry> | 273 | <entry><literal>fileLoggingLevel</literal></entry> |
| 279 | 274 | ||
| 280 | <entry>Sets the file logging level.</entry> | 275 | <entry>Sets the file logging level.</entry> |
| 281 | </row> | 276 | </row> |
| 282 | 277 | ||
| 283 | <row> | 278 | <row> |
| 284 | <entry><literal>consoleLoggingLevel</literal></entry> | 279 | <entry><literal>consoleLoggingLevel</literal></entry> |
| 285 | 280 | ||
| 286 | <entry>Sets the console logging level.</entry> | 281 | <entry>Sets the console logging level.</entry> |
| 287 | </row> | 282 | </row> |
| 288 | </tbody> | 283 | </tbody> |
| 289 | </tgroup> | 284 | </tgroup> |
| 290 | </table> | 285 | </table> |
| 291 | </section> | 286 | </section> |
| 292 | 287 | ||
| 293 | <section id="ut_suite_log"> | 288 | <section id="ut_suite_log"> |
| @@ -323,18 +318,14 @@ NOTSET 0</programlisting></para> | |||
| 323 | running the Fortigate <emphasis role="bold">deployment</emphasis> | 318 | running the Fortigate <emphasis role="bold">deployment</emphasis> |
| 324 | scenario:</para> | 319 | scenario:</para> |
| 325 | 320 | ||
| 326 | <programlisting> | 321 | <programlisting>$ python unittestSuite.py -u admin -p admin -H localhost -n intelc3850-2 -s |
| 327 | $ python unittestSuite.py -u admin -p admin -H localhost -n intelc3850-2 -s | ||
| 328 | fortigateDeploy.json -d "Fortigate deployment scenario" | 322 | fortigateDeploy.json -d "Fortigate deployment scenario" |
| 329 | </programlisting> | 323 | </programlisting> |
| 330 | 324 | ||
| 331 | <para>Setting the console logging level to DEBUG:</para> | 325 | <para>Setting the console logging level to DEBUG:</para> |
| 332 | 326 | ||
| 333 | <para><programlisting>consoleLoggingLevel = logging.DEBUG</programlisting> | 327 | <para><programlisting>consoleLoggingLevel = logging.DEBUG</programlisting> |
| 334 | <emphasis role="bold">Expected Output:</emphasis> | 328 | <emphasis role="bold">Expected Output:</emphasis> <programlisting>2019-03-07 18:03:20,791 - DEBUG: Started logging |
| 335 | |||
| 336 | <programlisting> | ||
| 337 | 2019-03-07 18:03:20,791 - DEBUG: Started logging | ||
| 338 | 329 | ||
| 339 | Running Fortigate deployment scenario... | 330 | Running Fortigate deployment scenario... |
| 340 | 331 | ||
| @@ -468,9 +459,8 @@ OK</programlisting></para> | |||
| 468 | <para>Below you'll find sample unit-test command line options for | 459 | <para>Below you'll find sample unit-test command line options for |
| 469 | running the Fortigate <emphasis role="bold">cleanup</emphasis> | 460 | running the Fortigate <emphasis role="bold">cleanup</emphasis> |
| 470 | scenario:</para> | 461 | scenario:</para> |
| 471 | 462 | ||
| 472 | <programlisting> | 463 | <programlisting>$ python unittestSuite.py -u admin -p admin -H localhost -n intelc3850-2 -s |
| 473 | $ python unittestSuite.py -u admin -p admin -H localhost -n intelc3850-2 -s | ||
| 474 | fortigateCleanup.json -d "Fortigate cleanup scenario" | 464 | fortigateCleanup.json -d "Fortigate cleanup scenario" |
| 475 | </programlisting> | 465 | </programlisting> |
| 476 | 466 | ||
| @@ -802,8 +792,7 @@ Mandatory options: | |||
| 802 | <para>The <literal>getEventsForUcpe</literal> Python module can be | 792 | <para>The <literal>getEventsForUcpe</literal> Python module can be |
| 803 | executed individually by running the following command:</para> | 793 | executed individually by running the following command:</para> |
| 804 | 794 | ||
| 805 | <programlisting> | 795 | <programlisting>$ python getEventsForUcpe.py -H localhost -f \ |
| 806 | $ python getEventsForUcpe.py -H localhost -f \ | ||
| 807 | ../../lab_config/intelc3850-2/intelc3850-2.json | 796 | ../../lab_config/intelc3850-2/intelc3850-2.json |
| 808 | 797 | ||
| 809 | 2019-07-04 13:48:31,289 - DEBUG: Started logging | 798 | 2019-07-04 13:48:31,289 - DEBUG: Started logging |
| @@ -818,8 +807,7 @@ Events on device: intelc3850-2 and severity: 1000 | |||
| 818 | 2019-07-04 09:57:40.042 | 807 | 2019-07-04 09:57:40.042 |
| 819 | 2019-07-04 13:48:31,469 - DEBUG: Dumping 0 events | 808 | 2019-07-04 13:48:31,469 - DEBUG: Dumping 0 events |
| 820 | 2019-07-04 13:48:31,469 - INFO: Done | 809 | 2019-07-04 13:48:31,469 - INFO: Done |
| 821 | 2019-07-04 13:48:31,488 - DEBUG: Logging out and exiting... | 810 | 2019-07-04 13:48:31,488 - DEBUG: Logging out and exiting... </programlisting> |
| 822 | </programlisting> | ||
| 823 | </section> | 811 | </section> |
| 824 | </section> | 812 | </section> |
| 825 | 813 | ||
| @@ -1826,8 +1814,8 @@ fortigateFWInstance | |||
| 1826 | <section id="upload_vnf_image"> | 1814 | <section id="upload_vnf_image"> |
| 1827 | <title>Uploading a NFV Access image onto the Enea uCPE Manager</title> | 1815 | <title>Uploading a NFV Access image onto the Enea uCPE Manager</title> |
| 1828 | 1816 | ||
| 1829 | <para>Steps and options on how to Upload a NFV Access image onto the Enea uCPE | 1817 | <para>Steps and options on how to Upload a NFV Access image onto the |
| 1830 | Manager are described below.</para> | 1818 | Enea uCPE Manager are described below.</para> |
| 1831 | 1819 | ||
| 1832 | <section id="script_opts_upload"> | 1820 | <section id="script_opts_upload"> |
| 1833 | <title>Script Options</title> | 1821 | <title>Script Options</title> |
| @@ -1861,9 +1849,9 @@ Options: | |||
| 1861 | <section id="json_upload"> | 1849 | <section id="json_upload"> |
| 1862 | <title>Configuring the JSON File</title> | 1850 | <title>Configuring the JSON File</title> |
| 1863 | 1851 | ||
| 1864 | <para>The JSON configuration file needed to upload a NFV Access image should | 1852 | <para>The JSON configuration file needed to upload a NFV Access image |
| 1865 | contain a list of dictionaries. Each dictionary indicates the test | 1853 | should contain a list of dictionaries. Each dictionary indicates the |
| 1866 | case name and the test case arguments passed to the | 1854 | test case name and the test case arguments passed to the |
| 1867 | <filename>uploadImage</filename> Python module.</para> | 1855 | <filename>uploadImage</filename> Python module.</para> |
| 1868 | 1856 | ||
| 1869 | <para><emphasis role="bold">Sample unit-test JSON file | 1857 | <para><emphasis role="bold">Sample unit-test JSON file |
| @@ -1897,10 +1885,11 @@ Options: | |||
| 1897 | </section> | 1885 | </section> |
| 1898 | 1886 | ||
| 1899 | <section id="delete_vnf_image"> | 1887 | <section id="delete_vnf_image"> |
| 1900 | <title>Deleting a NFV Access image file from the Enea uCPE Manager</title> | 1888 | <title>Deleting a NFV Access image file from the Enea uCPE |
| 1889 | Manager</title> | ||
| 1901 | 1890 | ||
| 1902 | <para>Steps and options on how to Delete a NFV Access image from the Enea uCPE | 1891 | <para>Steps and options on how to Delete a NFV Access image from the |
| 1903 | Manager are described below.</para> | 1892 | Enea uCPE Manager are described below.</para> |
| 1904 | 1893 | ||
| 1905 | <section id="script_opts_deleteupload"> | 1894 | <section id="script_opts_deleteupload"> |
| 1906 | <title>Script Options</title> | 1895 | <title>Script Options</title> |
| @@ -1931,9 +1920,9 @@ Options: | |||
| 1931 | <section id="json_delete_upload"> | 1920 | <section id="json_delete_upload"> |
| 1932 | <title>Configuring the JSON File</title> | 1921 | <title>Configuring the JSON File</title> |
| 1933 | 1922 | ||
| 1934 | <para>The JSON configuration file needed to delete a NFV Access image should | 1923 | <para>The JSON configuration file needed to delete a NFV Access image |
| 1935 | contain a list of dictionaries. Each dictionary indicates the test | 1924 | should contain a list of dictionaries. Each dictionary indicates the |
| 1936 | case name and the test case arguments passed to the | 1925 | test case name and the test case arguments passed to the |
| 1937 | <filename>deleteUpgradeFile</filename> Python module.</para> | 1926 | <filename>deleteUpgradeFile</filename> Python module.</para> |
| 1938 | 1927 | ||
| 1939 | <para><emphasis role="bold">Sample unit-test JSON file | 1928 | <para><emphasis role="bold">Sample unit-test JSON file |
| @@ -1970,11 +1959,12 @@ image was successfully removed | |||
| 1970 | </section> | 1959 | </section> |
| 1971 | 1960 | ||
| 1972 | <section id="install_activate_vnf_image"> | 1961 | <section id="install_activate_vnf_image"> |
| 1973 | <title>Installing and activating a NFV Access image on an uCPE device from the | 1962 | <title>Installing and activating a NFV Access image on an uCPE device |
| 1974 | Enea uCPE Manager</title> | 1963 | from the Enea uCPE Manager</title> |
| 1975 | 1964 | ||
| 1976 | <para>Steps and options on how to Install and Activate a NFV Access image on an | 1965 | <para>Steps and options on how to Install and Activate a NFV Access |
| 1977 | uCPE device from the Enea uCPE Manager are described below.</para> | 1966 | image on an uCPE device from the Enea uCPE Manager are described |
| 1967 | below.</para> | ||
| 1978 | 1968 | ||
| 1979 | <section id="script_opts_install_activate"> | 1969 | <section id="script_opts_install_activate"> |
| 1980 | <title>Script Options</title> | 1970 | <title>Script Options</title> |
| @@ -2010,10 +2000,10 @@ Options: | |||
| 2010 | <section id="json_install_activate"> | 2000 | <section id="json_install_activate"> |
| 2011 | <title>Configuring the JSON File</title> | 2001 | <title>Configuring the JSON File</title> |
| 2012 | 2002 | ||
| 2013 | <para>The JSON configuration file needed to install and activate a NFV Access | 2003 | <para>The JSON configuration file needed to install and activate a NFV |
| 2014 | image on a uCPE device from the Enea uCPE Manager should contain a | 2004 | Access image on a uCPE device from the Enea uCPE Manager should |
| 2015 | list of dictionaries. Each dictionary indicates the test case name and | 2005 | contain a list of dictionaries. Each dictionary indicates the test |
| 2016 | the test case arguments passed to the | 2006 | case name and the test case arguments passed to the |
| 2017 | <filename>installAndActivate</filename> Python module.</para> | 2007 | <filename>installAndActivate</filename> Python module.</para> |
| 2018 | 2008 | ||
| 2019 | <para><emphasis role="bold">Sample unit-test JSON file | 2009 | <para><emphasis role="bold">Sample unit-test JSON file |
| @@ -2193,4 +2183,4 @@ Options: | |||
| 2193 | <filename>ansible.log</filename> and <filename>debug.log</filename> files, | 2183 | <filename>ansible.log</filename> and <filename>debug.log</filename> files, |
| 2194 | respectively.</para> | 2184 | respectively.</para> |
| 2195 | </section> | 2185 | </section> |
| 2196 | </chapter> | 2186 | </chapter> \ No newline at end of file |
diff --git a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/components.xml b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/components.xml index 1de8454..2917b1a 100644 --- a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/components.xml +++ b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/components.xml | |||
| @@ -49,7 +49,7 @@ | |||
| 49 | 49 | ||
| 50 | <note><para>Before running any use case with the Automation Framework or | 50 | <note><para>Before running any use case with the Automation Framework or |
| 51 | the Test Harness, make sure the uCPE device(s) have been added to | 51 | the Test Harness, make sure the uCPE device(s) have been added to |
| 52 | the uCPE Manager, as needed.</para></note> | 52 | the uCPE Manager.</para></note> |
| 53 | 53 | ||
| 54 | <para>Adding a VcpeAgent device can be done via two methods:</para> | 54 | <para>Adding a VcpeAgent device can be done via two methods:</para> |
| 55 | 55 | ||
diff --git a/doc/book-enea-nfv-access-release-info/doc/known_bugs_and_limitations.xml b/doc/book-enea-nfv-access-release-info/doc/known_bugs_and_limitations.xml index 9c1828d..961a281 100644 --- a/doc/book-enea-nfv-access-release-info/doc/known_bugs_and_limitations.xml +++ b/doc/book-enea-nfv-access-release-info/doc/known_bugs_and_limitations.xml | |||
| @@ -43,6 +43,8 @@ | |||
| 43 | fail and some resources will not be removed from the machine. Reverting | 43 | fail and some resources will not be removed from the machine. Reverting |
| 44 | resources in the case of a failed uninstall is not implemented.</para> | 44 | resources in the case of a failed uninstall is not implemented.</para> |
| 45 | </listitem> | 45 | </listitem> |
| 46 | |||
| 47 | <listitem><remark>ELCCR-454</remark>Only the default database is supported, any requests for alternative databases are custom adaptations.</listitem> | ||
| 46 | 48 | ||
| 47 | <listitem> | 49 | <listitem> |
| 48 | <para><remark>ELCCR-371</remark>A software image for NFV Access runs | 50 | <para><remark>ELCCR-371</remark>A software image for NFV Access runs |
| @@ -64,6 +66,8 @@ | |||
| 64 | one of the OVS bridges it is connected to, the VNF instance cannot be | 66 | one of the OVS bridges it is connected to, the VNF instance cannot be |
| 65 | deleted before removing the appropriate flows.</para> | 67 | deleted before removing the appropriate flows.</para> |
| 66 | </listitem> | 68 | </listitem> |
| 69 | |||
| 70 | <listitem><remark>ELCCR-527</remark>When uploading a file, if the user cancels the upload, the upload window must be closed and reopened in order for the next upload to work.</listitem> | ||
| 67 | 71 | ||
| 68 | <listitem> | 72 | <listitem> |
| 69 | <para><remark>LXCR-9088</remark>Automation Framework and Test Harness | 73 | <para><remark>LXCR-9088</remark>Automation Framework and Test Harness |
