Index: testing/legion/legion_test_case.py |
diff --git a/testing/legion/legion_test_case.py b/testing/legion/legion_test_case.py |
deleted file mode 100644 |
index 9514e8e19be7c57d31ec8ffff7b6e0c00cd6f906..0000000000000000000000000000000000000000 |
--- a/testing/legion/legion_test_case.py |
+++ /dev/null |
@@ -1,135 +0,0 @@ |
-# Copyright 2015 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-"""Adds unittest-esque functionality to Legion.""" |
- |
-import argparse |
-import logging |
-import sys |
-import unittest |
- |
-#pylint: disable=relative-import |
-import common_lib |
-import task_controller |
-import task_registration_server |
- |
-BANNER_WIDTH = 80 |
- |
- |
-class TestCase(unittest.TestCase): |
- """Test case class with added Legion support.""" |
- |
- _registration_server = None |
- _initialized = False |
- |
- @classmethod |
- def __new__(cls, *args, **kwargs): |
- """Initialize the class and return a new instance.""" |
- cls._InitializeClass() |
- return super(TestCase, cls).__new__(*args, **kwargs) |
- |
- def __init__(self, test_name='runTest'): |
- super(TestCase, self).__init__(test_name) |
- method = getattr(self, test_name, None) |
- if method: |
- # Install the _RunTest method |
- self._TestMethod = method |
- setattr(self, test_name, self._RunTest) |
- |
- def _RunTest(self): |
- """Runs the test method and provides banner info and error reporting.""" |
- self._LogInfoBanner(self._testMethodName, self.shortDescription()) |
- try: |
- return self._TestMethod() |
- except: |
- exc_info = sys.exc_info() |
- logging.error('', exc_info=exc_info) |
- raise exc_info[0], exc_info[1], exc_info[2] |
- |
- @classmethod |
- def _InitializeClass(cls): |
- """Handles class level initialization. |
- |
- There are 2 types of setup/teardown methods that always need to be run: |
- 1) Framework level setup/teardown |
- 2) Test case level setup/teardown |
- |
- This method installs handlers in place of setUpClass and tearDownClass that |
- will ensure both types of setup/teardown methods are called correctly. |
- """ |
- if cls._initialized: |
- return |
- cls._OriginalSetUpClassMethod = cls.setUpClass |
- cls.setUpClass = cls._HandleSetUpClass |
- cls._OriginalTearDownClassMethod = cls.tearDownClass |
- cls.tearDownClass = cls._HandleTearDownClass |
- cls._initialized = True |
- |
- @classmethod |
- def _LogInfoBanner(cls, method_name, method_doc=None): |
- """Formats and logs test case information.""" |
- logging.info('*' * BANNER_WIDTH) |
- logging.info(method_name.center(BANNER_WIDTH)) |
- if method_doc: |
- for line in method_doc.split('\n'): |
- logging.info(line.center(BANNER_WIDTH)) |
- logging.info('*' * BANNER_WIDTH) |
- |
- @classmethod |
- def CreateTask(cls, *args, **kwargs): |
- """Convenience method to create a new task.""" |
- task = task_controller.TaskController(*args, **kwargs) |
- cls._registration_server.RegisterTaskCallback( |
- task.otp, task.OnConnect) |
- return task |
- |
- @classmethod |
- def _SetUpFramework(cls): |
- """Perform the framework-specific setup operations.""" |
- cls._registration_server = ( |
- task_registration_server.TaskRegistrationServer()) |
- cls._registration_server.Start() |
- |
- @classmethod |
- def _TearDownFramework(cls): |
- """Perform the framework-specific teardown operations.""" |
- if cls._registration_server: |
- cls._registration_server.Shutdown() |
- task_controller.TaskController.ReleaseAllTasks() |
- |
- @classmethod |
- def _HandleSetUpClass(cls): |
- """Performs common class-level setup operations. |
- |
- This method performs test-wide setup such as starting the registration |
- server and then calls the original setUpClass method.""" |
- try: |
- common_lib.InitLogging() |
- cls._LogInfoBanner('setUpClass', 'Performs class level setup.') |
- cls._SetUpFramework() |
- cls._OriginalSetUpClassMethod() |
- except: |
- # Make sure we tear down in case of any exceptions |
- cls._HandleTearDownClass(setup_failed=True) |
- exc_info = sys.exc_info() |
- logging.error('', exc_info=exc_info) |
- raise exc_info[0], exc_info[1], exc_info[2] |
- |
- @classmethod |
- def _HandleTearDownClass(cls, setup_failed=False): |
- """Performs common class-level tear down operations. |
- |
- This method calls the original tearDownClass then performs test-wide |
- tear down such as stopping the registration server. |
- """ |
- cls._LogInfoBanner('tearDownClass', 'Performs class level tear down.') |
- try: |
- if not setup_failed: |
- cls._OriginalTearDownClassMethod() |
- finally: |
- cls._TearDownFramework() |
- |
- |
-def main(): |
- unittest.main(verbosity=0, argv=sys.argv[:1]) |