diff options
| author | Jeffrey Zhang <zhang.lei.fly@gmail.com> | 2016-01-14 11:36:32 +0800 |
|---|---|---|
| committer | Paul Bourke <paul.bourke@oracle.com> | 2016-01-18 11:42:00 +0000 |
| commit | d4490ea2bc62bbd3715f9804e1395671854675b2 (patch) | |
| tree | 083f29e9d640049258dc8e90e31520f73a420d24 /kolla | |
| parent | c4f142fd962e9e38c37beeeaf77a192453be9746 (diff) | |
| download | kolla-d4490ea2bc62bbd3715f9804e1395671854675b2.tar.gz kolla-d4490ea2bc62bbd3715f9804e1395671854675b2.zip | |
add unittest code base
* add a base TestCase class
* load the tests from the project root rather than only tests dir
* add a test case for WorkerThread builder function
Change-Id: Icf878f9249b475a311123c8235c42b1212d02ca6
Partially-implements: bp add-ut-codebase
Diffstat (limited to 'kolla')
| -rw-r--r-- | kolla/tests/__init__.py | 0 | ||||
| -rw-r--r-- | kolla/tests/base.py | 36 | ||||
| -rw-r--r-- | kolla/tests/common/__init__.py | 0 | ||||
| -rw-r--r-- | kolla/tests/common/test_config.py | 20 | ||||
| -rw-r--r-- | kolla/tests/etc/default.conf | 2 | ||||
| -rw-r--r-- | kolla/tests/test_build.py | 48 |
6 files changed, 106 insertions, 0 deletions
diff --git a/kolla/tests/__init__.py b/kolla/tests/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/kolla/tests/__init__.py diff --git a/kolla/tests/base.py b/kolla/tests/base.py new file mode 100644 index 000000000..e08adc39b --- /dev/null +++ b/kolla/tests/base.py @@ -0,0 +1,36 @@ +# 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 os +from oslo_config import cfg +from oslotest import base as oslotest_base + +from kolla.common import config as common_config + + +TESTS_ROOT = os.path.dirname(os.path.abspath(__file__)) + + +class TestCase(oslotest_base.BaseTestCase): + '''All unit test should inherit from this class''' + config_file = None + + def setUp(self): + super(TestCase, self).setUp() + self.conf = cfg.ConfigOpts() + default_config_files = self.get_default_config_files() + common_config.parse(self.conf, [], + default_config_files=default_config_files) + + def get_default_config_files(self): + if self.config_file: + return [os.path.join(TESTS_ROOT, 'etc', self.config_file)] diff --git a/kolla/tests/common/__init__.py b/kolla/tests/common/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/kolla/tests/common/__init__.py diff --git a/kolla/tests/common/test_config.py b/kolla/tests/common/test_config.py new file mode 100644 index 000000000..28a9c8d8d --- /dev/null +++ b/kolla/tests/common/test_config.py @@ -0,0 +1,20 @@ +# 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. + +from kolla.tests import base + + +class ConfigTest(base.TestCase): + config_file = 'default.conf' + + def test_debug_opt(self): + self.assertTrue(self.conf.debug) diff --git a/kolla/tests/etc/default.conf b/kolla/tests/etc/default.conf new file mode 100644 index 000000000..cbdb487c3 --- /dev/null +++ b/kolla/tests/etc/default.conf @@ -0,0 +1,2 @@ +[DEFAULT] +debug=True diff --git a/kolla/tests/test_build.py b/kolla/tests/test_build.py new file mode 100644 index 000000000..380e46021 --- /dev/null +++ b/kolla/tests/test_build.py @@ -0,0 +1,48 @@ +# 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 fixtures +import mock + +from kolla.cmd import build +from kolla.tests import base + + +FAKE_IMAGE = { + 'name': 'image-base', + 'status': 'matched', + 'parent': None, + 'path': '/fake/path', + 'plugins': [], + 'fullname': 'image-base:latest', +} + + +class WorkerThreadTest(base.TestCase): + + def setUp(self): + super(WorkerThreadTest, self).setUp() + # NOTE(jeffrey4l): use a real, temporary dir + FAKE_IMAGE['path'] = self.useFixture(fixtures.TempDir()).path + + @mock.patch('docker.Client') + def test_build_image(self, mock_client): + queue = mock.Mock() + push_queue = mock.Mock() + worker = build.WorkerThread(queue, + push_queue, + self.conf) + worker.builder(FAKE_IMAGE) + + mock_client().build.assert_called_once_with( + path=FAKE_IMAGE['path'], tag=FAKE_IMAGE['fullname'], + nocache=False, rm=True, pull=True, forcerm=True) |
