Added snapstack test.

Tweaked tox.ini to invoke snapstack, and added test_snapstack.py to
tests dir.

Also added nova.sh to nova/tests, as part of the plan to move
those scripts from snap-test to the individual snaps.

Change-Id: If52e45bbef18a3ad7da993c93eb78f8aea687c5b
This commit is contained in:
Pete Vander Giessen 2017-07-24 13:49:19 +00:00
parent 4d6726561a
commit abebe58008
3 changed files with 95 additions and 5 deletions

60
tests/nova.sh Executable file
View File

@ -0,0 +1,60 @@
#!/bin/bash
set -ex
source $BASE_DIR/admin-openrc
openstack user show nova || {
openstack user create --domain default --password nova nova
openstack role add --project service --user nova admin
}
openstack user show placement || {
openstack user create --domain default --password placement placement
openstack role add --project service --user placement admin
}
openstack service show compute || {
openstack service create --name nova \
--description "OpenStack Compute" compute
for endpoint in public internal admin; do
openstack endpoint create --region RegionOne \
compute $endpoint http://localhost:8774/v2.1/%\(tenant_id\)s || :
done
}
openstack service show placement || {
openstack service create --name placement \
--description "Placement API" placement
for endpoint in public internal admin; do
openstack endpoint create --region RegionOne \
placement $endpoint http://localhost:8778 || :
done
}
while sudo [ ! -d /var/snap/nova/common/etc/nova/ ]; do sleep 0.1; done;
sudo cp -r $BASE_DIR/etc/snap-nova/* /var/snap/nova/common/etc/
# 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 api_db sync
sudo nova-manage cell_v2 list_cells | grep cell0 || sudo nova-manage cell_v2 map_cell0
sudo nova-manage cell_v2 list_cells | grep cell1 || sudo nova-manage cell_v2 create_cell --name=cell1 --verbose
sudo nova-manage db sync
sudo systemctl restart snap.nova.*
while ! nc -z localhost 8774; do sleep 0.1; done;
sleep 5
openstack flavor show m1.tiny || openstack flavor create --id 1 --ram 512 --disk 1 --vcpus 1 m1.tiny
openstack flavor show m1.small || openstack flavor create --id 2 --ram 2048 --disk 20 --vcpus 1 m1.small
openstack flavor show m1.medium || openstack flavor create --id 3 --ram 4096 --disk 20 --vcpus 2 m1.medium
openstack flavor show m1.large || openstack flavor create --id 4 --ram 8192 --disk 20 --vcpus 4 m1.large
openstack flavor show m1.xlarge || openstack flavor create --id 5 --ram 16384 --disk 20 --vcpus 8 m1.xlarge

26
tests/snapstack_test.py Normal file
View File

@ -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. Override the 'nova'
# step with a locally built snap. neutron, keystone, etc. will still
# be installed as normal from the store.
setup = Setup()
setup.add_steps(('nova', Step(
snap='nova',
script_loc='./tests/',
scripts=['nova.sh'],
snap_store=False)))
# Execute the snapstack tests
plan = Plan(base_setup=setup.steps())
plan.run()

14
tox.ini
View File

@ -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/