Page 1 of 1

Integrated Fitnesse Testing on Jenkins Build Server

PostPosted: Fri Oct 14, 2011 7:30 pm
by red1
We have got Fitnesse testing integrated into a Jenkins Build Server contributed by BayCIX from Landshut, Germany. It can be viewed and run from http://fitnesse.idempiere.com.

jenkins.png
jenkins.png (113.54 KiB) Viewed 5383 times

The Jenkins server at http://jenkins.idempiere.com has a configuration to automatically take the Fitnesse module from ADempiere SourceForge.net's SVN/branches/fitnesse and copy it to the above location and then run it and place the results.xml in a specific location for easy access. Jenkins will run the tests each time the ADempiere361 experience a change in codebase.

The Fitnesse itself already has graphical display at a click under 'Test History'. The Fitnesse test suite itself is fully single based, meaning that all my tests i did before are now in a single folder and can be run either in a suite for all tests at one go or singularly one by one according to your selection.

fitnessesuite.png
fitnessesuite.png (140.2 KiB) Viewed 5378 times

The import and class-paths are also consolidated into the Frontpage header page.

Now you can either run this yourself by going to the link above or just access the results.xml when Jenkins runs it for us on regular or occasional whenever there is a change in the codebase. At the moment only the Adempiere Standard Testing and Pos Gui Testing is tested locally and activated for testing on the Jenkins. The rest are put on 'normal' mode until the modules such a Fixed Assets are properly integrated (some Romanian terms in the model).

Next on the roadmap will be to get the OSGi version of 361, which is iDempiere 1.0 pending to be tested with the same Fitnesse suite. This involves using fixtures that works within the OSGi container. After that it is the Web-based HTML or Ajax UI testing (using SAHI or ZTL(for ZK5)) and incorporate them into the Jenkins environment also.

I am now with Dominik of BayCIX in Landshut, 70km near Munich, Germany doing the Jenkins proofing together so i probably do the SAHI portion first as both that and the above suite is useful as a complete suite for both 361 and ADempiere 370 at SourceForge.net. I also will be studying another recent SAHI contribution from Michael McKay of Canada to see if they can work on this Jenkins.

At the Jenkins server, when you login as an Administrator and click on the 'FitnesseTests' row and then 'configure' you will see the following page:

build1.png
build1.png (106.32 KiB) Viewed 5378 times


The Repository URL is set to http://adempiere.svn.sourceforge.net/sv ... s/fitnesse where any change detected there (when i or someone else upload a new fixture or test script) it will fetch onto Jenkins.

build2.png
build2.png (42.78 KiB) Viewed 5378 times


The Fitnesse engine is already running in the Jenkins and will allow at that port 8070, which is conveniently set to http://fitnesse.idempiere.com.

Re: Integrated Fitnesse Testing on Jenkins Build Server

PostPosted: Tue Oct 18, 2011 4:40 pm
by red1
Dominik Zajac wrote a technical guide on his end of setting up the jenkins build for Fitnesse testing above: http://www.banym.de/erp-2/adempiere/int ... mment-7939

Re: Integrated Fitnesse Testing on Jenkins Build Server

PostPosted: Tue Oct 18, 2011 11:00 pm
by red1
Today Dominik and I configure the Jenkins for Fitnesse better by moving the DB Restore to its own project instance for more fine grain control, and discovered where the Fitnesse results can be shown.

JeninsF1.png
JeninsF1.png (65.76 KiB) Viewed 5349 times

It will just run the Fitnesse server on every commit onto Fitnesse code or scripts and output the results automatically.

JenkinsF2.png
JenkinsF2.png (78.8 KiB) Viewed 5349 times

The Post-Build setting allows that by checking the Fitnesse box and telling it where the results is stored.

JenkinsFitnesse1.png
JenkinsFitnesse1.png (169.73 KiB) Viewed 5349 times

When a change is detected (via minute basis) the Fitnesse job's green bulb will pulsate. Note the left bottom panel showing what it is doing. (These actions will be transferred to a dedicated DB job later as Fitnesse will just focus on running itself without changing the DB).

JeninsFitnesse0.png
JeninsFitnesse0.png (74.26 KiB) Viewed 5349 times

On clicking the job, it leads to the screen above that shows the last in Build HIstory. Once it is finished you can click on it and it gives an additional Fitnesse icon at the bottom.

JenkinsFitnesse2.png
JenkinsFitnesse2.png (96.56 KiB) Viewed 5349 times

Clicking on the Fitnesse FrontPage link produce its results xml in the format below.

JenkinsFitnesse3.png
JenkinsFitnesse3.png (151.81 KiB) Viewed 5349 times

As you can see it shows what went right or wrong within a single highly colored page for fast take. We shall make this test triggered automatically upon the other jobs such as ADempiereKenai361 and DB Restore. An email can be sent with these page to the developer making the commit that triggered the jobs.

What is left is to make the Fitnesse tests more correct (at the moment we have the Graphical X11 issue for the Jenkins to run) and its own sample data migration scripts where needed. In the long run, all sample has to be in the DB seed. In a perfect scenario, developers whose code is clean will get an email notifying them whether it is 'Successful' or 'Something did not work' from a functional perspective rather than just Java compiler basis only.