aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Zhang <zhang.lei.fly@gmail.com>2016-01-14 11:36:32 +0800
committerPaul Bourke <paul.bourke@oracle.com>2016-01-18 11:42:00 +0000
commitd4490ea2bc62bbd3715f9804e1395671854675b2 (patch)
tree083f29e9d640049258dc8e90e31520f73a420d24
parentc4f142fd962e9e38c37beeeaf77a192453be9746 (diff)
downloadkolla-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
-rw-r--r--.testr.conf2
-rw-r--r--kolla/tests/__init__.py0
-rw-r--r--kolla/tests/base.py36
-rw-r--r--kolla/tests/common/__init__.py0
-rw-r--r--kolla/tests/common/test_config.py20
-rw-r--r--kolla/tests/etc/default.conf2
-rw-r--r--kolla/tests/test_build.py48
-rw-r--r--tests/test_keystone.py2
8 files changed, 108 insertions, 2 deletions
diff --git a/.testr.conf b/.testr.conf
index 76e26f0c1..0d11d15d0 100644
--- a/.testr.conf
+++ b/.testr.conf
@@ -3,6 +3,6 @@ test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
OS_LOG_CAPTURE=${OS_LOG_CAPTURE:-1} \
OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-7200} \
- ${PYTHON:-python} -m subunit.run discover ${OS_TEST_PATH:-./tests} $LISTOPT $IDOPTION
+ ${PYTHON:-python} -m subunit.run discover ${OS_TEST_PATH:-.} $LISTOPT $IDOPTION
test_id_option=--load-list $IDFILE
test_list_option=--list
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)
diff --git a/tests/test_keystone.py b/tests/test_keystone.py
index 683dc53dd..5145a2cfa 100644
--- a/tests/test_keystone.py
+++ b/tests/test_keystone.py
@@ -10,7 +10,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-from clients import OpenStackClients
+from tests.clients import OpenStackClients
import testtools