Merge "Put vnf_test pass if more than 80% of vnf test result are OK"
[functest.git] / docs / testing / user / configguide / configguide.rst
index 9a17497..d19939a 100644 (file)
@@ -1,24 +1,30 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. SPDX-License-Identifier: CC-BY-4.0
 
+Installation and configuration (Ubuntu)
+=======================================
+
+The historical docker file is based on Ubuntu. It has been maintained for
+Euphrates.
 
 Pulling the Docker image
 ------------------------
 Pull the Functest Docker image ('opnfv/functest') from the public
-dockerhub registry under the OPNFV account: [dockerhub_], with the
+dockerhub registry under the OPNFV account: [̀`dockerhub`_], with the
 following docker command::
 
   docker pull opnfv/functest:<TagIdentifier>
 
 where <TagIdentifier> identifies a release of the Functest docker
-container image in the public dockerhub registry. There are many tags
+container image in the public Dockerhub registry. There are many tags
 created automatically by the CI mechanisms, and you must ensure you
 pull an image with the **correct tag** to match the OPNFV software
 release installed in your environment. All available tagged images can
 be seen from location [FunctestDockerTags_]. For example, when running
 on the first official release of the OPNFV Danube system platform,
-tag "danube.1.0" is needed. Pulling other tags might cause some
-problems while running the tests.
+tag "danube.1.0" is needed. For the second and third releases, the tag
+"danube.2.0" and "danube.3.0" can be used respectively.
+Pulling other tags might cause some problems while running the tests.
 Docker images pulled without a tag specifier bear the implicitly
 assigned label "latest". If you need to specifically pull the latest
 Functest docker image, then omit the tag argument::
@@ -29,63 +35,39 @@ After pulling the Docker image, check that it is available with the
 following docker command::
 
   [functester@jumphost ~]$ docker images
-  REPOSITORY     TAG             IMAGE ID      CREATED      SIZE
-  opnfv/functest latest          8cd6683c32ae  2 weeks ago  1.321 GB
-  opnfv/functest danube.1.0    13fa54a1b238  4 weeks ago  1.29 GB
-  opnfv/functest colorado.1.0    94b78faa94f7  9 weeks ago  968 MB
+  REPOSITORY     TAG             IMAGE ID      CREATED       SIZE
+  opnfv/functest latest          8cd6683c32ae  2 weeks ago   1.321 GB
+  opnfv/functest danube.2.0      d2c174a91911  7 minutes ago 1.471 GB
+  opnfv/functest danube.1.0      13fa54a1b238  4 weeks ago   1.29 GB
 
 The Functest docker container environment can -in principle- be also
 used with non-OPNFV official installers (e.g. 'devstack'), with the
 **disclaimer** that support for such environments is outside of the
 scope and responsibility of the OPNFV project.
 
+Please note that alpine dockers have been introduced in Euphrates. See alpine
+section for details.
+
 Accessing the Openstack credentials
 -----------------------------------
-OpenStack credentials are mandatory and can be retrieved in different
-ways. From inside the running Functest docker container the
-"functest env prepare" command will automatically look for the
-Openstack credentials file "/home/opnfv/functest/conf/openstack.creds"
-and retrieve it unless the file already exists. This Functest
-environment preparation step is described later in this document.
-
-WARNING: When the installer type is "joid" you have to have the
-credentials file inside the running container **before** initiating the
-functest environment preparation. For that reason you have to choose
-either one of the options below, since the automated copying does not
-work for "joid".
-
-You can also specifically pass in the needed file prior to running the
-environment preparation either:
-
-  * by using the -v option when creating the Docker container. This is
-    referred to in docker documentation as "Bind Mounting". See the
-    usage of this parameter in the following chapter.
-  * or creating a local file '/home/opnfv/functest/conf/openstack.creds'
-    inside the running container with the credentials in it. Consult
+OpenStack credentials are mandatory and must be provided to Functest.
+When running the command "functest env prepare", the framework  will
+automatically look for the Openstack credentials file
+"/home/opnfv/functest/conf/openstack.creds" and will exit with
+error if it is not present or it is empty.
+
+There are 2 ways to provide that file:
+
+  * by using a Docker volume with -v option when creating the Docker container.
+    This is referred to in docker documentation as "Bind Mounting".
+    See the usage of this parameter in the following chapter.
+  * or creating manually the file '/home/opnfv/functest/conf/openstack.creds'
+    inside the running container and pasting the credentials in it. Consult
     your installer guide for further details. This is however not
     instructed in this document.
 
