Status of jtreg build
Jonathan Gibbons
jonathan.gibbons at oracle.com
Wed Jun 8 15:58:16 UTC 2016
Yes, this needs to be fixed.
I apologize for the apparent rocket science; I have been trying to
simplify the build lately, but the split between TestNG and JCommander
has yet to be taken into account. I would like to make jtreg accept the
standard jar-files as-is, but that will require jtreg source code changes.
-- Jon
On 06/06/2016 11:29 AM, Volker Simonis wrote:
> 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