diff --git a/.gitignore b/.gitignore index c98eb5b..659a3d1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ build .tox *.sw[nop] *.pyc +.stestr diff --git a/requirements.txt b/requirements.txt index 6fe3090..20f335d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,7 @@ -# Requirements to build the charm -charm-tools +# This file is managed centrally. If you find the need to modify this as a +# one-off, please don't. Intead, consult #openstack-charms and ask about +# requirements management in charms via bot-control. Thank you. +# +# Build requirements +charm-tools>=2.4.4 simplejson -flake8 diff --git a/src/test-requirements.txt b/src/test-requirements.txt index 16d0adb..f013863 100644 --- a/src/test-requirements.txt +++ b/src/test-requirements.txt @@ -1,19 +1,18 @@ -# 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. +# This file is managed centrally. If you find the need to modify this as a +# one-off, please don't. Intead, consult #openstack-charms and ask about +# requirements management in charms via bot-control. Thank you. +charm-tools>=2.4.4 coverage>=3.6 mock>=1.2 flake8>=2.2.4,<=2.4.1 os-testr>=0.4.1 -charm-tools>=2.0.0 -requests==2.6.0 -# amulet deployment helpers -git+https://github.com/juju/charm-helpers#egg=charmhelpers +requests>=2.18.4 # BEGIN: Amulet OpenStack Charm Helper Requirements # Liberty client lower constraints -amulet>=1.14.3,<2.0 -bundletester>=0.6.1,<1.0 +amulet>=1.14.3,<2.0;python_version=='2.7' +bundletester>=0.6.1,<1.0;python_version=='2.7' aodhclient>=0.1.0 +gnocchiclient>=3.1.0,<3.2.0 python-barbicanclient>=4.0.1 python-ceilometerclient>=1.5.0 python-cinderclient>=1.4.0 @@ -28,6 +27,7 @@ python-openstackclient>=1.7.0 python-swiftclient>=2.6.0 pika>=0.10.0,<1.0 distro-info +git+https://github.com/juju/charm-helpers.git#egg=charmhelpers # END: Amulet OpenStack Charm Helper Requirements -# NOTE: workaround for 14.04 pip/tox -pytz +pytz # workaround for 14.04 pip/tox +pyudev # for ceph-* charm unit tests (not mocked?) diff --git a/test-requirements.txt b/test-requirements.txt index a16d678..ca62003 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,11 +1,13 @@ +# This file is managed centrally. If you find the need to modify this as a +# one-off, please don't. Intead, consult #openstack-charms and ask about +# requirements management in charms via bot-control. Thank you. +# # Lint and unit test requirements -flake8 +flake8>=2.2.4,<=2.4.1 os-testr>=0.4.1 +requests>=2.18.4 charms.reactive mock>=1.2 +nose>=1.3.7 coverage>=3.6 -requests -python-glanceclient -python-neutronclient -python-novaclient -git+https://github.com/openstack/charms.openstack.git#egg=charms-openstack +git+https://github.com/openstack/charms.openstack.git#egg=charms.openstack diff --git a/unit_tests/__init__.py b/unit_tests/__init__.py index 3a5e9a3..ab262c5 100644 --- a/unit_tests/__init__.py +++ b/unit_tests/__init__.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import mock import sys sys.path.append('src') @@ -20,3 +21,37 @@ sys.path.append('src/lib') # Mock out charmhelpers so that we can test without it. import charms_openstack.test_mocks # noqa charms_openstack.test_mocks.mock_charmhelpers() + + +# Mock out OpenStack clients the tempest charm imports so they are not +# required for testing. +glanceclient = mock.MagicMock() +sys.modules['glanceclient'] = glanceclient + +keystoneauth1 = mock.MagicMock() +sys.modules['keystoneauth1'] = keystoneauth1 +sys.modules['keystoneauth1.identity'] = keystoneauth1.identity +sys.modules['keystoneauth1.identity.v1'] = keystoneauth1.identity.v1 +sys.modules['keystoneauth1.identity.v2'] = keystoneauth1.identity.v2 +sys.modules['keystoneauth1.session'] = keystoneauth1.session + +keystoneclient = mock.MagicMock() +sys.modules['keystoneclient'] = keystoneclient +sys.modules['keystoneclient.auth'] = keystoneclient.auth +sys.modules['keystoneclient.auth.identity'] = keystoneclient.auth.identity +sys.modules['keystoneclient.auth.identity.v3'] = ( + keystoneclient.auth.identity.v3) +sys.modules['keystoneclient.v2_0'] = keystoneclient.v2_0 +sys.modules['keystoneclient.v2_0.client'] = keystoneclient.v2_0.client +sys.modules['keystoneclient.v3'] = keystoneclient.v3 +sys.modules['keystoneclient.v3.client'] = keystoneclient.v3.client +sys.modules['keystoneclient.session'] = keystoneclient.session + +neutronclient = mock.MagicMock() +sys.modules['neutronclient'] = neutronclient +sys.modules['neutronclient.v2_0'] = neutronclient.v2_0 +sys.modules['neutronclient.v2_0.client'] = neutronclient.v2_0.client + +novaclient = mock.MagicMock() +sys.modules['novaclient'] = novaclient +sys.modules['novaclient.client'] = novaclient.client