.. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 Pulling the Docker image ------------------------ Pull the Functest Docker image ('opnfv/functest') from the public dockerhub registry under the OPNFV account: [dockerhub_], with the following docker command:: docker pull opnfv/functest: where identifies a release of the Functest docker 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 Colorado system platform, tag "colorado.1.0" is needed. 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:: docker pull opnfv/functest 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.611 GB opnfv/functest colorado.1.0 94b78faa94f7 4 weeks ago 874.9 MB hello-world latest 94df4f0ce8a4 7 weeks ago 967 B 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. 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 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. In proxified environment you may need to change the credentials file. There are some tips in chapter: `Proxy support`_ Functest Docker parameters -------------------------- This chapter explains how to run a container for executing functest test suites. Numbered list below explains some details of the recommended parameters for invoking docker container #. It is a good practice to assign a precise container name through the **--name** option. #. Assign parameter for installer type:: -e "INSTALLER_TYPE=" # Use one of following apex, compass, fuel or joid #. Functest needs to know the IP of the installer:: -e "INSTALLER_IP=" #. Credentials for accessing the Openstack. Most convenient way of passing them to container is by having a local copy of the credentials file in Jumphost and then using the **-v** option. In the example we have local file by the name of "overcloudrc" and we are using that as an argument:: -v ~/overcloudrc:/home/opnfv/functest/conf/openstack.creds The credentials file needs to exist in the Docker container under the path: '/home/opnfv/functest/conf/openstack.creds'. **WARNING:** If you are using the Joid installer, you must pass the credentials using the **-v** option: -v /var/lib/jenkins/admin-openrc:/home/opnfv/functest/conf/openstack.creds. See the section `Accessing the Openstack credentials`_ above. #. Passing deployment scenario When running Functest against any of the supported OPNFV scenarios, it is recommended to include also the environment variable **DEPLOY_SCENARIO**. The **DEPLOY_SCENARIO** environment variable is passed with the format:: -e "DEPLOY_SCENARIO=os---" where: os = OpenStack (No other VIM choices currently available) controller is one of ( nosdn | odl_l2 | odl_l3 | onos | ocl) 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) 'nofeature' indicates no NFV feature is deployed ha_mode is one of ( ha | noha ) **NOTE:** Not all possible combinations of "DEPLOY_SCENARIO" are supported. The name passed in to the Functest Docker container must match the scenario used when the actual OPNFV platform was deployed. See release note to see the list of supported scenarios. Putting all above together, when using installer 'fuel' and an invented INSTALLER_IP of '10.20.0.2', the recommended command to create the Functest Docker container is as follows:: docker run --name "FunctestContainer" -it \ -e "INSTALLER_IP=10.20.0.2" \ -e "INSTALLER_TYPE=fuel" \ -e "DEPLOY_SCENARIO=os-odl_l2-ovs_kvm-ha" \ -v ~/overcloudrc:/home/opnfv/functest/conf/openstack.creds \ opnfv/functest /bin/bash After the *run* command, a new prompt appears which means that we are inside the container and ready to move to the next step. For tips on how to set up container with installer Apex, see chapter `Apex Installer Tips`_. Finally, three additional environment variables can also be passed in to the Functest Docker Container, using the -e "=" mechanism. The first two of these are only relevant to Jenkins CI invoked testing and **should not be used** when performing manual test scenarios:: -e "NODE_NAME=" \ -e "BUILD_TAG=" \ -e "CI_DEBUG=" where: = Symbolic name of the POD where the tests are run. Visible in test results files, which are stored to the database. This option is only used when tests are activated under Jenkins CI control. It indicates the POD/hardware where the test has been run. If not specified, then the POD name is defined as "Unknown" by default. DO NOT USE THIS OPTION IN MANUAL TEST SCENARIOS. = Symbolic name of the Jenkins Build Job. Visible in test results files, which are stored to the database. This option is only set when tests are activated under Jenkins CI control. It enables the correlation of test results, which are independently pushed to the results datbase from different Jenkins jobs. DO NOT USE THIS OPTION IN MANUAL TEST SCENARIOS. = "true" or "false" Default = "false", if not specified If "true" is specified, then additional debug trace text can be sent to the test results file / log files and also to the standard conso
/*
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * MIPS SIMD Architecture (MSA) context handling code for KVM.
 *
 * Copyright (C) 2015 Imagination Technologies Ltd.
 */

#include <asm/asm.h>
#include <asm/asm-offsets.h>
#include <asm/asmmacro.h>
#include <asm/regdef.h>

	.set	noreorder
	.set	noat

LEAF(__kvm_save_msa)
	st_d	0,  VCPU_FPR0,  a0
	st_d	1,  VCPU_FPR1,  a0
	st_d	2,  VCPU_FPR2,  a0
	st_d	3,  VCPU_FPR3,  a0
	st_d	4,  VCPU_FPR4,  a0
	st_d	5,  VCPU_FPR5,  a0
	st_d	6,  VCPU_FPR6,  a0
	st_d	7,  VCPU_FPR7,  a0
	st_d	8,  VCPU_FPR8,  a0
	st_d	9,  VCPU_FPR9,  a0
	st_d	10, VCPU_FPR10, a0
	st_d	11, VCPU_FPR11, a0
	st_d	12, VCPU_FPR12, a0
	st_d	13, VCPU_FPR13, a0
	st_d	14, VCPU_FPR14, a0
	st_d	15, VCPU_FPR15, a0
	st_d	16, VCPU_FPR16, a0
	st_d	17, VCPU_FPR17, a0
	st_d	18, VCPU_FPR18, a0
	st_d	19, VCPU_FPR19, a0
	st_d	20, VCPU_FPR20, a0
	st_d	21, VCPU_FPR21, a0
	st_d	22, VCPU_FPR22, a0
	st_d	23, VCPU_FPR23, a0
	st_d	24, VCPU_FPR24, a0
	st_d	25, VCPU_FPR25, a0
	st_d	26, VCPU_FPR26, a0
	st_d	27, VCPU_FPR27, a0
	st_d	28, VCPU_FPR28, a0
	st_d	29, VCPU_FPR29, a0
	st_d	30, VCPU_FPR30, a0
	st_d	31, VCPU_FPR31, a0
	jr	ra
	 nop
	END(__kvm_save_msa)

LEAF(__kvm_restore_msa)
	ld_d	0,  VCPU_FPR0,  a0
	ld_d	1,  VCPU_FPR1,  a0
	ld_d	2,  VCPU_FPR2,  a0
	ld_d	3,  VCPU_FPR3,  a0
	ld_d	4,  VCPU_FPR4,  a0
	ld_d	5,  VCPU_FPR5,  a0
	ld_d	6,  VCPU_FPR6,  a0
	ld_d	7,  VCPU_FPR7,  a0
	ld_d	8,  VCPU_FPR8,  a0
	ld_d	9,  VCPU_FPR9,  a0
	ld_d	10, VCPU_FPR10, a0
	ld_d	11, VCPU_FPR11, a0
	ld_d	12, VCPU_FPR12, a0
	ld_d	13, VCPU_FPR13, a0
	ld_d	14, VCPU_FPR14, a0
	ld_d	15, VCPU_FPR15, a0
	ld_d	16, VCPU_FPR16, a0
	ld_d	17, VCPU_FPR17, a0
	ld_d	18, VCPU_FPR18, a0
	ld_d	19, VCPU_FPR19, a0
	ld_d	20,