From a4eef558c9933eb32413b61ff80a11b999951b40 Mon Sep 17 00:00:00 2001 From: Aníbal Limón Date: Fri, 26 May 2017 15:37:41 -0500 Subject: oeqa/core/tests: Add tests of OEQA Threaded mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add needed tests to validate the OEQA Threaded mode, the remaining parts are tested by the OEQA without Threaded mode. - test_loader.py: Add a test to validate rules when creating the list of test suites. - test_decorators.py: Add oetimeout test because the threaded mode uses Timer instead of signal. [YOCTO #11450] (From OE-Core rev: fb9d91ca34c1b5d3e0034f5135e71f964fca5b82) Signed-off-by: Aníbal Limón Signed-off-by: Richard Purdie --- .../core/tests/cases/loader/threaded/threaded.py | 12 +++++++++ .../tests/cases/loader/threaded/threaded_alone.py | 8 ++++++ .../cases/loader/threaded/threaded_depends.py | 10 ++++++++ .../tests/cases/loader/threaded/threaded_module.py | 12 +++++++++ meta/lib/oeqa/core/tests/common.py | 10 ++++++++ meta/lib/oeqa/core/tests/test_decorators.py | 12 +++++++++ meta/lib/oeqa/core/tests/test_loader.py | 30 +++++++++++++++++++++- 7 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 meta/lib/oeqa/core/tests/cases/loader/threaded/threaded.py create mode 100644 meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_alone.py create mode 100644 meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_depends.py create mode 100644 meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_module.py diff --git a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded.py b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded.py new file mode 100644 index 0000000000..0fe4cb3f11 --- /dev/null +++ b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded.py @@ -0,0 +1,12 @@ +# Copyright (C) 2017 Intel Corporation +# Released under the MIT license (see COPYING.MIT) + +from oeqa.core.case import OETestCase + +class ThreadedTest(OETestCase): + def test_threaded_no_depends(self): + self.assertTrue(True, msg='How is this possible?') + +class ThreadedTest2(OETestCase): + def test_threaded_same_module(self): + self.assertTrue(True, msg='How is this possible?') diff --git a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_alone.py b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_alone.py new file mode 100644 index 0000000000..905f397846 --- /dev/null +++ b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_alone.py @@ -0,0 +1,8 @@ +# Copyright (C) 2017 Intel Corporation +# Released under the MIT license (see COPYING.MIT) + +from oeqa.core.case import OETestCase + +class ThreadedTestAlone(OETestCase): + def test_threaded_alone(self): + self.assertTrue(True, msg='How is this possible?') diff --git a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_depends.py b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_depends.py new file mode 100644 index 0000000000..0c158d3bac --- /dev/null +++ b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_depends.py @@ -0,0 +1,10 @@ +# Copyright (C) 2017 Intel Corporation +# Released under the MIT license (see COPYING.MIT) + +from oeqa.core.case import OETestCase +from oeqa.core.decorator.depends import OETestDepends + +class ThreadedTest3(OETestCase): + @OETestDepends(['threaded.ThreadedTest.test_threaded_no_depends']) + def test_threaded_depends(self): + self.assertTrue(True, msg='How is this possible?') diff --git a/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_module.py b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_module.py new file mode 100644 index 0000000000..63d17e0401 --- /dev/null +++ b/meta/lib/oeqa/core/tests/cases/loader/threaded/threaded_module.py @@ -0,0 +1,12 @@ +# Copyright (C) 2017 Intel Corporation +# Released under the MIT license (see COPYING.MIT) + +from oeqa.core.case import OETestCase + +class ThreadedTestModule(OETestCase): + def test_threaded_module(self): + self.assertTrue(True, msg='How is this possible?') + +class ThreadedTestModule2(OETestCase): + def test_threaded_module2(self): + self.assertTrue(True, msg='How is this possible?') diff --git a/meta/lib/oeqa/core/tests/common.py b/meta/lib/oeqa/core/tests/common.py index 52b18a1c3e..1932323409 100644 --- a/meta/lib/oeqa/core/tests/common.py +++ b/meta/lib/oeqa/core/tests/common.py @@ -33,3 +33,13 @@ class TestBase(unittest.TestCase): tc.loadTests(self.cases_path, modules=modules, tests=tests, filters=filters) return tc + + def _testLoaderThreaded(self, d={}, modules=[], + tests=[], filters={}): + from oeqa.core.threaded import OETestContextThreaded + + tc = OETestContextThreaded(d, self.logger) + tc.loadTests(self.cases_path, modules=modules, tests=tests, + filters=filters) + + return tc diff --git a/meta/lib/oeqa/core/tests/test_decorators.py b/meta/lib/oeqa/core/tests/test_decorators.py index f7d11e885a..cf99e0d72d 100755 --- a/meta/lib/oeqa/core/tests/test_decorators.py +++ b/meta/lib/oeqa/core/tests/test_decorators.py @@ -131,5 +131,17 @@ class TestTimeoutDecorator(TestBase): msg = "OETestTimeout didn't restore SIGALRM" self.assertIs(alarm_signal, signal.getsignal(signal.SIGALRM), msg=msg) + def test_timeout_thread(self): + tests = ['timeout.TimeoutTest.testTimeoutPass'] + msg = 'Failed to run test using OETestTimeout' + tc = self._testLoaderThreaded(modules=self.modules, tests=tests) + self.assertTrue(tc.runTests().wasSuccessful(), msg=msg) + + def test_timeout_threaded_fail(self): + tests = ['timeout.TimeoutTest.testTimeoutFail'] + msg = "OETestTimeout test didn't timeout as expected" + tc = self._testLoaderThreaded(modules=self.modules, tests=tests) + self.assertFalse(tc.runTests().wasSuccessful(), msg=msg) + if __name__ == '__main__': unittest.main() diff --git a/meta/lib/oeqa/core/tests/test_loader.py b/meta/lib/oeqa/core/tests/test_loader.py index b79b8bad4d..e0d917d317 100755 --- a/meta/lib/oeqa/core/tests/test_loader.py +++ b/meta/lib/oeqa/core/tests/test_loader.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# Copyright (C) 2016 Intel Corporation +# Copyright (C) 2016-2017 Intel Corporation # Released under the MIT license (see COPYING.MIT) import os @@ -82,5 +82,33 @@ class TestLoader(TestBase): msg = 'Expected modules from two different paths' self.assertEqual(modules, expected_modules, msg=msg) + def test_loader_threaded(self): + cases_path = self.cases_path + + self.cases_path = [os.path.join(self.cases_path, 'loader', 'threaded')] + + tc = self._testLoaderThreaded() + self.assertEqual(len(tc.suites), 3, "Expected to be 3 suites") + + case_ids = ['threaded.ThreadedTest.test_threaded_no_depends', + 'threaded.ThreadedTest2.test_threaded_same_module', + 'threaded_depends.ThreadedTest3.test_threaded_depends'] + for case in tc.suites[0]._tests: + self.assertEqual(case.id(), + case_ids[tc.suites[0]._tests.index(case)]) + + case_ids = ['threaded_alone.ThreadedTestAlone.test_threaded_alone'] + for case in tc.suites[1]._tests: + self.assertEqual(case.id(), + case_ids[tc.suites[1]._tests.index(case)]) + + case_ids = ['threaded_module.ThreadedTestModule.test_threaded_module', + 'threaded_module.ThreadedTestModule2.test_threaded_module2'] + for case in tc.suites[2]._tests: + self.assertEqual(case.id(), + case_ids[tc.suites[2]._tests.index(case)]) + + self.cases_path = cases_path + if __name__ == '__main__': unittest.main() -- cgit v1.2.3-54-g00ecf