Skip to main content
Last updated December 11, 2013 16:56, by neomatrix369
Feedicon  
__TOC__ ==How to build JTReg in Eclipse (for Ubuntu 12.04 LTS) After taking inspiration from doing a whole lot of work with Eclipse and OpenJDK projects I took off on the journey to experiment with JTReg (<a href='http://openjdk.java.net/jtreg/'>http://openjdk.java.net/jtreg/</a>) and attempt to build it in an IDE of my choice i.e. Eclipse. These instructions specify how you can build the JTReg using the Eclipse IDE running under Ubuntu (using OpenJDK's Old build and Infrabuild systems). I have kept the structure of this blog similar to the previous one so to maintain uniformity in my approach. Firstly what is JTReg - it is a regression test harness used by the OpenJDK test framework. The different projects and packages in the OpenJDK system can be individually or wholely tested via JTReg. Below is a list of systems and versions under which the installations and configurations were performed to come up with these instructions: Synaptic Package Manager 0.75.9 Eclipse Indigo 3.7.2 ---Eclipse JDT (Java) 3.7.2 ---Eclipse CDT (C/C++) ------6.0.0.dist (C/C++ Remote debug launcher) ------1.0.2.dist (CDT GCC Cross Compiler) ------7.0.0.dist (GDB Common) Ubuntu 12.04 LTS Ant 1.8.4 JavaHelp 2.0 Java Test Harness 4.4 JUnit 4-4.8 OpenJDK 8 Java/Javac 1.7 <br /> You need to have an environment with OpenJDK installed and setup (as described in the <a title="How to build OpenJDK projects in Eclipse (for Ubuntu 12.04 LTS)" href="http://neomatrix369.wordpress.com/2012/08/04/importing-and-building-the-openjdk-into-eclipse-under-ubuntu-12-04/" target="_blank">How to build OpenJDK projects in Eclipse (for Ubuntu 12.04 LTS)</a> - just follow the parts from the start upto the section 'Preparing projects, folders and files', as hereafter the 'meaty OpenJDK shabhang' starts and we don't need it for the current work. If you wish to just download the JTReg binary run tests from the command line, follow the instructions on the <a title="Adopt OpenJDK's Install JTReg page" href="http://java.net/projects/adoptopenjdk/pages/InstallJtreg">Adopt OpenJDK's Install JTReg page</a> - configurations for both the Old build and the Infrabuild systems are available there. At this point you should be able to manually run JTReg tests from the command-line interface (terminal). == Build and run JTReg in Eclipse === Downloading and setting up dependencies Change the current folder location to the $HOME directory folder and download the JTReg source files from http://hg.openjdk.java.net/code-tools/jtreg using the below command: <blockquote> $ hg clone http://hg.openjdk.java.net/code-tools/jtreg </blockquote> this will create a folder by the name jtreg in the current location(i.e. $HOME directory) with the JTReg source files in it. Alternative but less updated location: http://download.java.net/openjdk/jtreg/). If this route is used, then run the below command in the terminal mode, to download the zip file stored at the above location: <blockquote> cd ~ wget http://www.java.net/download/openjdk/jtreg/promoted/4.1/b04/jtreg-4.1-src-b04_14_mar_2012.zip </blockquote> Create a folder say under the $Home directory called ‘jtreg’, unzip the zip file into this folder. <u>JavaHelp</u><br/> Install Javahelp - required to build jtreg <blockquote> sudo apt-get install javahelp2 </blockquote> <br/> <u>JavaTest Harness</u><br/> Download the Javatest Harness 4.4 from <a href='http://download.java.net/jtharness/download.html'>http://download.java.net/jtharness/download.html</a> Run the below commands to download it off the web into the $HOME directory <blockquote> cd ~ wget http://download.java.net/jtharness/4.4.1/Rel/jtharness-4_4_1-MR1-bin-b13-20_dec_2011.zip </blockquote> Unzip the zip file into /opt/jtharness/4.4 by doing the below: <blockquote> cd /opt sudo mkdir jtharness sudo mkdir jtharness/4.4 cd jtharness/4.4 sudo unzip ~/jtharness-4_4_1-MR1-bin-b13-20_dec_2011.zip </blockquote> <br/> <u>Apache Ant</u><br/> Download Apache Ant 1.8.4 from <a href='http://archive.apache.org/dist/ant/binaries/'>http://archive.apache.org/dist/ant/binaries/</a> using the below commands: <blockquote> cd ~ wget http://archive.apache.org/dist/ant/binaries/apache-ant-1.8.4-bin.zip cd /opt sudo unzip ~/apache-ant-1.8.4-bin.zip </blockquote> <u>JUnit</u> Download JUnit4 jar file from Maven Central (http://search.maven.org/#search and search for junit4) and copy it into the /opt folder by performing the following commands: <blockquote> sudo mkdir /opt/junit4 sudo mv junit-4.nn.jar /opt/junit4 </blockquote> <u>TestNG</u> Download TestNG jar file from Maven Central (http://search.maven.org/#search and search for testng) and copy it into the /opt folder by performing the following commands: <blockquote> sudo mkdir /opt/testng sudo mv testng-n.n.jar /opt/testng </blockquote> Now make changes to the build.properties file to amend paths for JUnit4, TestNG JavaHelp and JavaTest Harness. === Amending the Ant build properties file As the build.properties file is protected, you will need to invoke it using the below commands: <blockquote> cd ~/jtreg/make sudo gedit build.properties </blockquote> Make the below changes to the build.properties file in the $HOME/jtreg/make/ folder. Note: jhhome is the location where JavaHelp2 jar files are installed, and this ends up being in the /usr/share/java folder, hence set as below. Other resources are manually placed in the /opt folder. <blockquote> jtreg.build.resources=/opt jhhome = /usr/share/java # JTHarness or JavaTest (should be should be 4.3 or better) #javatest.home = ${jtreg.build.resources}/jtharness/4.3 javatest.home = ${jtreg.build.resources}/jtharness/4.4 # JavaHelp (should be version 2.0 or better) javahelp.home = ${jhhome} #jhall.jar = ${javahelp.home}/javahelp/lib/jhall.jar jhall.jar = ${javahelp.home}/jhall.jar #jh.jar = ${javahelp.home}/javahelp/lib/jh.jar jh.jar = ${javahelp.home}/jh.jar # JUnit (should be 4.5 or better) #junit.jar = ${jtreg.build.resources}/junit/4.5/junit-4.5.jar junit.jar = ${jtreg.build.resources}/junit4-nn.jar # TestNG (should be 6.5 or better) #testng.jar = ${jtreg.build.resources}/testng/6.7/other-jars/testng-6.7-dist.jar testng.jar = ${jtreg.build.resources}/testng/testng-n.n.jar # Ant ((should be version 1.6.5 or better) #ant.home = ${jtreg.build.resources}/ant/1.7.1 ant.home = ${jtreg.build.resources}/apache-ant-1.8.4 ant.jar = ${ant.home}/lib/ant.jar </blockquote> Ensure comments are placed against the old settings (just in case you need to revert). In order to find the correct location of the jh.jar and jhall.jar files use the 'find' command in terminal mode. === Setting up environment variables Add the below two lines to the ~/.bashrc file (Infrabuild) <blockquote> export JT_HOME=$HOME/jtreg ............. [1] or export JT_HOME=$HOME/jtreg/dist/jtreg ..............[2] </blockquote> [1] Applies if the jtreg binary has been downloaded directly from the JTReg website. <br/> [2] Applies if the jtreg source has been downloaded directly from the JTReg repo and a binary is built locally.<br/> <blockquote> export PRODUCT_HOME=/home/openjdk/sources/jdk8_tl/build/<u><i>linux-x64-normal-server-release</i></u>/images/j2sdk-image Note: the name of the sub-folder under $SOURCE_CODE/jdk8_tl/build/ folder can have other variants i.e. linux-x86_64-normal-server-release, so please check for this in your build environment before applying the above env settings. </blockquote> Or the below two lines to the ~/.bashrc file (Old build) <blockquote> export PRODUCT_HOME=/home/openjdk/sources/jdk8_tl/build/linux-amd64_backup/j2sdk-image </blockquote> Now source the .bashrc file using the below command: <blockquote> source ~/.bashrc </blockquote> Link folder /jtreg/src to the existing project using the Configure Build Path option. Add the /opt/apache-ant-1.8.4/lib/ant.jar to the project via the Build Path &gt; Configure Build Path &gt; Libraries option. Add External JARS..., navigate to the /opt/apache-ant-1.8.4/lib/ folder, select ant.jar and click on Okay. === Importing project via Ant Build file Run Eclipse. Select File &gt; New &gt; Other &gt; Java Project from Existing Ant build Once done select the folder ~/jtreg/make/ and then select the build.xml. Selecting this file populates all the ant tasks, select the option Link to the buildfile in the file system. Now select the build.xml file, right mouse click and select the Run As &gt; Ant Build... option, and do the below: 1) Select Main, and add -verbose to the Arguments section 2) Select Targets, and select clean from the list of targets and set the order as clean, build (if you want clean builds each time). Do skim through the list of Ant tasks, to learn the different actions that can be performed pre- and post- builds. 3) Select ClassPath and set the ClassPath for Ant Home to Apach Ant 1.8.4 by selecting Ant Home from the list, and then clicking on the Ant Home button on the bottom right hand corner and select /opt/apache-ant-1.8.4/ from the directory tree. 4) Select JRE, and select java-7-openjdk-amd64 from the list. If it does not exist on the list, click on Installed JREs... and install one by adding a JRE from /usr/lib/jvm/java-7-openjdk-amd64. Now run the ant script by selecting Run As &gt; Ant build. See sign of success below (last 30 odd lines of echos from the Ant console) <blockquote> dist-jtreg: [zip] Building zip: /home/openjdk/jtreg/dist/jtreg.zip [zip] adding entry jtreg/COPYRIGHT [zip] adding entry jtreg/LICENSE [zip] adding entry jtreg/README [zip] adding entry jtreg/doc/jtreg/faq.html [zip] adding entry jtreg/doc/jtreg/tag-spec.txt [zip] adding entry jtreg/doc/jtreg/usage.txt [zip] adding entry jtreg/legal/jtharness/copyright.txt [zip] adding entry jtreg/legal/jtharness/license.txt [zip] adding entry jtreg/lib/javatest.jar [zip] adding entry jtreg/lib/jh.jar [zip] adding entry jtreg/lib/jtreg.jar [zip] adding entry jtreg/lib/junit.jar [zip] adding entry jtreg/linux/bin/jtdiff [zip] adding entry jtreg/linux/bin/jtreg [zip] adding entry jtreg/solaris/bin/jtdiff [zip] adding entry jtreg/solaris/bin/jtreg [zip] adding entry jtreg/win32/bin/jtdiff [zip] adding entry jtreg/win32/bin/jtreg [zip] Building zip: /home/openjdk/jtreg/dist/jtreg-no-junit.zip [zip] adding entry jtreg/COPYRIGHT [zip] adding entry jtreg/LICENSE [zip] adding entry jtreg/README [zip] adding entry jtreg/doc/jtreg/faq.html [zip] adding entry jtreg/doc/jtreg/tag-spec.txt [zip] adding entry jtreg/doc/jtreg/usage.txt [zip] adding entry jtreg/legal/jtharness/copyright.txt [zip] adding entry jtreg/legal/jtharness/license.txt [zip] adding entry jtreg/lib/javatest.jar [zip] adding entry jtreg/lib/jh.jar [zip] adding entry jtreg/lib/jtreg.jar [zip] adding entry jtreg/linux/bin/jtdiff [zip] adding entry jtreg/linux/bin/jtreg [zip] adding entry jtreg/solaris/bin/jtdiff [zip] adding entry jtreg/solaris/bin/jtreg [zip] adding entry jtreg/win32/bin/jtdiff [zip] adding entry jtreg/win32/bin/jtreg build: BUILD SUCCESSFUL Total time: 37 seconds </blockquote> ==== Run Configuration TODO - able to run OpenJDK tests on one or multiple projects / packages from within Eclipse - anyone dares to go this path? ==== Newly created Eclipse projects Now you have a number of ready created Eclipse projects in your Eclipse workspace. Go to the workspace folder where Eclipse creates the project files and settings i.e. into the /home/openjdk/workspace folder. There is a folder (called jtreg) representing the project you are currently working in, there are at least two to four hidden files and folders in this location containing the below: <blockquote> .project .classpath .settings </blockquote> === Importing project via Make file TODO - importing the JTReg Make file and being able to do the same thing as above - anyone wishes to contribute? == Build and run JTReg from CLI (terminal) The steps mentioned in sections [[Downloading_and_setting_up_dependencies | Downloading and setting up dependencies]],[[Amending_the_Ant_build_properties_file | Amending the Ant build properties file]] and [[Setting_up_environment_variables | Setting up environment variables]] must be performed before going further. Once the above settings are in place, build JTReg from the CLI via the following commands <blockquote> cd ~/sources/jtreg/make ant </blockquote> This should give the same output as illustrated above under Eclipse section: <blockquote> jar-jtreg: [jar] Building jar: /home/saiubuntu/sources/jtreg/dist/jtreg/lib/jtreg.jar -dist-jtreg.doc: [copy] Copying 1 file to /home/saiubuntu/sources/jtreg/dist/jtreg/doc/jtreg -dist-jtreg.bin: -dist-jtreg.legal: dist-jtreg: [zip] Building zip: /home/saiubuntu/sources/jtreg/dist/jtreg.zip [zip] Building zip: /home/saiubuntu/sources/jtreg/dist/open-jtreg.zip build: BUILD SUCCESSFUL Total time: 9 seconds </blockquote> Once a build is successful, a number of distribution files are created in the following folders under the jtreg folder structure: <blockquote> dist ├── jtreg │ ├── lib │ │ ├── javatest.jar │ │ ├── jh.jar │ │ ├── jtreg.jar │ │ └── junit.jar │ ├── linux │ │ └── bin │ │ ├── jtdiff │ │ └── jtreg │ ├── solaris │ │ └── bin │ │ ├── jtdiff │ │ └── jtreg │ └── win32 │ └── bin │ ├── jtdiff │ └── jtreg ├── jtreg.zip └── open-jtreg.zip </blockquote> The files under each of the OS names i.e. linux, solaris, windows are bash script files that execute the jtreg.jar file, for e.g. <blockquote> ./dist/jtreg/linux/bin/jtreg </blockquote> or <blockquote> java -jar dist/jtreg/lib/jtreg.jar </blockquote> the above two will do the exact same thing and expects parameters, see usage screen (only a snapshot of the entire text): <blockquote> Documentation Options Options for additional documentation -h [words...] | -help [words...] | -usage [words...] Command line help. Give words to see help info containing those or use "-help all" to see all available help. -n | -relnote Release notes -onlineHelp [words...] Show the online help. You can also show the online help from the desktop Help menu. -t | -tagspec Tag specification supported by this implementation -version Give information about the version of jtreg in use. ... [multi-page usage text] </blockquote> The most simplest syntax to run jtreg is <blockquote> [absolute/relative path]/jtreg [options] [ -jdk:<java.home> ] [folder] (use the -jdk:<java.home> option, if JAVA_HOME points to JDK version lower than 1.7) </blockquote> for example <blockquote> [absolute/relative path]/jtreg -verbose:fail [absolute/relative path]/jdk/test/java/lang/invoke/ </blockquote> [absolute/relative path] - applies depending on where you position in the OpenJDK folder structure. Download jcommand.jar by doing the below if jtreg is expecting it for tests: <blockquote> $ cd $HOME/jtreg/lib/ $ wget http://repo1.maven.org/maven2/com/beust/jcommander/1.7/jcommander-1.7.jar </blockquote> for example <blockquote> [path/to]/jtreg [options] [ -jdk:<java.home> ] [ -cpa: $HOME/jtreg/lib/jcommander-1.7.jar ] [ unit test name and location ] </blockquote> It is also possible to build jtreg via the make command but that would require additional installation of dependent components and configuration. Also have a look at <a title="Adopt OpenJDK's Install JTReg page" href="http://java.net/projects/adoptopenjdk/pages/InstallJtreg">Adopt OpenJDK's Install JTReg page</a> to see how tests are run via the CLI. == Credits & kudos My sincere thanks to Jonathan Gibbon's from OpenJDK's JTReg team who has been kindly responding to my queries and has walked me through the last important steps in the process! Thanks to the <a title="Adopt OpenJDK initiative page" href="http://java.net/projects/adoptopenjdk/pages/AdoptOpenJDK">Adopt OpenJDK initiative</a> led by Martijn Verburg and others - its a pleasure to support our community! Big thanks to Rabea Gransberger for spending the time and meticulously going through the steps and reporting issues and suggestions. Come and join us and take on a project (like I did) and make something out of the project and yourself! Please provide any feedback on areas that work differently for you or does not work for you at all. If you have fixed any issue please let us know so that we can update the information here. I will continue to refine the instructions above and also include your useful feedback as and when I receive them. <center><i>Here's [http://bit.ly/QQ0s1F the original blog] used to write the wiki instructions.</i></center> <br />Back to [[InstallJtreg|Install jtreg]].<br /> <br />or<br /> <br />Back to [[EclipseProjectsForOpenJDK|How to build OpenJDK projects in Eclipse]].
 
 
Close
loading
Please Confirm
Close