diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/clients.py | 68 | ||||
| -rw-r--r-- | tests/test_images.py | 42 | ||||
| -rw-r--r-- | tests/test_keystone.py | 25 |
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)) |
