| Index: telemetry/telemetry/testing/browser_test_context.py
|
| diff --git a/telemetry/telemetry/testing/browser_test_context.py b/telemetry/telemetry/testing/browser_test_context.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f11937278580c9046627958a95ba5df22e54ea10
|
| --- /dev/null
|
| +++ b/telemetry/telemetry/testing/browser_test_context.py
|
| @@ -0,0 +1,74 @@
|
| +# Copyright 2016 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.
|
| +
|
| +import copy
|
| +import sets
|
| +
|
| +
|
| +_global_test_context = None
|
| +
|
| +
|
| +def GetCopy():
|
| + return copy.deepcopy(_global_test_context)
|
| +
|
| +
|
| +class TypTestContext(object):
|
| + """ The TestContext that is used for passing data from the main test process
|
| + to typ's subprocesses. Those includes:
|
| + _ client_configs: list of client configs that contain infos about binaries
|
| + to use.
|
| + _ finder_options: the commandline options object. This is an instance of
|
| + telemetry.internal.browser.browser_options.BrowserFinderOptions.
|
| + _ test_class: the name of the test class to be run.
|
| + _ test_case_ids_to_run: the ids of the test cases to be run. e.g:
|
| + foo.bar.Test1, foo.bar.Test2,..
|
| +
|
| +
|
| + This object is designed to be pickle-able so that it can be easily pass from
|
| + the main process to test subprocesses. It also supports immutable mode to
|
| + ensure its data won't be changed by the subprocesses.
|
| + """
|
| + def __init__(self):
|
| + self._client_configs = []
|
| + self._finder_options = None
|
| + self._test_class = None
|
| + self._test_cases_ids_to_run = set()
|
| + self._frozen = False
|
| +
|
| + def Freeze(self):
|
| + """ Makes the |self| object immutable.
|
| +
|
| + Calling setter on |self|'s property will throw exception.
|
| + """
|
| + assert self._finder_options
|
| + assert self._test_class
|
| + self._frozen = True
|
| + self._test_cases_ids_to_run = sets.ImmutableSet(self._test_cases_ids_to_run)
|
| + self._client_configs = tuple(self._client_configs)
|
| +
|
| + @property
|
| + def finder_options(self):
|
| + return self._finder_options
|
| +
|
| + @property
|
| + def client_configs(self):
|
| + return self._client_configs
|
| +
|
| + @property
|
| + def test_class(self):
|
| + return self._test_class
|
| +
|
| + @property
|
| + def test_case_ids_to_run(self):
|
| + return self._test_cases_ids_to_run
|
| +
|
| + @finder_options.setter
|
| + def finder_options(self, value):
|
| + assert not self._frozen
|
| + self._finder_options = value
|
| +
|
| + @test_class.setter
|
| + def test_class(self, value):
|
| + assert not self._test_class
|
| + self._test_class = value
|
|
|