functional

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 22, 2016 License: Apache-2.0 Imports: 0 Imported by: 0

README

fleet functional tests

This functional test suite deploys a fleet cluster using nspawn containers, and asserts fleet is functioning properly.

It shares an instance of etcd deployed on the host machine with each of the nspawn containers which use 172.18.0.1/16 network, so please make sure this network does not intersect with others.

It's recommended to run this in a virtual machine environment on CoreOS (e.g. using Vagrant).

Since the tests utilize systemd-nspawn, this needs to be invoked as sudo/root.

If the tests are aborted partway through, it's currently possible for them to leave residual state as a result of the systemd-nspawn operations. This can be cleaned up using the clean.sh script.

Using go flags in functional tests

fleet/functional scripts forwards all arguments directly to the go binary. This allows you to pass -run regexp argument to the ./test script and run specific test functions. The example below shows how to run only TestSchedule* test functions:

$ sudo fleet/functional/test -run TestSchedule*

The test functions list could be printed using grep command:

$ cd fleet/functional
$ grep -r 'func Test' .

You can find a detailed description of the available test flags in the Go documentation.

Run tests in Vagrant

The recommended way to run the tests is to use the provided Vagrantfile, which will set up a single CoreOS instance with a one-member etcd cluster (configuration is applied using user-data Cloud-Config file located in this directory). To do so, simply run the following commands on a system with Vagrant installed (see Vagrant configuration section of this doc)

$ git clone https://github.com/coreos/fleet
$ cd fleet/functional
$ ./run-in-vagrant

Vagrant's provision step includes go binaries download using functional/provision/install_go.sh script.

Run tests in QEMU

If you don't want to use Vagrant or VirtualBox, you can run tests inside official CoreOS QEMU image. You have to make sure QEMU is installed on your system.

$ git clone https://github.com/coreos/fleet
$ cd fleet/functional
$ ./run-in-qemu

If you get Could not access KVM kernel module: Permission denied error message, please make sure your CPU supports hardware-assisted virtualization and try to run the script using sudo.

Run tests inside other CoreOS platforms (BareMetal/EC2/GCE/libvirt/etc)

It's also possible to run the tests on CoreOS on other platforms. The following commands should be run inside the CoreOS instance.

$ git clone https://github.com/coreos/fleet

If you didn't configure etcd2 daemon yet, just run this script:

$ sudo fleet/functional/start_etcd

It will configure and start a one-member etcd cluster.

Then run the functional tests (script will download and unpack golang into home directory):

$ sudo fleet/functional/test

When fleet/functional/test can not find go binaries, it will download them automatically using functional/provision/install_go.sh script.

Configure host environment to run Vagrant

Debian/Ubuntu

Install Vagrant
sudo apt-get install -y git nfs-kernel-server
wget https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.deb
sudo dpkg -i vagrant_1.8.1_x86_64.deb
Install VirtualBox
echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y build-essential linux-headers-`uname -r` dkms
sudo apt-get install -y VirtualBox-5.0
#Previous VirtualBox (if you have problems with nested virtualization, more info here: https://www.virtualbox.org/ticket/14965)
#sudo apt-get install -y VirtualBox-4.3

CentOS/Fedora

NOTE: NFS and Vagrant doesn't work out of the box on CentOS 6.x, so it is recommended to use CentOS 7.x

Install Vagrant
sudo yum install -y git nfs-utils
sudo service nfs start
sudo yum install -y https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.rpm
Install VirtualBox
source /etc/os-release
for id in $ID_LIKE $ID; do break; done
OS_ID=${id:-rhel}
curl http://download.virtualbox.org/virtualbox/rpm/$OS_ID/virtualbox.repo | sudo tee /etc/yum.repos.d/virtualbox.repo
sudo yum install -y make automake gcc gcc-c++ kernel-devel-`uname -r` dkms
sudo yum install -y VirtualBox-5.0
#Previous VirtualBox (if you have problems with nested virtualization, more info here: https://www.virtualbox.org/ticket/14965)
#sudo yum install -y VirtualBox-4.3

Documentation

Overview

Fleet functional test suite

These test files must be executed as described in README.md, they are not plain old Go unit tests. ;-)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL