[[development-package-tests]]
== Package Testing

Packaging tests use Vagrant virtual machines as hosts and Ansible for
provisioning and assertions. Kibana distributions are copied from the
target folder into each VM and installed, along with required
dependencies.

=== Setup

* https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html[Ansible]
+
```
# Ubuntu
sudo apt-get install python3-pip libarchive-tools
pip3 install --user ansible

# Darwin
brew install python3
pip3 install --user ansible
```
* https://www.vagrantup.com/downloads[Vagrant]
* https://www.virtualbox.org/wiki/Downloads[Virtualbox]

=== Machines

[cols=",,",options="header",]
|===
|Hostname |IP |Description
|deb |192.168.56.5 |Installation of Kibana’s deb package
|rpm |192.168.56.6 |Installation of Kibana’s rpm package
|docker |192.168.56.7 |Installation of Kibana’s docker image
|===

=== Running

```
# Build distributions
node scripts/build --all-platforms --debug

cd test/package

# Setup virtual machine and networking
vagrant up <hostname> --no-provision

# Install Kibana and run OS level tests
# This step can be repeated when adding new tests, it ensures machine state - installations won't run twice
vagrant provision <hostname>

# Running functional tests
node scripts/es snapshot \
  -E network.bind_host=127.0.0.1,192.168.56.1 \
  -E discovery.type=single-node \
  --license=trial
TEST_KIBANA_URL=http://elastic:changeme@<ip>:5601 \
TEST_ES_URL=http://elastic:changeme@192.168.56.1:9200 \
  node scripts/functional_test_runner.js --include-tag=smoke
```

=== Cleanup

....
vagrant destroy <hostname>
....
