[JAPEX-24] Support for JVM forking to run benchmarks that use native code Created: 24/Jul/08  Updated: 18/Feb/11

Status: Open
Project: japex
Component/s: engine
Affects Version/s: current
Fix Version/s: milestone 1

Type: New Feature Priority: Critical
Reporter: jeffrey_sinclair Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 24

 Description   

Due to the way each Japex driver is contained in it's own classloader it is not
always possible to create benchmarks that rely on native code.

The main problem is that the running of different drivers can result in multiple
calls to System.loadLibrary().

Japex should be able to support the following benchmark scenarios that involve
native code:

  • Benchmarks that compare Java implementations that share the same native code.
  • Benchmarks that compare Java implementations that contain different native
    code.

When benchmarking drivers that share the same native code you have to ensure
that System.loadLibrary() is not called multiple times in the same JVM instance.
Similarly for running tests that use different versions of a library you will
need to use a different JVM if the shared library has the same name.

The former case could be solved by having a hook in the Japex runtime that
allows you to customize the JapexClassLoader to ensure that the native library
is only loaded once but this assumes that you have control over the native
library which is not always the case: for example your benchmark could rely on a
3rd party Java library that internally calls System.loadLibrary(). Having such a
hook would not also work for the 2nd case where you want to test different
version of the same native library together.

One mechanism that could help here is if Japex supported the following:

  • A japex.libraryPath property that can be set per driver instance.
  • An attribute on the driver called 'fork' that would fork a new JVM.

Even if the native library could be shared across drivers, you probably still
want complete isolation to ensure micro-benchmarks are fair, so forking should
probably the recommended solution for any kind of tests that involve a native
dependency.



 Comments   
Comment by bimargulies [ 18/Feb/11 ]

One approach is to wait for the maven surefire refactoring to produce easily stealable forking code. Another is to borrow from ant.





[JAPEX-27] invalid XML output Created: 20/Feb/09  Updated: 25/Feb/09

Status: Open
Project: japex
Component/s: engine
Affects Version/s: current
Fix Version/s: milestone 1

Type: Bug Priority: Critical
Reporter: dprunier Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 27

 Description   

