Aexyn / caliper

Automatically exported from code.google.com/p/caliper
Apache License 2.0
0 stars 0 forks source link

caliper 1.0-beta doesn't handle spaces in paths #245

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Try to run a caliper benchmark from within intellij idea
2.
3.

What is the expected output? What do you see instead?
The benchmark fails with:
[trial-1] Exception in thread "main" java.lang.NoClassDefFoundError: IDEA
[trial-1] Caused by: java.lang.ClassNotFoundException: IDEA
[trial-1]   at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[trial-1]   at java.security.AccessController.doPrivileged(Native Method)
[trial-1]   at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[trial-1]   at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
[trial-1]   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[trial-1]   at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Caliper was launched with the following command line: 
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java 
-Xmx1256m -Didea.launcher.port=7534 
"-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 12.app/bin" 
-Dfile.encoding=UTF-8 -classpath 
"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/deploy.jar
:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/dt.jar:/Sy
stem/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/javaws.jar:/Sy
stem/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/jce.jar:/Syste
m/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/jconsole.jar:/Sys
tem/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/management-agen
t.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/plugi
n.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/sa-jd
i.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charse
ts.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/class
es.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.
jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar:/
System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/apple_pr
ovider.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/
ext/dnsns.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/l
ib/ext/localedata.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Content
s/Home/lib/ext/sunjce_provider.jar:/System/Library/Java/JavaVirtualMachines/1.6.
0.jdk/Contents/Home/lib/ext/sunpkcs11.jar:/Users/sam/dev/mahi/MahiModel/util-lib
/target/test-classes:/Users/sam/dev/mahi/MahiModel/util-lib/target/classes:/User
s/sam/dev/mahi/MahiModel/protobuf-annotations/target/classes:/Users/sam/dev/mahi
/MahiModel/util-model/target/classes:/Users/sam/.m2/repository/org/slf4j/slf4j-a
pi/1.7.2/slf4j-api-1.7.2.jar:/Users/sam/.m2/repository/net/jcip/jcip-annotations
/1.0/jcip-annotations-1.0.jar:/Users/sam/.m2/repository/joda-time/joda-time/2.1/
joda-time-2.1.jar:/Users/sam/.m2/repository/org/apache/commons/commons-lang3/3.1
/commons-lang3-3.1.jar:/Users/sam/.m2/repository/org/codehaus/jackson/jackson-co
re-asl/1.9.9/jackson-core-asl-1.9.9.jar:/Users/sam/dev/mahi/MahiModel/test/targe
t/classes:/Users/sam/.m2/repository/org/hamcrest/hamcrest-core/1.3.RC2/hamcrest-
core-1.3.RC2.jar:/Users/sam/.m2/repository/org/hamcrest/hamcrest-library/1.3.RC2
/hamcrest-library-1.3.RC2.jar:/Users/sam/.m2/repository/org/jmock/jmock/2.6.0-RC
2/jmock-2.6.0-RC2.jar:/Users/sam/.m2/repository/org/jmock/jmock-junit4/2.6.0/jmo
ck-junit4-2.6.0.jar:/Users/sam/.m2/repository/junit/junit-dep/4.10/junit-dep-4.1
0.jar:/Users/sam/.m2/repository/org/jmock/jmock-legacy/2.6.0/jmock-legacy-2.6.0.
jar:/Users/sam/.m2/repository/org/objenesis/objenesis/1.2/objenesis-1.2.jar:/Use
rs/sam/.m2/repository/cglib/cglib-nodep/2.2.2/cglib-nodep-2.2.2.jar:/Users/sam/.
m2/repository/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar:/Users/sam/.m2/repo
sitory/com/google/guava/guava/14.0.1/guava-14.0.1.jar:/Users/sam/.m2/repository/
commons-io/commons-io/2.4/commons-io-2.4.jar:/Users/sam/.m2/repository/com/lmax/
disruptor/3.0.1.Mahi-SNAPSHOT/disruptor-3.0.1.Mahi-SNAPSHOT.jar:/Users/sam/.m2/r
epository/org/slf4j/slf4j-simple/1.7.2/slf4j-simple-1.7.2.jar:/Users/sam/.m2/rep
ository/com/google/caliper/caliper/1.0-beta-mahi/caliper-1.0-beta-mahi.jar:/User
s/sam/.m2/repository/com/google/code/gson/gson/2.2.2/gson-2.2.2.jar:/Users/sam/.
m2/repository/com/sun/jersey/jersey-client/1.11/jersey-client-1.11.jar:/Users/sa
m/.m2/repository/com/sun/jersey/jersey-core/1.11/jersey-core-1.11.jar:/Users/sam
/.m2/repository/com/google/inject/guice/3.0/guice-3.0.jar:/Users/sam/.m2/reposit
ory/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/sam/.m2/repository/aop
alliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/sam/.m2/repository/com/googl
e/inject/extensions/guice-multibindings/3.0/guice-multibindings-3.0.jar:/Users/s
am/.m2/repository/com/google/code/java-allocation-instrumenter/java-allocation-i
nstrumenter/2.1/java-allocation-instrumenter-2.1.jar:/Users/sam/.m2/repository/o
rg/ow2/asm/asm/4.0/asm-4.0.jar:/Users/sam/.m2/repository/org/ow2/asm/asm-analysi
s/4.0/asm-analysis-4.0.jar:/Users/sam/.m2/repository/org/ow2/asm/asm-tree/4.0/as
m-tree-4.0.jar:/Users/sam/.m2/repository/org/ow2/asm/asm-commons/4.0/asm-commons
-4.0.jar:/Users/sam/.m2/repository/org/ow2/asm/asm-util/4.0/asm-util-4.0.jar:/Us
ers/sam/.m2/repository/org/ow2/asm/asm-xml/4.0/asm-xml-4.0.jar:/Applications/Int
elliJ IDEA 12.app/lib/idea_rt.jar" 
com.intellij.rt.execution.application.AppMain 
com.x.concurrent.AsyncBatchingProcedurePerfTest --verbose -i micro

