From 9df2781abea8497b0b3fc50e29f10449b8fa348d Mon Sep 17 00:00:00 2001 From: James Badger Date: Tue, 20 Mar 2018 00:03:55 -0600 Subject: [PATCH] Add expanded guide to JAR usage --- HOWTO_JAR.md | 114 ++++++++++++++++++++++++++++++++++++++ README.md | 2 + images/jar-testnghtml.png | Bin 0 -> 28591 bytes 3 files changed, 116 insertions(+) create mode 100644 HOWTO_JAR.md create mode 100644 images/jar-testnghtml.png diff --git a/HOWTO_JAR.md b/HOWTO_JAR.md new file mode 100644 index 00000000..fbab64a7 --- /dev/null +++ b/HOWTO_JAR.md @@ -0,0 +1,114 @@ +# How to Use as a JAR + +The test suite can be deployed as a single JAR file, which allows you to test while installing minimal dependencies. Users who want to test CDBs with only needing a JVM should use the JAR command line interface. It is also the most secure option, if secure JAR deployment procedures are followed. + +There are two steps. + +1. Build the JAR, which requires a Java Development Kit (JDK) and Maven +2. Copy the JAR to the testing machine, which only requires a Java Virtual Machine (JVM) + +The test output is TestNG formatted XML files. + +## Building the JAR + +You will need to install [Oracle JDK][Oracle Download Page] 7 or newer. Other JDKs such as [OpenJDK][OpenJDK] may work, but I have not tested it. JDKs are available for nearly every platform. + +Once installed, you should be able to check your Java version from your console or terminal. + +On MacOS/Linux: + + +```sh +$ java -verison +java version "1.8.0_73" +Java(TM) SE Runtime Environment (build 1.8.0_73-b02) +Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode) +``` + +Or on Windows: + +``` +C:\Users\Me> java -version +java version "1.8.0_161" +Java(TM) SE Runtime Environment (build 1.8.0_16-b12) +Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode) +``` + +Next we need to install [Maven][Maven Install], a tool for automating the building and set up of Java projects. Once installed, you should be able to access it on your console/terminal as the `mvn` command. Here is the version check output on MacOS. + +```sh +$ mvn -version +Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T01:58:13-06:00) +Maven home: /usr/local/Cellar/maven/3.5.2/libexec +Java version: 1.8.0_73, vendor: Oracle Corporation +Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/jre +Default locale: en_CA, platform encoding: UTF-8 +OS name: "mac os x", version: "10.13.3", arch: "x86_64", family: "mac" +``` + +With those tools installed, download a ZIP version or use Git to clone the [ets-cdb10 repository from GitHub][ets-cdb10]. + +Use your console or terminal to open the repository on the command line, and use Maven to set up the project. + +```sh +$ cd ets-cdb10 +$ mvn install +``` + +This will take under a minute and will do a few things to compile the test suite. It will run the JUnit test suite to check for any broken code in the TestNG test suite. It will compile the documentation into a website for deployment on GitHub/TEAM Engine. It will build ZIP and JAR archive files for the tool and TEAM Engine. + +The only file we will need is in the `target` folder, and it is called `ets-cdb10-0.2-SNAPSHOT-aio.jar`. This is the all-in-one file that contains everything the test suite needs to run independently. This file can be deployed to other machines and used to test a CDB. + +[Oracle Download Page]: http://www.oracle.com/technetwork/java/javase/downloads/index.html +[OpenJDK]: http://openjdk.java.net +[Maven Install]: http://maven.apache.org/install.html +[ets-cdb10]: https://github.com/openfirmware/ets-cdb10 + +## Using the JAR + +On the machine you want to test a CDB, you will need to install a Java Virtual Machine to run the all-in-one file. If you already have installed a Java Development Kit then you do not need to also install a JVM. You can [download a JVM from Oracle][Oracle Download Page]. + +To test the CDB, we need to create a test run properties file that the all-in-one file will read and use to find the CDB. Create a new XML file with the following contents: + +```xml + + + + Sample test run arguments + /path/to/CDB + 1,2 + +``` + +On Windows, you will need to change `/path/to/CDB` to the Windows path to the root of the CDB (NOT the directory above the CDB), and Windows users should use Windows path format (e.g. `C:\Databases\CDB`). + +Users on MacOS or Linux can use UNIX path style to reference the CDB. It *might* be possible to reference a CDB on a network drive or mount, although I have not tested it. + +In the XML file you can change the "1,2" for the ICS to either "1", "2", or "1,2" to specify which conformance levels you want to test. The default "1,2" is recommended. + +Save the file as an XML file with a descriptive name referring to the CDB it points to. + +Now we can use the all-in-one file to test the CDB. + +```sh +$ java -jar ets-cdb10-0.2-SNAPSHOT-aio.jar path/to/properties.xml +``` + +This will launch the test suite without a graphical user interface and generate the test results, usually in a few seconds for small CDBs. + +A directory named `testng` will be created in your home directory with the test results. On Windows, that will be in `C:\Users\You\testng` (or elsewhere if you have changed your default user setup). On MacOS, that will be in `/Users/you/testng`. On Linux, that will be in `/home/you/testng`. + +Inside the `testng` directory a sub-folder with a UUID name will be created each time the test suite is ran. That UUID directory will contain an XML file with the test results. + +If you are not familiar with XML, the test results file will be difficult to read. The very first line will give a basic overview: + +```xml + +``` + +I created a tool that can [convert these XML files into simple HTML files][testng2html] that you can view in your web browser. There is also a more well-developed tool for doing this called [ReportNG][ReportNG], although it is no longer updated. + +[testng2html]: https://github.com/openfirmware/testng2html +[ReportNG]: https://reportng.uncommons.org + +![TestNG2HTML Output](images/jar-testnghtml.png) diff --git a/README.md b/README.md index 1b7745ad..3b136fe0 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,8 @@ suite in a command shell: `java -jar ets-cdb10-0.2-SNAPSHOT-aio.jar [-o|--outputDir $TMPDIR] [test-run-props.xml]` +For a more detailed guide on using a JAR to test CDB, see the [HOW TO Guide](HOWTO_JAR.md). + ### Building This test suite is compatible with Apache Maven. You can build the test diff --git a/images/jar-testnghtml.png b/images/jar-testnghtml.png new file mode 100644 index 0000000000000000000000000000000000000000..2ed492426c2763c91ad40c19389f568f4b6e2667 GIT binary patch literal 28591 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 literal 0 HcmV?d00001