If configuration file contains parameters with entities (e.g. %lt, the XML
serialization does not escape such characters resulting in invalid output.



 Comments   
Comment by Santiago Pericas-Geertsen [ 25/Feb/09 ]

Did you mean < instead of %lt;? If so, it would be a character entity. Would it be possible for you to
attach a config file showing the problem?

Comment by dprunier [ 25/Feb/09 ]

Yeah, the entity <. It is correcly decoded (thanks to jaxb) but when
serialized to XM it is not encoded back to <. It is very easy to reproduce:
simply add a param <param name="test" value="<" /> in any valid configuration
file and look the XML report.

Comment by dprunier [ 25/Feb/09 ]

BTW, the issue is the same for every element in the config file. The fact that
it is actually parsed with a real XML parser but serialized printing strings to
a file is very likely to lead to corruption of the output.

Morover, this is a slightly different issue, but having parameter names
serialized as element names may also leads to invalid XML (since parameters
names are not explicitely restricted to NMTOKEN).

Comment by Santiago Pericas-Geertsen [ 25/Feb/09 ]

Sure, this makes sense. I believe someone else reported this before. It is kind of a global change, so I
don't think I'll be able to get to it anytime soon. Hopefully, you can work around it.

Comment by dprunier [ 25/Feb/09 ]

This is not that much complicated to throw in a ContentHandler instead of a
StringBuffer (done this millions of times), and that could be backward
compatible (keeping the old method). If i have some time, i might give it a shot.

For the parameter name as element name, this is not big deal, it should simply
be checked by the schema.

Thanks,





[JAPEX-1] Default class path should include JDSL library Created: 01/Feb/06  Updated: 01/Feb/06

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: Santiago Pericas-Geertsen Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 1

 Description   

If a benchmark uses the JDSL library, it needs to explicitly include it in its class path. Since the library is
part of the Japex, this could be done implicitly for ease of use.






[JAPEX-2] Syntax of japex.classPath is awkward Created: 01/Feb/06  Updated: 01/Feb/06

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: Santiago Pericas-Geertsen Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 2

 Description   

A syntax that includes a path separator such as ":" would be preferred over having to set japex.classPath
multiple times. For backward compatibility, both should be supported.






[JAPEX-3] Tool to generate HTML report from XML report Created: 01/Feb/06  Updated: 01/Feb/06

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: Santiago Pericas-Geertsen Assignee: Joe Wang
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 3

 Description   

If an error occurs while generating the HTML report, there's currently no way to re-generate it using the
XML report. There should be a command line tool for that.






[JAPEX-4] Add Support for a Microseconds Unit Created: 01/Feb/06  Updated: 01/Feb/06

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: Santiago Pericas-Geertsen Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 4

 Description   

When testing latency, a unit more precise than millis is needed in some cases. Adding support for
microseconds would be useful.






[JAPEX-6] Create single jar for report files Created: 08/Feb/06  Updated: 08/Feb/06

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: najmi Assignee: japex-issues
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All
URL: jar:http://ebxmlrr.sourceforge.net/japex/japex-2006_02_08_15_16.jar!/index.html


Issuezilla Id: 6

 Description   

In order to share my japex results with my team in the freebXML Registry OS
project I create a jar file of the results and scp them
to the team web site. I then send the team the URL to the test as follows:

jar:http://ebxmlrr.sourceforge.net/japex/japex-2006_02_08_15_16.jar!/index.html

It would be really nice if japex would do this automatically and list the URL at
the end of report as:

jar:file:///..../japex-2006_02_08_15_16.jar!/index.html

The benefit is that the files involved in a japex rn are all packaged and self
contained in a jar file.

Is this something to consider as a feature? If this sounds good, then I can
share java code to do this sort of thing, with the japex dev team, in case it helps.

Let me know what you think. Thanks.






[JAPEX-7] Infinite loop when param missing Created: 21/Feb/06  Updated: 21/Feb/06

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Bug Priority: Major
Reporter: Santiago Pericas-Geertsen Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 7

 Description   

it seems that you run into an infinite loop when you forget to specify japex.warmupIterations or
japex.warmupTime in the JAPEX config file. IMHO there should be an exception or a warning and a
reasonable default when youd don't specify these parameters.






[JAPEX-9] Output results to CSV Created: 11/May/06  Updated: 11/May/06

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: derekdb Assignee: japex-issues
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 9

 Description   

For analyzing performance results, I have found the ability to load the results
into a Speadsheet to be invaluable. The easiest way to do that is to output a
comma-seperated-values file. Below is a simple XSLT that transforms the
report.xml file to a CSV file of the form:

Name,InputFile,Driver1,Driver2...,DriverLast
TestCase1,input-file,driver1-resultValue,driver2-resultValue,...,driverLast-resultValue
TestCase2,input-file,driver1-resultValue,driver2-resultValue,...,driverLast-resultValue
TestCase3,input-file,driver1-resultValue,driver2-resultValue,...,driverLast-resultValue

Here is the XSLT:
<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:x='http://www.sun.com/japex/testSuiteReport'>
<xsl:output method='text'/>
<xsl:template match='/'>
<!-- title -->
<xsl:for-each select='/x:testSuiteReport/x:driver[1]'>
<xsl:for-each select='x:testCase[1]'>
<xsl:variable name='name' select='@name'/>
<xsl:text>Name,InputFile</xsl:text>
<xsl:for-each select='/x:testSuiteReport/x:driver/x:testCase[@name=$name]'>
<xsl:text>,</xsl:text>
<xsl:value-of select='../@name'/>
</xsl:for-each>
<xsl:text xml:space="preserve">
</xsl:text>
</xsl:for-each>
</xsl:for-each>
<!-- iterate through each case, joining by testCase/@name -->
<xsl:for-each select='/x:testSuiteReport/x:driver[1]'>
<xsl:for-each select='x:testCase'>
<xsl:variable name='name' select='@name'/>
<xsl:value-of select="$name"/>
<xsl:text>,</xsl:text>
<xsl:value-of select='inputfile'/>
<xsl:for-each select='/x:testSuiteReport/x:driver/x:testCase[@name=$name]'>
<xsl:text>,</xsl:text>
<xsl:value-of select='x:resultValue'/>
</xsl:for-each>
<xsl:text xml:space="preserve">
</xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>






[JAPEX-10] Make Japex less file dependent Created: 14/May/06  Updated: 14/May/06

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: mernst Assignee: japex-issues
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 10

 Description   

Hi, I downloaded Japex for some benchmarking on my own. I'm a little
disappointed that Japex is so dependent on a config file. Classes Japex and
Engine are so designed that it is impossible to programmatically create a
testsuite and have it run: the only entrypoint takes a filename and the rest is
private methods.

Thanks
Matthias






[JAPEX-11] Multi-thread tests should include warm-down Created: 22/May/06  Updated: 22/May/06

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Bug Priority: Major
Reporter: derekdb Assignee: japex-issues
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 11

 Description   

The way the multi-thread support works currently, means that the start and end
of each warmup/run loop is potentially working without all the threads running.
Statistically, this shouldn't be much of a problem, since your run-time should
be long enough to avoid this, but it is also esy to fix.

The way to fix this with minimal change to the current design is 2-fold. First,
add a warm-down phase. Second, rather than having the Engine initiate Warmup
and Run phases individuall, it should just initiate the driver and the driver
first does the warmup loops, then the run loops, then the warmdown loop. To get
the greatest synergy of overlap in the run phase (when using timed runs), you
can initate each driver with end-warmup, end-run, end-warmdown tick counts,
which will help keep all the drivers in sync.

I have coded this up by replacing the setEndTime() method with a setLimits(...)
method which takes end-times and max loop-counts for each of the 3 phases.
warmup() and run() methods go away, leaving just call() implemented to step
through the 3 phases using the limits provided by the call to setLimits(...).

Although I did not implement it this way, this also potentially allows a
test-case config to specify both an interation-count and a time. The final
calculations use the actual time and actual iteration count, and thus are
agnostic to which limit actually caused the driver to stop.

Unfortunately a change like this would also require changes to the Native driver
API, to keep the run model consistent. I have not tackled this in my
implementation of this change.

Please contact me in person if you are interested in a patch which captures my
implementation of this proposed change.






[JAPEX-12] number of requests in results table Created: 26/Oct/06  Updated: 26/Oct/06

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: sameer_t Assignee: japex-issues
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 12

 Description   

It would be nice to have a column in the reports (under Results Summary Table)
that included the total number of requests sent.
One could figure this out by multiplying Tps * runTime... but since its
probably already accounted for in Japex, may be easier
to add the column than do it manually for every driver.






[JAPEX-13] Ant integration? Created: 30/Jan/07  Updated: 30/Jan/07

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: crahen Assignee: japex-issues
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 13

 Description   

What do you think about the idea of adding some Ant Tasks & Types to make Japex
simpler to run from a build.xml file, similar to how one might specify & run
JUnit test from thier junit ant Task?






[JAPEX-14] Wrong error reported when tests fail from multiple threads Created: 31/Jan/07  Updated: 31/Jan/07

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Bug Priority: Major
Reporter: crahen Assignee: japex-issues
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 14

 Description   

When a broken Driver is written and run from a single thread the correct error
is reported and the test run fails. This is good. When you run the same test
from two threads, you get a very misleading NumberFormatException.

Probably, the real exceptions should be displayed somewhere.

Driver:

class BrokenDriver extends JapexDriverBase {
public void run(TestCase testcase)

{ throw new RuntimeException(); }

}

Error: (ant output) 1 thread

japex:
[java] Reading configuration file
[java] BrokenDriver using 1 thread(s) on 1 cpu(s)
[java] Exception in thread "main" java.lang.RuntimeException:
[java] at BrokenDriver.run(LegacyTibrv.java:35)
[java] at com.sun.japex.JapexDriverBase.warmup(JapexDriverBase.java:345)
[java] at com.sun.japex.JapexDriverBase.warmup(JapexDriverBase.java:152)
[java] at com.sun.japex.JapexDriverBase.call(JapexDriverBase.java:270)
[java] at com.sun.japex.Engine.forEachTestCase(Engine.java:395)
[java] at com.sun.japex.Engine.forEachRun(Engine.java:285)
[java] at com.sun.japex.Engine.forEachDriver(Engine.java:221)
[java] at com.sun.japex.Engine.start(Engine.java:146)
[java] at com.sun.japex.Japex.run(Japex.java:150)
[java] at com.sun.japex.Japex.main(Japex.java:123)
[java] Run 1: 1bx1,

Error: (ant output) 2 threads

japex:
[java] Reading configuration file
[java] BrokenDriver using 2 thread(s) on 1 cpu(s)
bx1,NaN,4096bx1,NaN,8192bx1,NaN,16384bx1,NaN,1bx10,NaN,2bx10,NaN,4bx10,NaN,8bx10,NaN,16bx10,NaN,32bx10,NaN,64bx10,NaN,128bx10,NaN,256bx10,NaN,512bx10,NaN,1024bx10,NaN,4096bx10,NaN,8192bx10,NaN,16384bx10,NaN,aritmean,NaN,geommean,NaN,harmmean,NaN
[java] Exception in thread "main" java.lang.NullPointerException
[java] at
sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:991)
[java] at java.lang.Double.parseDouble(Double.java:510)
[java] at com.sun.japex.ParamsImpl.getDoubleParam(ParamsImpl.java:269)
[java] at com.sun.japex.DriverImpl.computeMeans(DriverImpl.java:144)
[java] at
com.sun.japex.DriverImpl.getAggregateTestCases(DriverImpl.java:278)
[java] at com.sun.japex.DriverImpl.serialize(DriverImpl.java:326)
[java] at com.sun.japex.TestSuiteImpl.serialize(TestSuiteImpl.java:537)
[java] at com.sun.japex.Japex.run(Japex.java:165)
[java] at com.sun.japex.Japex.main(Japex.java:123)






