Status of jtreg build

Volker Simonis volker.simonis at gmail.com
Mon Jun 6 18:29:06 UTC 2016


I did run into this problem again today. I solved it by simply merging
jcommander.jar and testng.jar into a new, single jar which I feed into
the jtreg build with the TESTNG_JAR=testng-6.9.10_jcommander-1.48.jar
option. It's a hack but it works :)

I also found that we already have a bug covering this issue:

CODETOOLS-7901684: Some tests fail with
java.lang.NoClassDefFoundError:
com/beust/jcommander/ParameterException
https://bugs.openjdk.java.net/browse/CODETOOLS-7901684

Maybe we should really fix this in the build? I think that meanwhile
building jtreg has unnecessarily become a kind of rocket-since...

Regards,
Volker


On Wed, Apr 13, 2016 at 5:49 PM, Jonathan Gibbons
<jonathan.gibbons at oracle.com> wrote:
> Well, that part of the jtreg build system was written when TestNG
> came as a single jar and predates its Mavenisation.
>
> jtreg would probably work if you had separate jcommander.jar and testng.jar
> and put jcommander.jar on the Class-Path in the testng.jar manifest.
> Hmm, that may not work for those tests (like some of the streams tests)
> which need testng.jar on th bootclasspath.   (IIRC, Class-Path is not
> honored for
> jars on the bcp.)
>
> -- Jon
>
>
>
>
> On 04/13/2016 08:26 AM, Martin Buchholz wrote:
>>
>> Maven likes to have as many jar files as possible, so jcommander and
>> testng are separated.
>> But jtreg thinks testng.jar should contain jcommander, so I ended up
>> having to build testng-jar-all
>>
>> (jtreg should probably switch to maven's view of the world and take
>> jcommander as another dependency)
>>
>> Hacky build script snippet:
>>
>> # --- testng ---
>> # Build "fat" testng.jar (incorporating jcommander) from source.
>> # No one seems to distribute such fat testng jars anymore.
>> rm -rf testng testng-*
>> wget -qOtestng.zip
>> https://github.com/cbeust/testng/archive/testng-6.8.5.zip
>> unzip -q testng.zip
>> rm testng.zip
>> mv testng-* testng
>> (
>>    export JAVA_HOME="$HOME/jdk/jdk6"
>>    export PATH=$JAVA_HOME/bin:$PATH
>>    cd testng &&
>>    mkdir -p ~/.ant/lib &&
>>    cp ivy-2.1.0.jar ~/.ant/lib/. &&
>>    ant clean compile copy-resources testng-jar-all &&
>>    rm ~/.ant/lib/ivy-2.1.0.jar
>> )
>> TESTNG_HOME="$ROOT/testng"
>> TESTNG_JAR=$(find "$ROOT/testng/target/" -name "testng*jar")
>>
>> On Tue, Apr 12, 2016 at 11:53 PM, Volker Simonis
>> <volker.simonis at gmail.com> wrote:
>>>
>>>
>>> On Tue, Apr 12, 2016 at 11:28 PM, Martin Buchholz <martinrb at google.com>
>>> wrote:
>>>>
>>>> jtreg build on
>>>> https://adopt-openjdk.ci.cloudbees.com/
>>>> is broken, as is its dependency asmtools
>>>> The jtreg-4.2 build they advertise was created before there was any 4.2
>>>> tag.
>>>> They seem to be missing testng as a dependency.
>>>> The project does keep trying (and failing) to build, however.
>>>>
>>>> I tried and failed to find on the Net the "full" testng-6.8.zip that
>>>> used to be distributed on testng.org.
>>>>
>>> That seems true, but I think all you needed from the "full"
>>> testng-6.8.zip
>>> was the LICENSE file. See jtreg/make/jtreg.gmk
>>>
>>> $(JTREG_IMAGEDIR)/legal/testng/LICENSE.txt: $(call
>>> PosixPath,$(TESTNG_HOME)/LICENSE.txt)
>>>          $(MKDIR) -p $(@D)
>>>          $(CAT) $(TESTNG_HOME)/LICENSE.txt >> $@
>>>
>>> The testng jar file is specified by TESTNG_JAR anyway. So I think you can
>>> download the jar from
>>>
>>> http://mvnrepository.com/artifact/org.testng/testng/6.8 or
>>> http://mvnrepository.com/artifact/org.testng/testng/6.8.5
>>>
>>> because http://openjdk.java.net/jtreg/build.html now recommends 6.8.5 and
>>> get the license file from:
>>>
>>> https://github.com/cbeust/testng
>>>
>>>> On Tue, Apr 12, 2016 at 2:11 PM, Jonathan Gibbons
>>>> <jonathan.gibbons at oracle.com> wrote:
>>>>>
>>>>>
>>>>> On 04/11/2016 11:06 AM, Carsten Varming wrote:
>>>>>>
>>>>>> Dear jtreg devs,
>>>>>>
>>>>>> I wanted to download jtreg to run JDK9 hotspot regression tests, but I
>>>>>> have been unsuccessful so far. Perhaps you know what I need to do to
>>>>>> get
>>>>>> going.
>>>>>>
>>>>>> The hotspot regression tests need at least jtreg 4.2 b01. When I
>>>>>> downloaded the latest build published at
>>>>>> https://adopt-openjdk.ci.cloudbees.com/job/jtreg/ (4.2.0-tip, from
>>>>>> build
>>>>>> 496) and tried the hotspot regression tests I got:
>>>>>>
>>>>>> Error: Unexpected exception occurred! java.lang.NumberFormatException:
>>>>>> For
>>>>>> input string: "ip"
>>>>>> java.lang.NumberFormatException: For input string: "ip"
>>>>>>          at
>>>>>>
>>>>>>
>>>>>> java.lang.NumberFormatException.forInputString(java.base at 9-internal/NumberFormatException.java:65)
>>>>>>          at
>>>>>> java.lang.Integer.parseInt(java.base at 9-internal/Integer.java:695)
>>>>>>          at
>>>>>> java.lang.Integer.parseInt(java.base at 9-internal/Integer.java:813)
>>>>>>          at
>>>>>> com.sun.javatest.regtest.Version.getBuild(Version.java:186)
>>>>>>          at
>>>>>> com.sun.javatest.regtest.Version.compareTo(Version.java:168)
>>>>>>          at com.sun.javatest.regtest.Main.run(Main.java:1091)
>>>>>>          at com.sun.javatest.regtest.Main.run(Main.java:1037)
>>>>>>          at com.sun.javatest.regtest.Main.main(Main.java:951)
>>>>>>
>>>>>> I suspect the check against "requiredVersion=4.2 b01" from TEST.ROOT
>>>>>>
>>>>>>
>>>>>> (http://hg.openjdk.java.net/jdk9/hs-rt/hotspot/file/1c08ca66db33/test/TEST.ROOT)
>>>>>> went wrong. I suspect "build = manifest.getProperty("jtreg-Build");"
>>>>>> in
>>>>>>
>>>>>>
>>>>>> http://hg.openjdk.java.net/code-tools/jtreg/file/6bfef17a03d5/src/share/classes/com/sun/javatest/regtest/Version.java
>>>>>> sets Version.build to "tip" and Version.getBuild tries to parse "ip"
>>>>>> as
>>>>>> a
>>>>>> number. :(
>>>>>>
>>>>>> I tried to get past this problem by changing the required jtreg
>>>>>> version
>>>>>> to
>>>>>> 4.1 b01. That gets the tests running, but a third of them fail with a
>>>>>> class
>>>>>> loading problem: A ClassFormatError is thrown with "Truncated class
>>>>>> file".
>>>>>> This seems to be due to a missing
>>>>>> java/lang/reflect/JTRegModuleHelper.class.
>>>>>> I suspect that this requirement was introduced with the module system
>>>>>> that
>>>>>> was integrated a few weeks ago.
>>>>>>
>>>>>> So, how do I get a version of jtreg that works with the latest JDK9?
>>>>>>
>>>>>> BTW. It looks like the jtreg build
>>>>>> (https://adopt-openjdk.ci.cloudbees.com/job/jtreg/) is failing because
>>>>>> of a
>>>>>> missing dependency on testng.
>>>>>>
>>>>>> Help much appreaciated,
>>>>>> Carsten
>>>>>
>>>>>
>>>>> The version of jtreg available on cloudbees.com has the following entry
>>>>> in
>>>>> its MANIFEST.MF,
>>>>>
>>>>>      jtreg-Build: tip
>>>>>
>>>>> and jtreg is naively assuming it to be of the form
>>>>>      jtreg-Build: b<integer>
>>>>>
>>>>> I can make jtreg be more tolerant, but I also also note that the binary
>>>>> is
>>>>> missing lib/asmtools.jar, which is required by some tests.  The
>>>>> contents
>>>>> of
>>>>> the tar bundle are all dated 25 January 2016, 10:47 which is somewhat
>>>>> suspicious.
>>>>>
>>>>> -- Jon
>>>
>>>
>


More information about the jtreg-use mailing list