Refactor to use tox instead of managing venvs directly

This commit is contained in:
James Page
2016-02-16 07:51:51 +00:00
parent 840c4f9bff
commit 221f1c80f2
5 changed files with 25 additions and 48 deletions

View File

@@ -2,3 +2,5 @@ bin
revision
.coverage
.venv
.tox
.testrepository

View File

@@ -10,15 +10,8 @@ clean:
rm -rf .venv
(which dh_clean && dh_clean) || true
.venv:
sudo apt-get install -y gcc python-dev python-virtualenv python-apt
virtualenv .venv --system-site-packages
.venv/bin/pip install -I -r test-requirements.txt
lint: .venv
@.venv/bin/flake8 --exclude hooks/charmhelpers,tests/charmhelpers hooks \
unit_tests tests
@charm proof
tox -e pep8
bin/charm_helpers_sync.py:
@mkdir -p bin
@@ -33,10 +26,8 @@ publish: lint test
bzr push lp:charms/rabbitmq-server
bzr push lp:charms/trusty/rabbitmq-server
test: .venv
@echo Starting tests...
env CHARM_DIR=$(CHARM_DIR) $(TEST_PREFIX) .venv/bin/nosetests \
-v --nologcapture --with-coverage unit_tests/
test:
tox -e py27
functional_test:
@echo Starting amulet tests...

View File

@@ -1,5 +1,8 @@
nose
testtools
mock
coverage
flake8
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
coverage>=3.6
mock>=1.2
flake8>=2.2.4,<=2.4.1
os-testr>=0.4.1
charm-tools

View File

@@ -0,0 +1,3 @@
import sys
sys.path.append('hooks/')

View File

@@ -1,6 +1,6 @@
import os
from testtools import TestCase
from mock import patch, MagicMock
from mock import patch
os.environ['JUJU_UNIT_NAME'] = 'UNIT_TEST/0' # noqa - needed for import
import rabbitmq_server_relations
@@ -11,31 +11,11 @@ class RelationUtil(TestCase):
self.fake_repo = {}
super(RelationUtil, self).setUp()
def _apt_cache(self):
"""Used for mocking out apt_pkg.Cache"""
# mocks out the apt cache
def cache_get(package):
pkg = MagicMock()
if package in self.fake_repo \
and 'pkg_vers' in self.fake_repo[package]:
pkg.name = package
pkg.current_ver.ver_str = self.fake_repo[package]['pkg_vers']
elif (package in self.fake_repo and
'pkg_vers' not in self.fake_repo[package]):
pkg.name = package
pkg.current_ver = None
else:
raise KeyError
return pkg
cache = MagicMock()
cache.__getitem__.side_effect = cache_get
return cache
@patch('rabbitmq_server_relations.peer_store_and_set')
@patch('rabbitmq_server_relations.get_ipv6_addr')
@patch('rabbitmq_server_relations.config')
@patch('rabbitmq_server_relations.relation_set')
@patch('apt_pkg.Cache')
@patch('rabbitmq_server_relations.cmp_pkgrevno')
@patch('rabbitmq_server_relations.is_clustered')
@patch('rabbitmq_server_relations.ssl_utils.configure_client_ssl')
@patch('rabbitmq_server_relations.unit_get')
@@ -44,7 +24,7 @@ class RelationUtil(TestCase):
def test_amqp_changed_compare_versions_ha_queues(
self,
is_elected_leader, relation_get, unit_get, configure_client_ssl,
is_clustered, apt_cache, relation_set, mock_config,
is_clustered, cmp_pkgrevno, relation_set, mock_config,
mock_get_ipv6_addr, mock_peer_store_and_set):
"""
Compare version above and below 3.0.1.
@@ -64,9 +44,8 @@ class RelationUtil(TestCase):
is_elected_leader.return_value = True
relation_get.return_value = {}
is_clustered.return_value = False
apt_cache.return_value = self._apt_cache()
cmp_pkgrevno.return_value = -1
self.fake_repo = {'rabbitmq-server': {'pkg_vers': '3.0'}}
rabbitmq_server_relations.amqp_changed(None, None)
mock_peer_store_and_set.assert_called_with(
relation_settings={'private-address': '10.1.2.3',
@@ -74,7 +53,7 @@ class RelationUtil(TestCase):
'ha_queues': True},
relation_id=None)
self.fake_repo = {'rabbitmq-server': {'pkg_vers': '3.0.2'}}
cmp_pkgrevno.return_value = 1
rabbitmq_server_relations.amqp_changed(None, None)
mock_peer_store_and_set.assert_called_with(
relation_settings={'private-address': '10.1.2.3',
@@ -85,7 +64,7 @@ class RelationUtil(TestCase):
@patch('rabbitmq_server_relations.get_ipv6_addr')
@patch('rabbitmq_server_relations.config')
@patch('rabbitmq_server_relations.relation_set')
@patch('apt_pkg.Cache')
@patch('rabbitmq_server_relations.cmp_pkgrevno')
@patch('rabbitmq_server_relations.is_clustered')
@patch('rabbitmq_server_relations.ssl_utils.configure_client_ssl')
@patch('rabbitmq_server_relations.unit_get')
@@ -94,7 +73,7 @@ class RelationUtil(TestCase):
def test_amqp_changed_compare_versions_ha_queues_prefer_ipv6(
self,
is_elected_leader, relation_get, unit_get, configure_client_ssl,
is_clustered, apt_cache, relation_set, mock_config,
is_clustered, cmp_pkgrevno, relation_set, mock_config,
mock_get_ipv6_addr, mock_peer_store_and_set):
"""
Compare version above and below 3.0.1.
@@ -115,16 +94,15 @@ class RelationUtil(TestCase):
is_elected_leader.return_value = True
relation_get.return_value = {}
is_clustered.return_value = False
apt_cache.return_value = self._apt_cache()
cmp_pkgrevno.return_value = -1
self.fake_repo = {'rabbitmq-server': {'pkg_vers': '3.0'}}
rabbitmq_server_relations.amqp_changed(None, None)
mock_peer_store_and_set.assert_called_with(
relation_settings={'private-address': ipv6_addr,
'ha_queues': True},
relation_id=None)
self.fake_repo = {'rabbitmq-server': {'pkg_vers': '3.0.2'}}
cmp_pkgrevno.return_value = 1
rabbitmq_server_relations.amqp_changed(None, None)
mock_peer_store_and_set.assert_called_with(
relation_settings={'private-address': ipv6_addr},