Dovetail Overview

Dovetail Installation


Dovetail currently supports installation on Ubuntu 14.04 or by using a docker image. Detailed steps about installing dovetail can be found below.

To use dovetail you should have access to an OpenStack environment, with at least Nova, Neutron, Glance, Keystone and Heat installed.

Run dovetail on local machine

The steps needed to run dovetail on Ubuntu are:

  1. Download source code and prepare environment.
  2. Create certification configuration file.
  3. Run certification.

Download dovetail and prepare environment

The source code of dovetail can be got from Gerrit:

git clone

After that you need to prepare the environment which means install some tools, modules and anything else dovetail needs. A file named can do all of these for you.

cd dovetail/dovetail/

Now the environment should be prepared for running the certification.

Besides, you may want to install it in a python virtualenv, that is beyond the scope of this installation instruction.

Create certification configuration file

You can wirte a certification configuration file with the format of yaml, which can be defined to meet your own requirements. The yaml file should be located in the folder dovetail/dovetail/cert. There provide a sample file named basic.yml.

  name: certification_basic
    - dovetail.ipv6.tc001

As you can see, the configuration file combines the testcases you want to run together, and all of them should already been defined in dovetail/dovetail/testcase. The name of the configuration file should be certification_%s, where %s (here is basic) can be used to run this certification.

Run the certification

When you get the dovetail source code, prepare the environment and define the certification configuration file, you can then run the certification. Take certification_basic as the example. You can run it using the file with basic (scenario name) as its argument.

python --scenario basic

If you did not give an argument, it will be default set as basic.

Run dovetail on Docker container

steps: 1. pull image 2. run container 3. config 4. run testcase

pull image

Get the latest docker image from docker hub.

sudo docker pull opnfv/dovetail:latest

run container

Start a container from the image that you just pulled.

sudo docker run -it –privileged=true -v /home/opnfv/dovetail/results:/home/opnfv/dovetail/results -v /var/run/docker.sock:/var/run/docker.sock opnfv/dovetail:latest “/bin/bash”


For now, we need only change value of INSTALLER_TYPE and INSTALLER_IP of the variable envs to your own environment.

sudo docker exec -it $(CONTAINER_ID) “/bin/bash” vi /home/opnfv/dovetail/dovetail/conf/functest_config.yml vi /home/opnfv/dovetail/dovetail/conf/yardstick_config.yml

run testcase

In docker, you just run following cmds to execute the testcase.

cd /home/opnfv/dovetail/dovetail python


The running log is stored in /home/opnfv/dovetail/results/dovetail.log. The report of certification is stored in /home/opnfv/dovetail/results/dovetail_report.txt.

Testcase Template Syntax

The testcases certification are defined in dovetail/dovetail/testcase. Take testcase ipv6.tc001.yml as an example.

Basic template syntax

  name: dovetail.ipv6.tc001
  objective: VIM ipv6 operations, to create/delete network, port and subnet in bulk operation
    type: functest
    testcase: tempest_smoke_serial

The testcase needs at least three keys named as ‘name’, ‘objective’ and ‘scripts’. The whole dovetail project can just recognize testcases by the ‘name’ section, which here is ‘dovetail.ipv6.tc001’. The ‘objective’ describes what exactly this testcase does. In the ‘scripts’ part, there are some subsections such as ‘type’, ‘testcase’ and ‘sub_testcase_list’. Dovetail now supports two kinds of types, functest and yardstick. If you define the type as functest, then you need to give the functest testcase that you want to use. If the type is yardstick, then a yardstick testcase is needed. The ‘sub_testcase_list’ lists the sub_testcases that you put a high value on. Even though the whole testcase faild, we still think it passed when all the sub_testcases pass. The sub_testcase_list is just available for functest. When for yardstick testcase, retain ‘sub_testcase_list’ section and keep the content empty.


This is the definition of the dovetail testcases. They can just be tested by adding into scenarios such as cert/basic.yml.