-NOTE: When the installer type is "fuel" and virtualized deployment
-is used, there you have to explicitly fetch the credentials file
-executing the following sequence
-
-  #. Create a container as described in next chapter but do not
-     "Bind Mount" the credentials
-  #. Log in to container and execute the following command. Replace
-     the IP with installer address after the "-a" parameter::
-
-       $REPOS_DIR/releng/utils/fetch_os_creds.sh \
-       -d /home/opnfv/functest/conf/openstack.creds \
-       -i fuel \
-       -a 10.20.0.2 \
-       -v
-       ( -d specifies the full path to the Openstack credential file
-       -i specifies the INSTALLER_TYPE
-       -a specifies the INSTALLER_IP
-       -v indicates a virtualized environment and takes no arguments )
-
-  #. Continue with your testing, initiate functest environment
-     preparation, run tests etc.
+There is a default environment variable in the Functest container **$creds**
+that points to the credentials absolute path to help the user with this task.
 
 In proxified environment you may need to change the credentials file.
 There are some tips in chapter: `Proxy support`_
@@ -108,9 +90,10 @@ recommended parameters for invoking docker container
 
        -e "INSTALLER_IP=<Specific IP Address>"
 
-       This IP is needed to fetch RC file from deployment, fetch logs, ...
-       If not provided, there is no way to fetch the RC file. It must be
-       provided manually as a volume
+       These two env variables are useful extract some information
+       from the deployment. However, for some test cases like
+       SFC or Barometer they are mandatory since the tests
+       need to access the installer node and the deployment.
 
   #. Credentials for accessing the Openstack.
      Most convenient way of passing them to container is by having a
@@ -137,7 +120,7 @@ recommended parameters for invoking docker container
        -e "DEPLOY_SCENARIO=os-<controller>-<nfv_feature>-<ha_mode>"
        where:
        os = OpenStack (No other VIM choices currently available)
-       controller is one of ( nosdn | odl_l2 | odl_l3 | onos | ocl)
+       controller is one of ( nosdn | odl_l2 | odl_l3 )
        nfv_feature is one or more of ( ovs | kvm | sfc | bgpvpn | nofeature )
                 If several features are pertinent then use the underscore
                 character '_' to separate each feature (e.g. ovs_kvm)
@@ -210,8 +193,11 @@ when performing manual test scenarios::
                       text can be sent to the test results file / log files
                       and also to the standard console output.
 
+Installer Tips
+--------------
+
 Apex Installer Tips
--------------------
+^^^^^^^^^^^^^^^^^^^
 Some specific tips are useful for the Apex Installer case. If not using
 Apex Installer; ignore this section.
 
@@ -257,7 +243,7 @@ illustration purposes::
   opnfv/functest /bin/bash
 
 Compass installer local development env usage Tips
---------------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 In the compass-functest local test case check and development environment,
 in order to get openstack service inside the functest container, some
 parameters should be configured during container creation, which are
@@ -279,15 +265,22 @@ Tag omitted means the latest docker image::
 
 To make a file used for the environment, such as 'functest-docker-env'::
 
-    OS_AUTH_URL=http://172.16.1.222:35357/v2.0
+    CINDER_ENDPOINT_TYPE=publicURL
+    NOVA_ENDPOINT_TYPE=publicURL
+    OS_ENDPOINT_TYPE=publicURL
+    OS_INTERFACE=publicURL
     OS_USERNAME=admin
-    OS_PASSWORD=console
-    OS_TENANT_NAME=admin
-    OS_VOLUME_API_VERSION=2
+    OS_PASSWORD='990232e0885da343ac805523322d'
     OS_PROJECT_NAME=admin
-    INSTALLER_TYPE=compass
-    INSTALLER_IP=192.168.200.2
-    EXTERNAL_NETWORK=ext-net
+    OS_TENANT_NAME=admin
+    OS_AUTH_URL=https://192.16.1.222:5000/v3
+    OS_NO_CACHE=1
+    OS_USER_DOMAIN_NAME=Default
+    OS_PROJECT_DOMAIN_NAME=Default
+    OS_REGION_NAME=RegionOne
+    OS_IDENTITY_API_VERSION=3
+    OS_AUTH_VERSION=3
+
 
 Note: please adjust the content according to the environment, such as
 'TENANT_ID' maybe used for some special cases.