[JAPEX-15] Total time spent Created: 31/Jan/07  Updated: 31/Jan/07

Status: Open
Project: japex
Component/s: www
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: crahen Assignee: japex-issues
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 15

 Description   

As part of the output after a run, in addition to files produced, the amount of
time spent running the tests and creating the reports would be handy. This makes
looking back through build logs and assessing things easier. (Especially when
scheduling build time is an issue)






[JAPEX-18] Empty X axis chart when not all tests set japex.resultValueX Created: 17/Sep/07  Updated: 17/Sep/07

Status: Open
Project: japex
Component/s: renderer
Affects Version/s: current
Fix Version/s: milestone 1

Type: Bug Priority: Major
Reporter: Santiago Pericas-Geertsen Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 18

 Description   

When using "split" bar charts to show both Y and X axes, the X chart may be empty if only a subset of the
test cases set japex.resultValueX. It would be better not to show the bar chart of the X axis at all in this
case.






[JAPEX-19] Japex should support wildcards for testcases bases on file sets Created: 11/Oct/07  Updated: 11/Oct/07

Status: Open
Project: japex
Component/s: input
Affects Version/s: current
Fix Version/s: milestone 1

Type: Bug Priority: Major
Reporter: Santiago Pericas-Geertsen Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 19

 Description   

