summaryrefslogtreecommitdiff
path: root/bazel/testSrc/com/android/tools/gradle/BenchmarkTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'bazel/testSrc/com/android/tools/gradle/BenchmarkTest.java')
-rw-r--r--bazel/testSrc/com/android/tools/gradle/BenchmarkTest.java38
1 files changed, 36 insertions, 2 deletions
diff --git a/bazel/testSrc/com/android/tools/gradle/BenchmarkTest.java b/bazel/testSrc/com/android/tools/gradle/BenchmarkTest.java
index 5a81ebd86d..ea89b6c670 100644
--- a/bazel/testSrc/com/android/tools/gradle/BenchmarkTest.java
+++ b/bazel/testSrc/com/android/tools/gradle/BenchmarkTest.java
@@ -20,6 +20,7 @@ import com.android.SdkConstants;
import com.android.annotations.NonNull;
import com.android.annotations.Nullable;
import com.android.testutils.diff.UnifiedDiff;
+import com.android.testutils.TestUtils;
import com.android.tools.gradle.benchmarkassertions.BenchmarkProjectAssertion;
import com.android.tools.perflogger.Benchmark;
import com.android.tools.perflogger.PerfData;
@@ -29,6 +30,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
+import java.nio.file.Path;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
@@ -76,6 +78,7 @@ public class BenchmarkTest {
private String yourKitAgentPath = null;
private String yourKitLibraryPath = null;
private String yourKitSettingsPath = null;
+ private boolean useJdk11 = false;
@Before
public void setUp() throws Exception {
@@ -176,6 +179,10 @@ public class BenchmarkTest {
if (value != null && !value.isEmpty()) {
enableYourKit = Boolean.parseBoolean(value);
}
+ value = System.getProperty("use_jdk11");
+ if (value != null && !value.isEmpty()) {
+ useJdk11 = Boolean.parseBoolean(value);
+ }
yourKitAgentPath = getStringProperty("yourkit_agent_path");
yourKitLibraryPath = getStringProperty("yourkit_library_path");
yourKitSettingsPath = getStringProperty("yourkit_settings");
@@ -314,8 +321,11 @@ public class BenchmarkTest {
}
File projectRoot = new File(src, testProjectGradleRootFromSourceRoot);
- addJvmArgs(
- new File(projectRoot, "gradle.properties"), enableYourKit, src, yourKitAgentPath);
+ File gradleProperties = new File(projectRoot, "gradle.properties");
+ addJvmArgs(gradleProperties, enableYourKit, src, yourKitAgentPath);
+ if (useJdk11) {
+ useJdk11ForGradle(gradleProperties);
+ }
try (Gradle gradle = new Gradle(projectRoot, out, distribution)) {
for (File repo : repos) {
gradle.addRepo(repo);
@@ -424,6 +434,8 @@ public class BenchmarkTest {
String jvmArgs = p.getProperty("org.gradle.jvmargs", "");
jvmArgs += " -XX:+UseParallelGC";
+ jvmArgs += " --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED";
+ jvmArgs += " --add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED";
// See https://www.yourkit.com/docs/java/help/startup_options.jsp for a comprehensive list
// of all agent options.
if (enableYourKit) {
@@ -455,6 +467,28 @@ public class BenchmarkTest {
}
}
+ /**
+ * Sets java.home to point to JDK11 if Gradle versions is less than 7.3
+ *
+ * Gradle supports JDK17 satrting from version 7.3 Also Gradle prior to 6.9 don't works well
+ * with symlinks, so path from bazel runfiles is resolved to real one.
+ */
+ private void useJdk11ForGradle(File gradleProperties) throws IOException {
+ Path javaPath = TestUtils.getJava11Jdk().resolve("release").toRealPath();
+ Path javaHome = javaPath.getParent();
+
+ Properties p = new Properties();
+ if (gradleProperties.exists()) {
+ try (FileInputStream fis = new FileInputStream(gradleProperties)) {
+ p.load(fis);
+ }
+ }
+ p.put("org.gradle.java.home", javaHome.toString());
+ try (FileWriter fw = new FileWriter(gradleProperties)) {
+ p.store(fw, "");
+ }
+ }
+
private static String hostName() {
if (SdkConstants.CURRENT_PLATFORM == SdkConstants.PLATFORM_LINUX) {
return "Linux";