diff options
author | Julien Desprez <jdesprez@google.com> | 2023-12-13 22:50:58 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-12-13 22:50:58 +0000 |
commit | 7402c33b50ec0126d735e9d9d2479327fc18820c (patch) | |
tree | b2e46c1ea4b04f2b395f9caf1eddd6f6ad95763e | |
parent | e1dc9d63efabd722bbe163b9c727e668d9ec2273 (diff) | |
parent | 8d1ef697d81c3c700a4e1af69a2ac1551a1094c0 (diff) | |
download | tradefederation-7402c33b50ec0126d735e9d9d2479327fc18820c.tar.gz |
In presubmit only consider moving heads for content analysis am: 5f79186fdf am: c602b80109 am: 8d1ef697d8
Original change: https://android-review.googlesource.com/c/platform/tools/tradefederation/+/2874054
Change-Id: I9238a8973bab9ed3084391c4cf2b515d378a448b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
4 files changed, 42 insertions, 7 deletions
diff --git a/javatests/com/android/tradefed/build/content/TestContentAnalyzerTest.java b/javatests/com/android/tradefed/build/content/TestContentAnalyzerTest.java index 380d3d12a..4c35208ea 100644 --- a/javatests/com/android/tradefed/build/content/TestContentAnalyzerTest.java +++ b/javatests/com/android/tradefed/build/content/TestContentAnalyzerTest.java @@ -75,6 +75,7 @@ public class TestContentAnalyzerTest { TestContentAnalyzer analyzer = new TestContentAnalyzer( mTestInformation, + false, Arrays.asList(analysisContext), new ArrayList<String>(), new ArrayList<String>()); @@ -104,6 +105,7 @@ public class TestContentAnalyzerTest { TestContentAnalyzer analyzer = new TestContentAnalyzer( mTestInformation, + false, Arrays.asList(analysisContext), new ArrayList<String>(), new ArrayList<String>()); @@ -139,6 +141,7 @@ public class TestContentAnalyzerTest { TestContentAnalyzer analyzer = new TestContentAnalyzer( mTestInformation, + false, Arrays.asList(analysisContext), new ArrayList<String>(), new ArrayList<String>()); @@ -174,6 +177,7 @@ public class TestContentAnalyzerTest { TestContentAnalyzer analyzer = new TestContentAnalyzer( mTestInformation, + false, Arrays.asList(analysisContext), Arrays.asList("module2"), new ArrayList<String>()); @@ -208,6 +212,7 @@ public class TestContentAnalyzerTest { TestContentAnalyzer analyzer = new TestContentAnalyzer( mTestInformation, + false, Arrays.asList(analysisContext), new ArrayList<String>(), new ArrayList<String>()); diff --git a/src/com/android/tradefed/build/content/ContentAnalysisContext.java b/src/com/android/tradefed/build/content/ContentAnalysisContext.java index b6705e574..0b052f17b 100644 --- a/src/com/android/tradefed/build/content/ContentAnalysisContext.java +++ b/src/com/android/tradefed/build/content/ContentAnalysisContext.java @@ -25,7 +25,8 @@ public class ContentAnalysisContext { public enum AnalysisMethod { FILE, MODULE_XTS, - SANDBOX_WORKDIR + SANDBOX_WORKDIR, + BUILD_KEY // Search directly for a specific item in build info } private final String contentEntry; diff --git a/src/com/android/tradefed/build/content/TestContentAnalyzer.java b/src/com/android/tradefed/build/content/TestContentAnalyzer.java index f6a54b0b6..54cff2928 100644 --- a/src/com/android/tradefed/build/content/TestContentAnalyzer.java +++ b/src/com/android/tradefed/build/content/TestContentAnalyzer.java @@ -62,16 +62,19 @@ public class TestContentAnalyzer { Arrays.asList("host/testcases/lib/", "host/testcases/lib64/")); private final TestInformation information; + private final boolean presubmitMode; private final List<ContentAnalysisContext> contexts; private final List<String> discoveredModules; private final List<String> dependencyFiles; public TestContentAnalyzer( TestInformation information, + boolean presubmitMode, List<ContentAnalysisContext> contexts, List<String> discoveredModules, List<String> dependencyFiles) { this.information = information; + this.presubmitMode = presubmitMode; this.contexts = contexts; this.discoveredModules = discoveredModules; this.dependencyFiles = dependencyFiles; @@ -82,11 +85,24 @@ public class TestContentAnalyzer { CLog.d("Analysis doesn't currently support multi-builds."); return null; } + List<ContentAnalysisContext> activeContexts = new ArrayList<>(contexts); try (CloseableTraceScope ignored = new CloseableTraceScope("content_analysis")) { InvocationMetricLogger.addInvocationMetrics( InvocationMetricKey.CONTENT_BASED_ANALYSIS_ATTEMPT, 1); + if (presubmitMode) { + for (ContentAnalysisContext context : contexts) { + if (context.contentInformation() != null + && !context.contentInformation().currentBuildId.startsWith("P")) { + activeContexts.remove(context); + CLog.d( + "Removing context '%s' from content analysis in presubmit as it's" + + " not a moving head.", + context); + } + } + } // Handle invalidation should it be set. - for (ContentAnalysisContext context : contexts) { + for (ContentAnalysisContext context : activeContexts) { if (context.abortAnalysis()) { CLog.w("Analysis was aborted."); InvocationMetricLogger.addInvocationMetrics( @@ -94,14 +110,26 @@ public class TestContentAnalyzer { return null; } } - AnalysisMethod method = contexts.get(0).analysisMethod(); + List<ContentAnalysisContext> buildKeyAnalysis = + activeContexts.stream() + .filter(c -> AnalysisMethod.BUILD_KEY.equals(c.analysisMethod())) + .collect(Collectors.toList()); + // Analyze separately the BUILD_KEY files + for (ContentAnalysisContext context : buildKeyAnalysis) { + if (AnalysisMethod.BUILD_KEY.equals(context.analysisMethod())) { + // TODO: Implement support + return null; + } + } + activeContexts.removeAll(buildKeyAnalysis); + AnalysisMethod method = activeContexts.get(0).analysisMethod(); switch (method) { case MODULE_XTS: - return xtsAnalysis(information.getBuildInfo(), contexts.get(0)); + return xtsAnalysis(information.getBuildInfo(), activeContexts.get(0)); case FILE: - return fileAnalysis(information.getBuildInfo(), contexts.get(0)); + return fileAnalysis(information.getBuildInfo(), activeContexts.get(0)); case SANDBOX_WORKDIR: - return workdirAnalysis(information.getBuildInfo(), contexts); + return workdirAnalysis(information.getBuildInfo(), activeContexts); default: // do nothing for the rest for now. return null; diff --git a/src/com/android/tradefed/result/skipped/SkipManager.java b/src/com/android/tradefed/result/skipped/SkipManager.java index c5d5f4229..79139d2cb 100644 --- a/src/com/android/tradefed/result/skipped/SkipManager.java +++ b/src/com/android/tradefed/result/skipped/SkipManager.java @@ -178,6 +178,7 @@ public class SkipManager implements IDisableable { if (results == null) { return false; } + boolean presubmit = "WORK_NODE".equals(information.getContext().getAttribute("trigger")); // Do the analysis regardless if (results.hasTestsArtifacts()) { if (mTestArtifactsAnalysisContent.isEmpty()) { @@ -189,6 +190,7 @@ public class SkipManager implements IDisableable { TestContentAnalyzer analyzer = new TestContentAnalyzer( information, + presubmit, mTestArtifactsAnalysisContent, mModulesDiscovered, mDependencyFiles); @@ -215,7 +217,6 @@ public class SkipManager implements IDisableable { if (!mConsideredForContent) { return false; } - boolean presubmit = "WORK_NODE".equals(information.getContext().getAttribute("trigger")); if (!presubmit) { // Eventually support postsubmit analysis. InvocationMetricLogger.addInvocationMetrics( |