Japex should support wildcards for testcases bases on file sets. It's a bit cumbersome to have to copy and
paste a test case simply to change japex.inputFile. There should be a way to use wildcards like Ant to
specify a set of files.






[JAPEX-20] Japex should automatically find the steady state Created: 11/Oct/07  Updated: 11/Oct/07

Status: Open
Project: japex
Component/s: engine
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: Santiago Pericas-Geertsen Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 20

 Description   

Japex should automatically find the steady state. This could be used instead of having to specify an
arbitrary value for japex.runTime and japex.warmupTime.






[JAPEX-21] more statistical values (median, percentiles) Created: 22/Nov/07  Updated: 27/Nov/07

Status: Open
Project: japex
Component/s: renderer
Affects Version/s: current
Fix Version/s: milestone 1

Type: Improvement Priority: Major
Reporter: Mirko Friedenhagen Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: Macintosh


Issuezilla Id: 21

 Description   

Right now japex only reports/collects the total time taken and the number of rounds and means
calculated. For non-trivial usecases percentiles (e.g. the median) are of interest as well. If one single run
took 91 ms and the other 9 take 1 second, the arithmetric mean will be 10 and the geometric mean 1.

An IMHO easier to understand value would be the 90% value, that is the time in which 90% of the runs did
complete (1).



 Comments   