@@ -309,7 +302,7 @@ to attach the 'Up' status Functest container and start bash mode::
 
    docker exec -it <Functest_Container_Name> bash
 
-4, Functest environemnt preparation and check
+4, Functest environment preparation and check
 
 To see the Section below `Preparing the Functest environment`_.
 
@@ -319,31 +312,20 @@ Inside the Functest docker container, the following directory structure
 should now be in place::
 
   `-- home
-      `-- opnfv
-        |-- functest
-        |   |-- conf
-        |   |-- data
-        |   `-- results
-        `-- repos
-            |-- bgpvpn
-            |-- copper
-            |-- doctor
-            |-- domino
-            |-- functest
-            |-- kingbird
-            |-- odl_test
-            |-- onos
-            |-- parser
-            |-- promise
-            |-- rally
-            |-- refstack-client
-            |-- releng
-            |-- sdnvpn
-            |-- securityscanning
-            |-- sfc
-            |-- tempest
-            |-- vims_test
-            `-- vnfs
+    |  `-- opnfv
+    |   |-- functest
+    |   |   |-- conf
+    |   |   |-- data
+    |   |   |-- images
+    |   |   `-- results
+    |   `-- repos
+    |       |-- doctor
+    |       `-- vnfs
+   -- src
+       |-- tempest
+       |-- vims-test
+       |-- odl_test
+       `-- fds
 
 Underneath the '/home/opnfv/' directory, the Functest docker container
 includes two main directories:
@@ -353,97 +335,143 @@ includes two main directories:
     the **data** directory stores a 'cirros' test image used in some
     functional tests and the **results** directory stores some temporary
     result log files
-  * The **repos** directory holds various repositories. The directory
-    '/home/opnfv/repos/functest' is used to prepare the needed Functest
-    environment and to run the tests. The other repository directories
+  * The **repos** directory holds various repositories. The directories
     are used for the installation of the needed tooling (e.g. rally) or
     for the retrieval of feature projects scenarios (e.g. promise)
 
 The structure under the **functest** repository can be described as
 follows::
 
