diff options
author | 2024-12-19 10:04:43 -0800 | |
---|---|---|
committer | 2024-12-19 11:56:50 -0800 | |
commit | 254daefe51b34fef36a88a8a9a78fda039e726f7 (patch) | |
tree | ac27eda870d5d0c2b3b8035c02fb0d7dfa588692 /ci/build_test_suites.py | |
parent | d174d4991d6874a57adb6c29c70b48bb2af246c4 (diff) |
Refactor the code to avoid duplicate logic for silent and non-silent
Instead fallback to returning the full list after discovery.
This allows re-using the same logic even when running silent experiment
Change-Id: I9e589cb67f5968aec0f719c2b0108d86b16e9023
Test: presubmit
Bug: 383118767
Diffstat (limited to 'ci/build_test_suites.py')
-rw-r--r-- | ci/build_test_suites.py | 43 |
1 files changed, 8 insertions, 35 deletions
diff --git a/ci/build_test_suites.py b/ci/build_test_suites.py index 7602c64fe0..91cb6215c0 100644 --- a/ci/build_test_suites.py +++ b/ci/build_test_suites.py @@ -84,46 +84,16 @@ class BuildPlanner: packaging_commands_getters = [] # In order to roll optimizations out differently between test suites and # device builds, we have separate flags. - if ( - 'test_suites_zip_test_discovery' + enable_discovery = ('test_suites_zip_test_discovery' in self.build_context.enabled_build_features and not self.args.device_build ) or ( 'device_zip_test_discovery' in self.build_context.enabled_build_features and self.args.device_build - ): - preliminary_build_targets = self._collect_preliminary_build_targets() - else: - preliminary_build_targets = self._legacy_collect_preliminary_build_targets() - - # Keep reporting metrics when test discovery is disabled. - # To be removed once test discovery is fully rolled out. - optimization_rationale = '' - test_discovery_zip_regexes = set() - try: - test_discovery_zip_regexes = self._get_test_discovery_zip_regexes() - logging.info(f'Discovered test discovery regexes: {test_discovery_zip_regexes}') - except test_discovery_agent.TestDiscoveryError as e: - optimization_rationale = e.message - logging.warning(f'Unable to perform test discovery: {optimization_rationale}') - - for target in self.args.extra_targets: - if optimization_rationale: - get_metrics_agent().report_unoptimized_target(target, optimization_rationale) - continue - if target in REQUIRED_BUILD_TARGETS: - get_metrics_agent().report_unoptimized_target(target, 'Required build target.') - continue - try: - regex = r'\b(%s.*)\b' % re.escape(target) - if any(re.search(regex, opt) for opt in test_discovery_zip_regexes): - get_metrics_agent().report_unoptimized_target(target, 'Test artifact used.') - continue - get_metrics_agent().report_optimized_target(target) - except Exception as e: - logging.error(f'unable to parse test discovery output: {repr(e)}') - get_metrics_agent().report_unoptimized_target(target, f'Error in parsing test discovery output for {target}: {repr(e)}') + ) + logging.info(f'Discovery mode is enabled= {enable_discovery}') + preliminary_build_targets = self._collect_preliminary_build_targets(enable_discovery) for target in preliminary_build_targets: target_optimizer_getter = self.target_optimizations.get(target, None) @@ -141,7 +111,7 @@ class BuildPlanner: return BuildPlan(build_targets, packaging_commands_getters) - def _collect_preliminary_build_targets(self): + def _collect_preliminary_build_targets(self, enable_discovery: bool): build_targets = set() try: test_discovery_zip_regexes = self._get_test_discovery_zip_regexes() @@ -175,6 +145,9 @@ class BuildPlanner: get_metrics_agent().report_unoptimized_target(target, f'Error in parsing test discovery output for {target}: {repr(e)}') logging.error(f'unable to parse test discovery output: {repr(e)}') break + # If discovery is not enabled, return the original list + if not enable_discovery: + return self._legacy_collect_preliminary_build_targets() return build_targets |