Comment by Santiago Pericas-Geertsen [ 27/Nov/07 ]

Thanks for the feedback. Japex currently computes two types of means, what I call vertical and horizontal
means. Horizontal means are computed across all the test cases in your test suite, while vertical means
are computed across complete runs (when japex.runsPerDriver > 1). Which means are you referring to in
your description?

As for the case of a single run taking 91 ms and all others taking 1 s (1000 ms), if that is the case, I'd say
the system isn't in steady state and other parameters (such as warmups) need to be adjusted first. But
perhaps your use is different and just need to understand it better.

Comment by Mirko Friedenhagen [ 27/Nov/07 ]

I have to confess that I am abusing japex a litte as I try to run integrative tests with it. This is where the
much higher deviations in my measurements come from. With its tight integration into Hudson, it would
be nice to have percentiles in japex.





[JAPEX-23] Japex is not worked in Hudson Created: 13/Apr/08  Updated: 13/Apr/08

Status: Open
Project: japex
Component/s: engine
Affects Version/s: current
Fix Version/s: milestone 1

Type: Bug Priority: Major
Reporter: snolbu2 Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: AIX
Platform: Other


Issuezilla Id: 23

 Description   

Hi, I have a problem.
I set Japex in Hudson.
First time is good, but Second is Out of work

[Special Case]
I remove 'xi' namespace in result.xsl according to issue num 22.

[Environment]
AIX 5.3
JDK 1.5.0
Hudson 1.200
Ant 1.7

