aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Desprez <jdesprez@google.com>2023-12-13 22:50:58 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-12-13 22:50:58 +0000
commit7402c33b50ec0126d735e9d9d2479327fc18820c (patch)
treeb2e46c1ea4b04f2b395f9caf1eddd6f6ad95763e
parente1dc9d63efabd722bbe163b9c727e668d9ec2273 (diff)
parent8d1ef697d81c3c700a4e1af69a2ac1551a1094c0 (diff)
downloadtradefederation-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>
-rw-r--r--javatests/com/android/tradefed/build/content/TestContentAnalyzerTest.java5
-rw-r--r--src/com/android/tradefed/build/content/ContentAnalysisContext.java3
-rw-r--r--src/com/android/tradefed/build/content/TestContentAnalyzer.java38
-rw-r--r--src/com/android/tradefed/result/skipped/SkipManager.java3
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(