aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2017-02-21 22:36:24 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-02-21 22:36:24 +0000
commit4c8faefc7ec6ad578ee09c031006bff663c6cc45 (patch)
tree425f9426ddc529d4e518445c5c8052ec9d63a6e5
parent7b34de702608006e3ef87627c997ec740d4b4d5b (diff)
parent0e750eb0750150904c005a2a68e49ba2993913eb (diff)
downloadcaliper-oreo-r5-release.tar.gz
vm-config: Allow platforms to construct their own classpath arguments. am: 0620cdf495 am: f8262c0676android-vts-8.0_r9android-vts-8.0_r8android-vts-8.0_r7android-vts-8.0_r6android-vts-8.0_r2android-vts-8.0_r13android-vts-8.0_r12android-vts-8.0_r11android-vts-8.0_r10android-vts-8.0_r1android-security-8.0.0_r54android-security-8.0.0_r53android-security-8.0.0_r52android-cts-8.0_r9android-cts-8.0_r8android-cts-8.0_r7android-cts-8.0_r6android-cts-8.0_r5android-cts-8.0_r4android-cts-8.0_r3android-cts-8.0_r26android-cts-8.0_r25android-cts-8.0_r24android-cts-8.0_r23android-cts-8.0_r22android-cts-8.0_r21android-cts-8.0_r20android-cts-8.0_r2android-cts-8.0_r19android-cts-8.0_r18android-cts-8.0_r17android-cts-8.0_r16android-cts-8.0_r15android-cts-8.0_r14android-cts-8.0_r13android-cts-8.0_r12android-cts-8.0_r11android-cts-8.0_r10android-cts-8.0_r1android-8.0.0_r9android-8.0.0_r7android-8.0.0_r51android-8.0.0_r50android-8.0.0_r49android-8.0.0_r48android-8.0.0_r47android-8.0.0_r46android-8.0.0_r45android-8.0.0_r44android-8.0.0_r43android-8.0.0_r42android-8.0.0_r41android-8.0.0_r40android-8.0.0_r4android-8.0.0_r39android-8.0.0_r38android-8.0.0_r37android-8.0.0_r36android-8.0.0_r35android-8.0.0_r32android-8.0.0_r31android-8.0.0_r30android-8.0.0_r3android-8.0.0_r29android-8.0.0_r28android-8.0.0_r2android-8.0.0_r17android-8.0.0_r16android-8.0.0_r15android-8.0.0_r13android-8.0.0_r12android-8.0.0_r11android-8.0.0_r10android-8.0.0_r1security-oc-releaseoreo-vts-releaseoreo-security-releaseoreo-releaseoreo-r6-releaseoreo-r5-releaseoreo-r4-releaseoreo-r3-releaseoreo-r2-releaseoreo-devoreo-cts-release
am: 0e750eb075 Change-Id: I2ea4f4f0085ce660dc9462f1375224dcd8d08e98
-rw-r--r--caliper/src/main/java/com/google/caliper/config/VmConfig.java4
-rw-r--r--caliper/src/main/java/com/google/caliper/platform/Platform.java13
-rw-r--r--caliper/src/main/java/com/google/caliper/platform/dalvik/DalvikPlatform.java18
-rw-r--r--caliper/src/main/java/com/google/caliper/runner/WorkerProcess.java8
4 files changed, 36 insertions, 7 deletions
diff --git a/caliper/src/main/java/com/google/caliper/config/VmConfig.java b/caliper/src/main/java/com/google/caliper/config/VmConfig.java
index fcb63ca..599fa69 100644
--- a/caliper/src/main/java/com/google/caliper/config/VmConfig.java
+++ b/caliper/src/main/java/com/google/caliper/config/VmConfig.java
@@ -79,8 +79,8 @@ public final class VmConfig {
return platform.name();
}
- public String workerClassPath() {
- return platform.workerClassPath();
+ public ImmutableList<String> workerClassPathArgs() {
+ return platform.workerClassPathArgs();
}
public ImmutableSet<String> workerProcessArgs() {
diff --git a/caliper/src/main/java/com/google/caliper/platform/Platform.java b/caliper/src/main/java/com/google/caliper/platform/Platform.java
index 44b6cd2..c5392ce 100644
--- a/caliper/src/main/java/com/google/caliper/platform/Platform.java
+++ b/caliper/src/main/java/com/google/caliper/platform/Platform.java
@@ -19,6 +19,7 @@ package com.google.caliper.platform;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import java.io.File;
@@ -65,7 +66,17 @@ public abstract class Platform {
/**
* The class path that should be used to run a worker..
*/
- public abstract String workerClassPath();
+ protected abstract String workerClassPath();
+
+ /**
+ * Construct the set of arguments that specify the classpath which
+ * is passed to the worker.
+ *
+ * <p>By default this is just the {@code -cp $workerClassPath}.</p>
+ */
+ public ImmutableList<String> workerClassPathArgs() {
+ return ImmutableList.of("-cp", workerClassPath());
+ }
/**
* Checks to see whether the specific class is supported on this platform.
diff --git a/caliper/src/main/java/com/google/caliper/platform/dalvik/DalvikPlatform.java b/caliper/src/main/java/com/google/caliper/platform/dalvik/DalvikPlatform.java
index 3f3e56c..00833f0 100644
--- a/caliper/src/main/java/com/google/caliper/platform/dalvik/DalvikPlatform.java
+++ b/caliper/src/main/java/com/google/caliper/platform/dalvik/DalvikPlatform.java
@@ -22,6 +22,7 @@ import com.google.caliper.platform.Platform;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.base.Joiner;
@@ -83,11 +84,26 @@ public final class DalvikPlatform extends Platform {
}
@Override
- public String workerClassPath() {
+ protected String workerClassPath() {
// TODO(user): Find a way to get the class path programmatically from the class loader.
return System.getProperty("java.class.path");
}
+ /**
+ * Construct the set of arguments that specify the classpath which
+ * is passed to the worker.
+ *
+ * <p>
+ * Use {@code -Djava.class.path=$classpath} for dalvik because it is supported
+ * by dalvikvm and also by app_process (which doesn't recognize "-cp args").
+ * </p>
+ */
+ @Override
+ public ImmutableList<String> workerClassPathArgs() {
+ String classPathArgs = String.format("-Djava.class.path=%s", workerClassPath());
+ return ImmutableList.of(classPathArgs);
+ }
+
@Override
public Collection<String> inputArguments() {
return Collections.emptyList();
diff --git a/caliper/src/main/java/com/google/caliper/runner/WorkerProcess.java b/caliper/src/main/java/com/google/caliper/runner/WorkerProcess.java
index 144a21c..d0c0bb5 100644
--- a/caliper/src/main/java/com/google/caliper/runner/WorkerProcess.java
+++ b/caliper/src/main/java/com/google/caliper/runner/WorkerProcess.java
@@ -201,9 +201,11 @@ import javax.inject.Inject;
logger.fine(String.format("Benchmark(%s) %s args: %s", benchmarkClass.name(), platformName,
benchmarkJvmOptions));
- String classPath = vmConfig.workerClassPath();
- Collections.addAll(args, "-cp", classPath);
- logger.finer(String.format("Class path: %s", classPath));
+ ImmutableList<String> classPathArgs = vmConfig.workerClassPathArgs();
+ args.addAll(classPathArgs);
+ logger.finer(String.format("Class path args: %s", classPathArgs));
+
+ // TODO(iam): consider forwarding -Djava.library.path= for JNI library support.
return args;
}
}