[Configuration]
Japex report files : trunk/reports/*/report.xml

[Error Log]
----------------------------------------------------------------------------
stressTest:
[java] Reading configuration
file '/usr/Weblogic/dev_server/Hudson/home/jobs/WAF/workspace/trunk/japexconfig.
xml' ...
[java] Estimated warmup time + run time is 3 seconds
[java] JUnitDriver using 1 thread(s) on 4 cpu(s)
[java] Run 1: TestDept,....
[java] Time: 1.997
[java]
[java] OK (4 tests)
[java]
[java] ....
[java] Time: 0.144
[java]
[java] OK (4 tests)
[java]
[java] ....
[java] Time: 0.12
[java]
[java] OK (4 tests)
[java]
[java] ....
[java] Time: 0.121
[java]
[java] OK (4 tests)
[java]
[java] ....
[java] Time: 0.1
[java]
[java] OK (4 tests)
[java]
[java] ....
[java] Time: 0.099
[java]
[java] OK (4 tests)
[java]
[java] ....
[java] Time: 0.114
[java]
[java] OK (4 tests)
[java]
[java] ....
[java] Time: 0.107
[java]
[java] OK (4 tests)
[java]
[java] ....
[java] Time: 0.093
[java]
[java] OK (4 tests)
[java]
[java] ....
[java] Time: 0.164
[java]
[java] OK (4 tests)
[java]
[java] 307.005,aritmean,307.005,geommean,307.005,harmmean,307.005
[java] Generating reports ...
[java] file:/usr/Weblogic/report/waf/reports/2008_04_11_20_59/report.xml
[java] file:/usr/Weblogic/report/waf/reports/2008_04_11_20_59/report.html
[mkdir] Created
dir: /usr/Weblogic/dev_server/Hudson/home/jobs/WAF/workspace/trunk/reports
[copy] Copying 24 files
to /usr/Weblogic/dev_server/Hudson/home/jobs/WAF/workspace/trunk/reports

BUILD SUCCESSFUL
Total time: 3 minutes 19 seconds
Recording test results
Recording japex reports trunk/reports/*/report.xml
/usr/Weblogic/dev_server/Hudson/home/jobs/WAF/builds/2008-04-11_20-54-
57/japex/trunk/reports/2008_04_11_20_41/report.xml
FATAL: null
java.lang.NullPointerException
at com.sun.japex.RegressionDetector.generateXmlReport
(RegressionDetector.java:160)
at hudson.plugins.japex.JapexPublisher.perform(JapexPublisher.java:140)
at hudson.tasks.BuildStepCompatibilityLayer.perform
(BuildStepCompatibilityLayer.java:33)
at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep
(AbstractBuild.java:302)
at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep
(AbstractBuild.java:290)
at hudson.model.Build$RunnerImpl.post2(Build.java:134)
at hudson.model.AbstractBuild$AbstractRunner.post
(AbstractBuild.java:275)
at hudson.model.Run.run(Run.java:767)
at hudson.model.Build.run(Build.java:101)
at hudson.model.ResourceController.execute(ResourceController.java:70)
at hudson.model.Executor.run(Executor.java:71)






[JAPEX-28] ConfigFileMerger can't handle spaces in config file path Created: 24/Mar/09  Updated: 02/Apr/09

Status: Open
Project: japex
Component/s: engine
Affects Version/s: current
Fix Version/s: milestone 1

Type: Bug Priority: Major
Reporter: jbaruch Assignee: Santiago Pericas-Geertsen
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issuezilla Id: 28

 Description   

Stack trace for configuration file at /some/path/with/spaces here/japex-config.xml

[java] Reading configuration file '/some/path/with/spaces' ...
[java] Exception in thread "main" java.lang.RuntimeException:
java.lang.RuntimeException: java.io.FileNotFoundException:
/some/path/with/spaces (No such file or directory)
[java] at com.sun.japex.ConfigFileMerger.<init>(ConfigFileMerger.java:79)
[java] at com.sun.japex.Engine.start(Engine.java:117)
[java] at com.sun.japex.Japex.run(Japex.java:155)
[java] at com.sun.japex.Japex.main(Japex.java:127)
[java] Caused by: java.lang.RuntimeException:
java.io.FileNotFoundException: /some/path/with/spaces (No such file or directory)
[java] at
com.sun.japex.ConditionalProcessor.process(ConditionalProcessor.java:106)
[java] at com.sun.japex.ConfigFileLoader.loadFile(ConfigFileLoader.java:85)
[java] at com.sun.japex.ConfigFileMerger.<init>(ConfigFileMerger.java:69)
[java] ... 3 more
[java] Caused by: java.io.FileNotFoundException: /some/path/with/spaces (No
such file or directory)
[java] at java.io.FileInputStream.open(Native Method)
[java] at java.io.FileInputStream.<init>(FileInputStream.java:106)
[java] at java.io.FileInputStream.<init>(FileInputStream.java:66)
[java] at java.io.FileReader.<init>(FileReader.java:41)
[java] at
com.sun.japex.ConditionalProcessor.process(ConditionalProcessor.java:96)
[java] ... 5 more



 Comments   
Comment by Santiago Pericas-Geertsen [ 27/Mar/09 ]

