diff --git a/tests/nova-hypervisor.sh b/tests/nova-hypervisor.sh new file mode 100755 index 0000000..4768775 --- /dev/null +++ b/tests/nova-hypervisor.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +set -ex + +source $BASE_DIR/admin-openrc + +# Manually connect interfaces if snap isn't installed from snap store. +# Otherwise, snap store automatically connects these interfaces. +interfaces=( firewall-control hardware-observe libvirt network-control + network-observe openvswitch process-control system-observe ) +for interface in "${interfaces[@]}"; do + snap interfaces -i ${interface} nova-hypervisor | grep nova-hypervisor:${interface} && \ + sudo snap connect nova-hypervisor:${interface} core:${interface} +done + +while sudo [ ! -d /var/snap/nova-hypervisor/common/etc/neutron/ ]; do sleep 0.1; done; +while sudo [ ! -d /var/snap/nova-hypervisor/common/etc/nova/ ]; do sleep 0.1; done; +sudo cp -r $BASE_DIR/etc/snap-nova-hypervisor/* /var/snap/nova-hypervisor/common/etc/ + +sudo systemctl restart snap.nova-hypervisor.* +sudo systemctl restart snap.nova-hypervisor.nova-compute + +# Manually define alias if snap isn't installed from snap store. +# Otherwise, snap store defines this alias automatically. +snap aliases nova | grep nova-manage || sudo snap alias nova.manage nova-manage + +sudo nova-manage cell_v2 discover_hosts --verbose diff --git a/tests/snapstack_test.py b/tests/snapstack_test.py new file mode 100644 index 0000000..38b42fd --- /dev/null +++ b/tests/snapstack_test.py @@ -0,0 +1,26 @@ +import unittest + +from snapstack import Plan, Setup, Step + +class SnapstackTest(unittest.TestCase): + + def test_snapstack(self): + ''' + _test_snapstack_ + + Run a basic smoke test, utilizing our snapstack testing harness. + + ''' + # snapstack already installs nova-hypervisor. Override the + # 'nova-hypervisor' step with a locally built snap. neutron, + # keystone, etc. will still be installed as normal from the store. + setup = Setup() + setup.add_steps(('nova_hypervisor', Step( + snap='nova-hypervisor', + script_loc='./tests/', + scripts=['nova-hypervisor.sh'], + snap_store=False))) + + # Execute the snapstack tests + plan = Plan(base_setup=setup.steps()) + plan.run() diff --git a/tox.ini b/tox.ini index 7360ffc..a6fe96f 100644 --- a/tox.ini +++ b/tox.ini @@ -5,14 +5,18 @@ skipsdist = True [testenv] basepython = python3.5 install_command = pip install {opts} {packages} -passenv = HOME TERM +passenv = + HOME + TERM + SNAP_BUILD_PROXY whitelist_externals = sudo snapcraft [testenv:snap] -deps = -r{toxinidir}/requirements.txt +deps = + -r{toxinidir}/requirements.txt + git+https://github.com/openstack-snaps/snapstack + pytest commands = - sudo snap install core - snapcraft clean - snapcraft snap + py.test -s tests/