-  . |-- INFO
-    |-- LICENSE
-    |-- requirements.txt
-    |-- run_unit_tests.sh
-    |-- setup.py
-    |-- test-requirements.txt
-    |-- commons
-    |   |-- ims
-    |   |-- mobile
-    |   `--traffic-profile-guidelines.rst
-    |-- docker
-    |   |-- Dockerfile
-    |   |-- config_install_env.sh
-    |   `-- docker_remote_api
-    |-- docs
-    |   |-- com
-    |   |-- configguide
-    |   |-- devguide
-    |   |-- images
-    |   |-- internship
-    |   |-- release-notes
-    |   |-- results
-    |   `--userguide
-    |-- functest
-        |-- __init__.py
-        |-- ci
-        |   |-- __init__.py
-        |   |-- check_os.sh
-        |   |-- config_functest.yaml
-        |   |-- config_patch.yaml
-        |   |-- generate_report.py
-        |   |-- prepare_env.py
-        |   |-- run_tests.py
-        |   |-- testcases.yaml
-        |   |-- tier_builder.py
-        |   `-- tier_handler.py
-        |-- cli
-        |   |-- __init__.py
-        |   |-- cli_base.py
-        |   |-- commands
-        |   |-- functest-complete.sh
-        |   `-- setup.py
-        |-- core
-        |   |-- __init__.py
-        |   |-- feature.py
-        |   |-- pytest_suite_runner.py
-        |   |-- testcase.py
-        |   |-- vnf_base.py
-        |-- opnfv_tests
-        |   |-- __init__.py
-        |   |-- features
-        |   |-- mano
-        |   |-- openstack
-        |   |-- sdn
-        |   |-- security_scan
-        |   `-- vnf
-        |-- tests
-        |   |-- __init__.py
-        |   `-- unit
-        `-- utils
-            |-- __init__.py
-            |-- config.py
-            |-- constants.py
-            |-- env.py
-            |-- functest_logger.py
-            |-- functest_utils.py
-            |-- openstack
-            |-- openstack_clean.py
-            |-- openstack_snapshot.py
-            |-- openstack_tacker.py
-            `-- openstack_utils.py
-
-
-    (Note: All *.pyc files removed from above list for brevity...)
-
-We may distinguish several directories, the first level has 4 directories:
-
+  |-- INFO
+  |-- LICENSE
+  |-- api
+  |  `-- apidoc
+  |-- build.sh
+  |-- commons
+  |  |-- docker
+  |  |-- Dockerfile
+  |  |-- Dockerfile.aarch64.patch
+  |  |-- components
+  |  |-- config_install_env.sh
+  |  |-- core
+  |  |-- docker_remote_api
+  |  |-- features
+  |  |-- healthcheck
+  |  |-- smoke
+  |  |-- vnf
+  |  `-- thirdparty-requirements.txt
+  |-- docs
+  |  |-- com
+  |  |-- images
+  |  |-- release
+  |  |  `-- release-notes
+  |  |-- results
+  |  | testing
+  |  |  |-- developer
+  |  |    `-- user
+  |  |      |-- configguide
+  |  |      `-- userguide
+  `-- functest
+    |-- api
+    |  |-- base.py
+    |  |-- server.py
+    |  |-- urls.py
+    |  |-- common
+    |  |  |-- api_utils.py
+    |  |  `-- error.py
+    |  `-- resources
+    |     `-- v1
+    |        |-- creds.py
+    |        |-- envs.py
+    |        |-- testcases.py
+    |        `-- tiers.py
+    |-- ci
+    │   |-- check_deployment.py
+    │   |-- config_aarch64_patch.yaml
+    │   |-- config_functest.yaml
+    │   |-- config_patch.yaml
+    │   |-- download_images.sh
+    │   |-- installer_params.yaml
+    │   |-- logging.ini
+    │   |-- prepare_env.py
+    │   |-- rally_aarch64_patch.conf
+    │   |-- run_tests.py
+    │   |-- testcases.yaml
+    │   |-- tier_builder.py
+    │   `-- tier_handler.py
+    |-- cli
+    │   |-- cli_base.py
+    │   |-- commands
+    │   │   |-- cli_env.py
+    │   │   |-- cli_os.py
+    │   │   |-- cli_testcase.py
+    │   │   `-- cli_tier.py
+    │   |-- functest-complete.sh
+    |-- core
+    │   |-- feature.py
+    │   |-- testcase.py
+    │   |-- unit.py
+    │   `-- vnf.py
+    |-- energy
+    │   |-- energy.py
+    │   `-- energy.pyc
+    |-- opnfv_tests
+    │   |-- mano
+    │   │   |-- orchestra.py
+    │   |-- openstack
+    │   │   |-- rally
+    │   │   |-- refstack_client
+    │   │   |-- snaps
+    │   │   |-- tempest
+    │   │   `-- vping
+    │   |-- sdn
+    │   │    `-- odl
+    │   `-- vnf
+    │       |-- aaa
+    │       |-- ims
+    │       `-- router
+    |-- tests
+    │   `-- unit
+    │       |-- ci
+    │       |-- cli
+    │       |-- core
+    │       |-- energy
+    │       |-- features
+    │       |-- odl
+    │       |-- openstack
+    │       |-- opnfv_tests
+    │       |-- test_utils.py
+    │       |-- utils
+    │       `-- vnf
+    |-- utils
+    |    |-- config.py
+    |    |-- constants.py
+    |    |-- decorators.py
+    |    |-- env.py
+    |    |-- functest_utils.py
+    |    |-- functest_vacation.py
+    |    |-- openstack_clean.py
+    |    |-- openstack_snapshot.py
+    |    |-- openstack_tacker.py
+    |    `-- openstack_utils.py
+  |-- requirements.txt
+  |-- setup.cfg
+  |-- setup.py
+  |-- test-requirements.txt
+  |-- tox.ini
+  |-- upper-constraints.txt
+
+  (Note: All *.pyc files removed from above list for brevity...)
+
+We may distinguish several directories, the first level has 5 directories:
+
+* **api**: This directory is dedicated for the internal Functest API and the API
+  (framework) documentations.
 * **commons**: This directory is dedicated for storage of traffic
   profile or any other test inputs that could be reused by any test
   project.
 * **docker**: This directory includes the needed files and tools to
-  build the Funtest Docker image.
+  build the Functest Docker image.
 * **docs**: This directory includes documentation: Release Notes,
   User Guide, Configuration Guide and Developer Guide.
 * **functest**: This directory contains all the code needed to run
@@ -508,7 +536,7 @@ destroy it::
 
   docker rm -f <CONTAINER_ID>
 
-Check the Docker documentation dockerdocs_ for more information.
+Check the Docker documentation [`dockerdocs`_] for more information.
 
 Preparing the Functest environment
 ----------------------------------