the first offending entry is "-Didea.launcher.bin.path=/Applications/IntelliJ 
IDEA 12.app/bin" (the quotes are included in the command line) which caliper 
converts to:

Apr 25, 2013 9:59:54 AM com.google.caliper.runner.ExperimentingCaliperRun 
createWorkerProcessBuilder
FINE: Java(default) args: [-Xmx1256m, -Didea.launcher.port=7534, 
-Didea.launcher.bin.path=/Applications/IntelliJ, IDEA, 12.app/bin, 
-Dfile.encoding=UTF-8]

What version of the product are you using? On what operating system?
This is with a locally built version of caliper 1.0-beta on Mac OS X

Please provide any additional information below.

The code at fault is CaliperConfig#getArgs because it uses an ARG_SPLITTER.on(' 
') 

though I can't quite work out a better way of tokenizing the string. Is there 
any need to split and re assemble the command line or can it just be passed 
through whole sale? 

Original issue reported on code.google.com by sam.bar...@mahifx.com on 25 Apr 2013 at 10:09

GoogleCodeExporter commented 9 years ago
This all sounds exactly right to me.  Sorry for the bug.

As an aside, if you're trying to run microbenchmarks on OS X, you're gonna have 
a bad time.</meme>  System.nanoTime on OS X is sort of awful in that it'll only 
return multiples of 1000, so the granularity of your measurements might be 
pretty bad.  Be careful to use long timing intervals to make sure that you get 
lots of reps so that the issues with the clock are factored out.

Original comment by gak@google.com on 25 Apr 2013 at 4:15

GoogleCodeExporter commented 9 years ago
Thanks for the warning re benchmarks on OS X. The runs we care about will take 
place on Linux and be executed through maven or jenkins I was just running in 
idea to try and get everything working.

Original comment by sam.bar...@mahifx.com on 25 Apr 2013 at 4:30

GoogleCodeExporter commented 9 years ago
This is fixed now in HEAD.  You can use spaces by escaping with a \ just like 
on the command line.

Original comment by gak@google.com on 26 Apr 2013 at 5:10

GoogleCodeExporter commented 9 years ago

Original comment by gak@google.com on 26 Apr 2013 at 5:10

GoogleCodeExporter commented 9 years ago
IntelliJ escapes spaces with double quotes instead of \, so I'm not sure this 
is really fixed.

Original comment by wsimm...@gmail.com on 4 Jun 2013 at 8:48

GoogleCodeExporter commented 9 years ago
If you can reproduce a failure, I'd be happy to look into it.

Original comment by gak@google.com on 4 Jun 2013 at 9:46