summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-05-29 01:13:14 +0000
committerGerrit Code Review <review@openstack.org>2015-05-29 01:13:14 +0000
commitf2bb8e433edfaf8cf46d102070c84460d01a73b5 (patch)
tree08890205224ca383d11e618994f8db20793a99c0 /tests
parent795f27a87fc849e2273a70967bbf56d88b6a8cb0 (diff)
parentd353472857bcf9b035fd0a443227c668bd9780ec (diff)
downloadkolla-f2bb8e433edfaf8cf46d102070c84460d01a73b5.tar.gz
kolla-f2bb8e433edfaf8cf46d102070c84460d01a73b5.zip
Merge "Add functional tests to tox" into stable/kilo
Diffstat (limited to 'tests')
-rw-r--r--tests/clients.py68
-rw-r--r--tests/test_images.py42
-rw-r--r--tests/test_keystone.py25
3 files changed, 135 insertions, 0 deletions
diff --git a/tests/clients.py b/tests/clients.py
new file mode 100644
index 000000000..9ac977479
--- /dev/null
+++ b/tests/clients.py
@@ -0,0 +1,68 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+
+import logging
+from keystoneclient.v2_0 import client as ksclient
+
+logging.basicConfig(level=logging.WARNING)
+LOG = logging.getLogger(__name__)
+
+class OpenStackClients(object):
+
+ def __init__(self):
+ self._connected_clients = {}
+ self._supported_clients = self.__class__.__subclasses__()
+ self.client = None
+
+ def get_client(self, name):
+ if name in self._connected_clients:
+ return self._connected_clients[name]
+ try:
+ aclass = next(s for s in self._supported_clients if name in
+ s.__name__)
+ sclient = aclass()
+ connected_client = sclient.create()
+ self._connected_clients[name] = connected_client
+ return connected_client
+
+ except StopIteration:
+ LOG.warn("Requested client %s not found", name)
+ raise
+
+ def create(self):
+ pass
+
+
+class KeystoneClient(OpenStackClients):
+
+ def __init__(self):
+ super(KeystoneClient, self).__init__()
+ # TODO: this shouldn't be hard coded
+ self.creds = {'auth_url': 'http://10.0.0.4:5000/v2.0',
+ 'username': 'admin',
+ 'password': 'steakfordinner',
+ 'tenant_name': 'admin'}
+
+ def create(self):
+ if self.client is None:
+ self.client = ksclient.Client(**self.creds)
+ return self.client
+
+
+if __name__ == '__main__':
+ # TODO: mox this
+ client_mgr = OpenStackClients()
+ ks = client_mgr.get_client('KeystoneClient')
+ LOG.info(ks)
+ ks2 = client_mgr.get_client('KeystoneClient')
+ LOG.info(ks2)
diff --git a/tests/test_images.py b/tests/test_images.py
new file mode 100644
index 000000000..f0e45368d
--- /dev/null
+++ b/tests/test_images.py
@@ -0,0 +1,42 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import testtools
+from subprocess import check_output
+
+class ImagesTest(testtools.TestCase):
+ def setUp(self):
+ super(ImagesTest, self).setUp()
+
+ def test_builds(self):
+ build_output = check_output(["tools/build-all-docker-images",
+ "--release",
+ "--pull",
+ "--testmode"])
+
+ # these are images that are known to not build properly
+ excluded_images = ["kollaglue/centos-rdo-swift-proxy-server",
+ "kollaglue/centos-rdo-swift-container",
+ "kollaglue/centos-rdo-swift-base",
+ "kollaglue/centos-rdo-swift-account",
+ "kollaglue/centos-rdo-swift-object",
+ "kollaglue/centos-rdo-barbican",
+ "kollaglue/fedora-rdo-base",
+ "kollaglue/centos-rdo-rhel-osp-base"]
+
+ results = eval(build_output.splitlines()[-1])
+
+ for image, result in results.iteritems():
+ if image in excluded_images:
+ self.assertEqual(result, 'fail')
+ else:
+ self.assertNotEqual(result, 'fail')
diff --git a/tests/test_keystone.py b/tests/test_keystone.py
new file mode 100644
index 000000000..6c23a203c
--- /dev/null
+++ b/tests/test_keystone.py
@@ -0,0 +1,25 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import testtools
+from clients import OpenStackClients
+
+
+class KeystoneTest(testtools.TestCase):
+ def setUp(self):
+ super(KeystoneTest, self).setUp()
+ self.kc = OpenStackClients().get_client('KeystoneClient')
+
+ def test_tenants(self):
+ result = self.kc.tenants.list()
+ # only admin tenant
+ self.assertEqual(1, len(result))