Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(697)

Side by Side Diff: build/android/pylib/instrumentation/instrumentation_test_instance.py

Issue 2514453003: Revert of [android] Stop using isolate.py for data dependency management. (Closed)
Patch Set: manual rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 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 collections 5 import collections
6 import copy 6 import copy
7 import logging 7 import logging
8 import os 8 import os
9 import pickle 9 import pickle
10 import re 10 import re
11 11
12 from devil.android import apk_helper 12 from devil.android import apk_helper
13 from devil.android import md5sum 13 from devil.android import md5sum
14 from pylib import constants 14 from pylib import constants
15 from pylib.base import base_test_result 15 from pylib.base import base_test_result
16 from pylib.base import test_exception 16 from pylib.base import test_exception
17 from pylib.base import test_instance 17 from pylib.base import test_instance
18 from pylib.constants import host_paths 18 from pylib.constants import host_paths
19 from pylib.instrumentation import test_result 19 from pylib.instrumentation import test_result
20 from pylib.instrumentation import instrumentation_parser 20 from pylib.instrumentation import instrumentation_parser
21 from pylib.utils import isolator
21 from pylib.utils import proguard 22 from pylib.utils import proguard
22 23
23 with host_paths.SysPath(host_paths.BUILD_COMMON_PATH): 24 with host_paths.SysPath(host_paths.BUILD_COMMON_PATH):
24 import unittest_util # pylint: disable=import-error 25 import unittest_util # pylint: disable=import-error
25 26
26 # Ref: http://developer.android.com/reference/android/app/Activity.html 27 # Ref: http://developer.android.com/reference/android/app/Activity.html
27 _ACTIVITY_RESULT_CANCELED = 0 28 _ACTIVITY_RESULT_CANCELED = 0
28 _ACTIVITY_RESULT_OK = -1 29 _ACTIVITY_RESULT_OK = -1
29 30
30 _COMMAND_LINE_PARAMETER = 'cmdlinearg-parameter' 31 _COMMAND_LINE_PARAMETER = 'cmdlinearg-parameter'
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 flags = test['flags'] 393 flags = test['flags']
393 if flags.add: 394 if flags.add:
394 display_name = '%s with {%s}' % (display_name, ' '.join(flags.add)) 395 display_name = '%s with {%s}' % (display_name, ' '.join(flags.add))
395 if flags.remove: 396 if flags.remove:
396 display_name = '%s without {%s}' % (display_name, ' '.join(flags.remove)) 397 display_name = '%s without {%s}' % (display_name, ' '.join(flags.remove))
397 return display_name 398 return display_name
398 399
399 400
400 class InstrumentationTestInstance(test_instance.TestInstance): 401 class InstrumentationTestInstance(test_instance.TestInstance):
401 402
402 def __init__(self, args, data_deps_delegate, error_func): 403 def __init__(self, args, isolate_delegate, error_func):
403 super(InstrumentationTestInstance, self).__init__() 404 super(InstrumentationTestInstance, self).__init__()
404 405
405 self._additional_apks = [] 406 self._additional_apks = []
406 self._apk_under_test = None 407 self._apk_under_test = None
407 self._apk_under_test_incremental_install_script = None 408 self._apk_under_test_incremental_install_script = None
408 self._package_info = None 409 self._package_info = None
409 self._suite = None 410 self._suite = None
410 self._test_apk = None 411 self._test_apk = None
411 self._test_apk_incremental_install_script = None 412 self._test_apk_incremental_install_script = None
412 self._test_jar = None 413 self._test_jar = None
413 self._test_package = None 414 self._test_package = None
414 self._test_runner = None 415 self._test_runner = None
415 self._test_support_apk = None 416 self._test_support_apk = None
416 self._initializeApkAttributes(args, error_func) 417 self._initializeApkAttributes(args, error_func)
417 418
418 self._data_deps = None 419 self._data_deps = None
419 self._data_deps_delegate = None 420 self._isolate_abs_path = None
420 self._runtime_deps_path = None 421 self._isolate_delegate = None
421 self._initializeDataDependencyAttributes(args, data_deps_delegate) 422 self._isolated_abs_path = None
423 self._initializeDataDependencyAttributes(args, isolate_delegate)
422 424
423 self._annotations = None 425 self._annotations = None
424 self._excluded_annotations = None 426 self._excluded_annotations = None
425 self._test_filter = None 427 self._test_filter = None
426 self._initializeTestFilterAttributes(args) 428 self._initializeTestFilterAttributes(args)
427 429
428 self._flags = None 430 self._flags = None
429 self._initializeFlagAttributes(args) 431 self._initializeFlagAttributes(args)
430 432
431 self._driver_apk = None 433 self._driver_apk = None
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 break 513 break
512 if not self._package_info: 514 if not self._package_info:
513 logging.warning('Unable to find package info for %s', self._test_package) 515 logging.warning('Unable to find package info for %s', self._test_package)
514 516
515 for apk in args.additional_apks: 517 for apk in args.additional_apks:
516 if not os.path.exists(apk): 518 if not os.path.exists(apk):
517 error_func('Unable to find additional APK: %s' % apk) 519 error_func('Unable to find additional APK: %s' % apk)
518 self._additional_apks = ( 520 self._additional_apks = (
519 [apk_helper.ToHelper(x) for x in args.additional_apks]) 521 [apk_helper.ToHelper(x) for x in args.additional_apks])
520 522
521 def _initializeDataDependencyAttributes(self, args, data_deps_delegate): 523 def _initializeDataDependencyAttributes(self, args, isolate_delegate):
522 self._data_deps = [] 524 self._data_deps = []
523 self._data_deps_delegate = data_deps_delegate 525 if (args.isolate_file_path and
524 self._runtime_deps_path = args.runtime_deps_path 526 not isolator.IsIsolateEmpty(args.isolate_file_path)):
527 if os.path.isabs(args.isolate_file_path):
528 self._isolate_abs_path = args.isolate_file_path
529 else:
530 self._isolate_abs_path = os.path.join(
531 constants.DIR_SOURCE_ROOT, args.isolate_file_path)
532 self._isolate_delegate = isolate_delegate
533 self._isolated_abs_path = os.path.join(
534 constants.GetOutDirectory(), '%s.isolated' % self._test_package)
535 else:
536 self._isolate_delegate = None
525 537
526 if not self._runtime_deps_path: 538 if not self._isolate_delegate:
527 logging.warning('No data dependencies will be pushed.') 539 logging.warning('No data dependencies will be pushed.')
528 540
529 def _initializeTestFilterAttributes(self, args): 541 def _initializeTestFilterAttributes(self, args):
530 if args.test_filter: 542 if args.test_filter:
531 self._test_filter = _CMDLINE_NAME_SEGMENT_RE.sub( 543 self._test_filter = _CMDLINE_NAME_SEGMENT_RE.sub(
532 '', args.test_filter.replace('#', '.')) 544 '', args.test_filter.replace('#', '.'))
533 545
534 def annotation_element(a): 546 def annotation_element(a):
535 a = a.split('=', 1) 547 a = a.split('=', 1)
536 return (a[0], a[1] if len(a) == 2 else None) 548 return (a[0], a[1] if len(a) == 2 else None)
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 @property 681 @property
670 def timeout_scale(self): 682 def timeout_scale(self):
671 return self._timeout_scale 683 return self._timeout_scale
672 684
673 #override 685 #override
674 def TestType(self): 686 def TestType(self):
675 return 'instrumentation' 687 return 'instrumentation'
676 688
677 #override 689 #override
678 def SetUp(self): 690 def SetUp(self):
679 self._data_deps.extend( 691 if self._isolate_delegate:
680 self._data_deps_delegate(self._runtime_deps_path)) 692 self._isolate_delegate.Remap(
693 self._isolate_abs_path, self._isolated_abs_path)
694 self._isolate_delegate.MoveOutputDeps()
695 self._data_deps.extend([(self._isolate_delegate.isolate_deps_dir, None)])
681 696
682 def GetDataDependencies(self): 697 def GetDataDependencies(self):
683 return self._data_deps 698 return self._data_deps
684 699
685 def GetTests(self): 700 def GetTests(self):
686 tests = GetAllTests(self.test_jar) 701 tests = GetAllTests(self.test_jar)
687 inflated_tests = self._ParametrizeTestsWithFlags(self._InflateTests(tests)) 702 inflated_tests = self._ParametrizeTestsWithFlags(self._InflateTests(tests))
688 filtered_tests = FilterTests( 703 filtered_tests = FilterTests(
689 inflated_tests, self._test_filter, self._annotations, 704 inflated_tests, self._test_filter, self._annotations,
690 self._excluded_annotations) 705 self._excluded_annotations)
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 return ParseAmInstrumentRawOutput(raw_output) 757 return ParseAmInstrumentRawOutput(raw_output)
743 758
744 @staticmethod 759 @staticmethod
745 def GenerateTestResults( 760 def GenerateTestResults(
746 result_code, result_bundle, statuses, start_ms, duration_ms): 761 result_code, result_bundle, statuses, start_ms, duration_ms):
747 return GenerateTestResults(result_code, result_bundle, statuses, 762 return GenerateTestResults(result_code, result_bundle, statuses,
748 start_ms, duration_ms) 763 start_ms, duration_ms)
749 764
750 #override 765 #override
751 def TearDown(self): 766 def TearDown(self):
752 pass 767 if self._isolate_delegate:
768 self._isolate_delegate.Clear()
OLDNEW
« no previous file with comments | « build/android/pylib/gtest/gtest_test_instance.py ('k') | build/android/pylib/local/device/local_device_gtest_run.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698