@@ -518,7 +546,7 @@ CLI utility is available to perform the needed environment preparation
 action. Once the environment is prepared, the **functest** CLI utility
 can be used to run different functional tests. The usage of the
 **functest** CLI utility to run tests is described further in the
-Functest User Guide `OPNFV_FuncTestUserGuide`_
+`Functest User Guide`_
 
 Prior to commencing the Functest environment preparation, we can check
 the initial status of the environment. Issue the **functest env status**
@@ -539,7 +567,7 @@ This script will make sure that the requirements to run the tests are
 met and will install the needed libraries and tools by all Functest
 test cases. It should be run only once every time the Functest docker
 container is started from scratch. If you try to run this command, on
-an already prepared enviroment, you will be prompted whether you really
+an already prepared environment, you will be prompted whether you really
 want to continue or not::
 
   functest env prepare
@@ -810,9 +838,63 @@ and install the **docker-engine**. The instructions conclude with a
 "test pull" of a sample "Hello World" docker container. This should now
 work with the above pre-requisite actions.
 
-.. _dockerdocs: https://docs.docker.com/
-.. _dockerhub: https://hub.docker.com/r/opnfv/functest/
-.. _Proxy: https://docs.docker.com/engine/admin/systemd/#http-proxy
-.. _FunctestDockerTags: https://hub.docker.com/r/opnfv/functest/tags/
-.. _InstallDockerCentOS: https://docs.docker.com/engine/installation/linux/centos/
-.. _OPNFV_FuncTestUserGuide: http://artifacts.opnfv.org/functest/docs/userguide/index.html
+
+Installation and Configuration (Alpine)
+=======================================
+
+Introduction to Alpine
+----------------------
+Alpine container have been introduced in Euphrates and released as experimental.
+Alpine allows Functest testing in several very light container and thanks to
+the refactoring on dependency management shoudl allow the creation of light and
+fully customized docker files
+
+Functest Alpine
+---------------
+Docker files are available on the the dockerhub:
+
+  * opnfv/functest-core
+  * opnfv/functest-healthcheck
+  * opnfv/functest-smoke
+  * opnfv/functest-features
+  * opnfv/functest-components
+  * opnfv/functest-vnf
+
+
+Preparing your environment
+--------------------------
+
+cat env::
+
+  INSTALLER_TYPE=XXX
+  INSTALLER_IP=XXX
+  EXTERNAL_NETWORK=XXX
+
+cat openstack.creds::
+
+  export OS_AUTH_URL=XXX
+  export OS_USER_DOMAIN_NAME=XXX
+  export OS_PROJECT_DOMAIN_NAME=XXX
+  export OS_USERNAME=XXX
+  export OS_TENANT_NAME=XXX
+  export OS_PROJECT_NAME=XXX
+  export OS_PASSWORD=XXX
+  export OS_VOLUME_API_VERSION=XXX
+  export OS_IDENTITY_API_VERSION=XXX
+  export OS_IMAGE_API_VERSION=XXX
+
+md5sum images/*md5sum images/*::
+
+  c03e55c22b6fb2127e7de391b488d8d6  `images/CentOS-7-x86_64-GenericCloud.qcow2`_
+  f8ab98ff5e73ebab884d80c9dc9c7290  `images/cirros-0.3.5-x86_64-disk.img`_
+  845c9b0221469f9e0f4d7ea0039ab5f2  `images/ubuntu-14.04-server-cloudimg-amd64-disk1.img`_
+
+.. _`dockerdocs`: https://docs.docker.com/
+.. _`dockerhub`: https://hub.docker.com/r/opnfv/functest/
+.. _`Proxy`: https://docs.docker.com/engine/admin/systemd/#http-proxy
+.. _`FunctestDockerTags`: https://hub.docker.com/r/opnfv/functest/tags/
+.. _`InstallDockerCentOS`: https://docs.docker.com/engine/installation/linux/centos/
+.. _`Functest User Guide`: http://docs.opnfv.org/en/stable-danube/submodules/functest/docs/testing/user/userguide/index.html
+:: _`images/CentOS-7-x86_64-GenericCloud.qcow2` http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
+:: _`images/cirros-0.3.5-x86_64-disk.img` https://cloud-images.ubuntu.com/releases/14.04/release/ubuntu-14.04-server-cloudimg-amd64-disk1.img
+:: _`images/ubuntu-14.04-server-cloudimg-amd64-disk1.img` https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2