OLD | NEW |
1 # Copyright 2016 The Chromium Authors. All rights reserved. | 1 # Copyright 2016 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import io | 5 import io |
6 import json | 6 import json |
7 import logging | 7 import logging |
8 import os | 8 import os |
9 import pickle | 9 import pickle |
10 import shutil | 10 import shutil |
11 import tempfile | 11 import tempfile |
12 import time | 12 import time |
13 import zipfile | 13 import zipfile |
14 | 14 |
15 from devil.android import battery_utils | 15 from devil.android import battery_utils |
16 from devil.android import device_blacklist | 16 from devil.android import device_blacklist |
17 from devil.android import device_errors | 17 from devil.android import device_errors |
18 from devil.android import device_list | 18 from devil.android import device_list |
19 from devil.android import device_utils | 19 from devil.android import device_utils |
20 from devil.android import forwarder | 20 from devil.android import forwarder |
21 from devil.android.tools import device_recovery | 21 from devil.android.tools import device_recovery |
22 from devil.android.tools import device_status | 22 from devil.android.tools import device_status |
23 from devil.utils import cmd_helper | 23 from devil.utils import cmd_helper |
24 from devil.utils import parallelizer | 24 from devil.utils import parallelizer |
25 from pylib import constants | 25 from pylib import constants |
26 from pylib.base import base_test_result | 26 from pylib.base import base_test_result |
27 from pylib.constants import host_paths | 27 from pylib.constants import host_paths |
| 28 from pylib.local.device import local_device_environment |
28 from pylib.local.device import local_device_test_run | 29 from pylib.local.device import local_device_test_run |
29 | 30 |
30 | 31 |
31 class TestShard(object): | 32 class TestShard(object): |
32 def __init__( | 33 def __init__( |
33 self, env, test_instance, device, index, tests, retries=3, timeout=None): | 34 self, env, test_instance, device, index, tests, retries=3, timeout=None): |
34 logging.info('Create shard %s for device %s to run the following tests:', | 35 logging.info('Create shard %s for device %s to run the following tests:', |
35 index, device) | 36 index, device) |
36 for t in tests: | 37 for t in tests: |
37 logging.info(' %s', t) | 38 logging.info(' %s', t) |
38 self._battery = battery_utils.BatteryUtils(device) | 39 self._battery = battery_utils.BatteryUtils(device) |
39 self._device = device | 40 self._device = device |
40 self._env = env | 41 self._env = env |
41 self._index = index | 42 self._index = index |
42 self._output_dir = None | 43 self._output_dir = None |
43 self._retries = retries | 44 self._retries = retries |
44 self._test_instance = test_instance | 45 self._test_instance = test_instance |
45 self._tests = tests | 46 self._tests = tests |
46 self._timeout = timeout | 47 self._timeout = timeout |
47 | 48 |
48 @local_device_test_run.handle_shard_failures | 49 @local_device_environment.handle_shard_failures |
49 def RunTestsOnShard(self): | 50 def RunTestsOnShard(self): |
50 results = base_test_result.TestRunResults() | 51 results = base_test_result.TestRunResults() |
51 for test in self._tests: | 52 for test in self._tests: |
52 tries_left = self._retries | 53 tries_left = self._retries |
53 result_type = None | 54 result_type = None |
54 while (result_type != base_test_result.ResultType.PASS | 55 while (result_type != base_test_result.ResultType.PASS |
55 and tries_left > 0): | 56 and tries_left > 0): |
56 try: | 57 try: |
57 self._TestSetUp(test) | 58 self._TestSetUp(test) |
58 result_type = self._RunSingleTest(test) | 59 result_type = self._RunSingleTest(test) |
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 # override | 378 # override |
378 def _RunTest(self, _device, _test): | 379 def _RunTest(self, _device, _test): |
379 raise NotImplementedError | 380 raise NotImplementedError |
380 | 381 |
381 | 382 |
382 class TestDictVersionError(Exception): | 383 class TestDictVersionError(Exception): |
383 pass | 384 pass |
384 | 385 |
385 class PerfTestRunGetStepsError(Exception): | 386 class PerfTestRunGetStepsError(Exception): |
386 pass | 387 pass |
OLD | NEW |