I'm assuming your passing such a config file from the command line. If so, only the first part of the file
name is getting to Japex, based on what I see in the stack trace. Thus, you'd need to use double quotes
on the command line around the file name to make sure that it is interpreted correctly, right?

Comment by jbaruch [ 30/Mar/09 ]

You're right, I run it from command line (ant runs it from command line to be
precise). The problem is I provide relative path and the portion of the path I
provide doesn't include any spaces, so doublequoting it won't help.

<target name="run">
<java dir="." fork="true" classname="com.sun.japex.Japex">
<classpath refid="class.path"/>
<arg line="-last -line -merge src/conf/japex-config.xml/"/>
</java>
</target>

Comment by Santiago Pericas-Geertsen [ 02/Apr/09 ]

Is it possible for you to provide a running example that I can use to reproduce the problem? That would
be very helpful.





[JAPEX-33] website downloads and lists links are broken Created: 27/Apr/11  Updated: 02/May/11

Status: Open
Project: japex
Component/s: www
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: shaberman Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File japex-bad-link.png    

 Description   

I'd really like to download japex but:

http://japex.java.net/projects/japex/downloads

Is not very helpful.

http://japex.java.net/projects/japex/lists

Is empty too, hence filing an issue for something I'd otherwise ask about on a mailing list.



 Comments   
Comment by shaberman [ 27/Apr/11 ]

Oh, wow, this works:

http://java.net/projects/japex/downloads

But the home page:

http://japex.java.net/

Links to the other page. I imagine this probably isn't your guys' fault, but it's nonetheless annoying.

Comment by Santiago Pericas-Geertsen [ 28/Apr/11 ]

Rather confusing indeed. What link in http://japex.java.net/ is pointing to the incorrect location? When I click Project Features -> Download, it takes me to the right location.

Comment by shaberman [ 28/Apr/11 ]

Huh. I've attached a screenshot showing the link and the hover to the bad location.

It seems to be the "japex." subdomain causing the issue. If I go to java.net/projects/japex (no subdomain), then the link works great.

Comment by Santiago Pericas-Geertsen [ 28/Apr/11 ]

I can see some links are relative in the page. However, they are resolved correctly for me. You have the same problem with Project Features -> Subversion, right?

Comment by shaberman [ 28/Apr/11 ]

Yeah, the subversion link, being relative, is broken as well.

Comment by Santiago Pericas-Geertsen [ 02/May/11 ]

OK, I can't update those links myself, but I'm seeking help from a java.net admin. Thanks for reporting the problem.





[JAPEX-34] Error when running scatter graph Created: 28/Jul/12  Updated: 28/Jul/12

Status: Open
Project: japex
Component/s: None
Affects Version/s: 1.2.1, 1.2.2
Fix Version/s: None

Type: Bug Priority: Major
Reporter: javachatter Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

I have populated the X values for a scatter graph. I can prove this by viewing a report generated for the bar chart.

When I attempt to use the scattergraph the following error is thrown. I have tried all recent versions.

[ERROR] Error running driver
com.sun.japex.JapexException: org.jfree.data.general.SeriesException: X-value already exists.
at com.sun.japex.Japex.run(Japex.java:281)
at com.sun.japex.JapexMojo.execute(JapexMojo.java:167)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: org.jfree.data.general.SeriesException: X-value already exists.
at org.jfree.data.xy.XYSeries.add(XYSeries.java:372)
at org.jfree.data.xy.XYSeries.add(XYSeries.java:333)
at org.jfree.data.xy.XYSeries.add(XYSeries.java:254)
at com.sun.japex.ChartGenerator.generateDriverScatterChart(ChartGenerator.java:313)
at com.sun.japex.ChartGenerator.generateDriverChart(ChartGenerator.java:111)
at com.sun.japex.Japex.run(Japex.java:223)
... 28 more






Generated at Mon Mar 02 08:25:02 UTC 2015 using JIRA 6.2.3#6260-sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.