From 77ac94fc9d12c29161c717cd9ce932daa898a761 Mon Sep 17 00:00:00 2001 From: Ionut Balutoiu Date: Sat, 31 Oct 2015 00:16:58 +0200 Subject: [PATCH 1/2] Added object-store-relation-joined hook --- hooks/swift_hooks.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hooks/swift_hooks.py b/hooks/swift_hooks.py index e3b4b25..efa6ca0 100755 --- a/hooks/swift_hooks.py +++ b/hooks/swift_hooks.py @@ -152,6 +152,9 @@ def config_changed(): for r_id in relation_ids('identity-service'): keystone_joined(relid=r_id) + for r_id in relation_ids('object-store'): + object_store_joined(relation_id=r_id) + @hooks.hook('identity-service-relation-joined') def keystone_joined(relid=None): @@ -256,6 +259,16 @@ def storage_broken(): CONFIGS.write_all() +@hooks.hook('object-store-relation-joined') +def object_store_joined(relation_id=None): + relation_data = { + 'swift-url': + "{}:{}".format(canonical_url(CONFIGS, INTERNAL), config('bind-port')) + } + + relation_set(relation_id=relation_id, **relation_data) + + @hooks.hook('cluster-relation-joined') def cluster_joined(relation_id=None): for addr_type in ADDRESS_TYPES: From dbdfbb0964e07f6ee58c97d0aa9804ad4b4179f2 Mon Sep 17 00:00:00 2001 From: James Page Date: Tue, 3 Nov 2015 13:52:37 +0000 Subject: [PATCH 2/2] Add tox support, tidy unit tests --- .bzrignore | 5 +++- .testr.conf | 8 ++++++ hooks/__init__.py | 0 requirements.txt | 11 ++++++++ test-requirements.txt | 8 ++++++ tox.ini | 29 ++++++++++++++++++++ unit_tests/test_actions.py | 4 ++- unit_tests/test_actions_openstack_upgrade.py | 5 ++-- unit_tests/test_swift_context.py | 2 +- unit_tests/test_swift_utils.py | 2 +- 10 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 .testr.conf create mode 100644 hooks/__init__.py create mode 100644 requirements.txt create mode 100644 test-requirements.txt create mode 100644 tox.ini diff --git a/.bzrignore b/.bzrignore index 3676cc7..9ad1b67 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1,2 +1,5 @@ -.coverage bin +.coverage +.testrepository +.tox +tags diff --git a/.testr.conf b/.testr.conf new file mode 100644 index 0000000..801646b --- /dev/null +++ b/.testr.conf @@ -0,0 +1,8 @@ +[DEFAULT] +test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \ + OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \ + OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \ + ${PYTHON:-python} -m subunit.run discover -t ./ ./unit_tests $LISTOPT $IDOPTION + +test_id_option=--load-list $IDFILE +test_list_option=--list diff --git a/hooks/__init__.py b/hooks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..426002d --- /dev/null +++ b/requirements.txt @@ -0,0 +1,11 @@ +# 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. +PyYAML>=3.1.0 +simplejson>=2.2.0 +netifaces>=0.10.4 +netaddr>=0.7.12,!=0.7.16 +Jinja2>=2.6 # BSD License (3 clause) +six>=1.9.0 +dnspython>=1.12.0 +psutil>=1.1.1,<2.0.0 diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 0000000..3af44d7 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,8 @@ +# 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 diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..a79b65d --- /dev/null +++ b/tox.ini @@ -0,0 +1,29 @@ +[tox] +envlist = lint,py27 +skipsdist = True + +[testenv] +setenv = VIRTUAL_ENV={envdir} + PYTHONHASHSEED=0 +install_command = + pip install --allow-unverified python-apt {opts} {packages} +commands = ostestr {posargs} + +[testenv:py27] +basepython = python2.7 +deps = -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +[testenv:lint] +basepython = python2.7 +deps = -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt +commands = flake8 {posargs} hooks unit_tests tests actions + charm proof + +[testenv:venv] +commands = {posargs} + +[flake8] +ignore = E402,E226 +exclude = hooks/charmhelpers diff --git a/unit_tests/test_actions.py b/unit_tests/test_actions.py index 1708f76..4baedfa 100644 --- a/unit_tests/test_actions.py +++ b/unit_tests/test_actions.py @@ -6,8 +6,10 @@ import mock import yaml from mock import patch + with patch('lib.swift_utils.is_paused') as is_paused: - import actions.actions + with patch('lib.swift_utils.register_configs') as configs: + import actions.actions class CharmTestCase(unittest.TestCase): diff --git a/unit_tests/test_actions_openstack_upgrade.py b/unit_tests/test_actions_openstack_upgrade.py index 833ec1e..d613da5 100644 --- a/unit_tests/test_actions_openstack_upgrade.py +++ b/unit_tests/test_actions_openstack_upgrade.py @@ -4,9 +4,8 @@ import unittest os.environ['JUJU_UNIT_NAME'] = 'swift-proxy' -with patch('actions.charmhelpers.core.hookenv.config') as config: - with patch('lib.swift_utils.is_paused') as is_paused: - config.return_value = 'swift' +with patch('lib.swift_utils.is_paused') as is_paused: + with patch('lib.swift_utils.register_configs') as configs: import actions.openstack_upgrade as openstack_upgrade diff --git a/unit_tests/test_swift_context.py b/unit_tests/test_swift_context.py index a89932e..62b96f0 100644 --- a/unit_tests/test_swift_context.py +++ b/unit_tests/test_swift_context.py @@ -45,7 +45,7 @@ class SwiftContextTestCase(unittest.TestCase): mock_service_name.return_value = "testsvc" tmpfile = tempfile.mktemp() swift_context.SWIFT_HASH_FILE = tmpfile - with mock.patch('swift_context.os.environ.get') as mock_env_get: + with mock.patch('lib.swift_context.os.environ.get') as mock_env_get: mock_env_get.return_value = str(uuid.uuid4()) hash_ = swift_context.get_swift_hash() mock_env_get.assert_called_with('JUJU_ENV_UUID') diff --git a/unit_tests/test_swift_utils.py b/unit_tests/test_swift_utils.py index a792cdb..eda8079 100644 --- a/unit_tests/test_swift_utils.py +++ b/unit_tests/test_swift_utils.py @@ -149,7 +149,7 @@ class SwiftUtilsTestCase(unittest.TestCase): self.assertEqual(devices, added_devices) # try re-adding, assert add_to_ring was not called - with mock.patch('swift_utils.add_to_ring') as mock_add_to_ring: + with mock.patch('lib.swift_utils.add_to_ring') as mock_add_to_ring: swift_utils.update_rings(nodes) self.assertFalse(mock_add_to_ring.called)