Last weekend, I found some time to hack new tooling for Apache Camel route coverage reports. The intention is to provide APIs and functionality out of the box from Apache Camel that other tooling vendors can leverage in their tooling, e.g. to show route coverage in IDEA or Eclipse tooling, or to generate SonarType reports, etc.
I got as far as building a prototype that is capable of generating a report which you run via the camel-maven-plugin. Having a prototype built in the camel-maven-plugin is a very good idea as it's neutral and basically just plain Java. It makes it possible for other vendors to look at how it's implemented in the camel-maven-plugin and be inspired as to how to use this functionality in their tooling.
I wanted to work on the hardest bit first, which is being able to parse your Java routes and correlate to which EIPs were covered or not. We do have parts of such a parse based on the endpoint validation tooling which already exists in the camel-maven-plugin, which I have previously blogged about. The parser still needs a little bit more work, however, I do think I got it pretty far over just one weekend of work. Support for XML was added as well, as shown in the screenshot below:
I recorded a video demonstrating the tooling in action.
I forgot to show in the video recording that you can change the Camel routes, such as inserting empty lines, adding methods to the class, etc, and when you re-run the camel-maven-plugin, it will re-parse the route and output the line numbers correctly.
Anyway, enjoy the video. It's about 12 minutes long, so go grab a cup of coffee or tea first.
The plan is to include this tooling in the next Apache Camel 2.21 release, which is scheduled for January 2018.
The JIRA ticket about the tooling is CAMEL-8657.
Feedback is welcome, and as always, we love contributions at Apache Camel, so you are welcome to help out. The current work is upstream on this GitHub branch. The code will be merged to the master branch later when Apache Camel 2.20.0 is officially released.
When I get some more time in the future, I would like to add support for route coverage in the Apache Camel IDEA plugin. Eclipse users may want to look at the JBoss Fuse tooling, which has support for Apache Camel, which could potentially also add support for route coverage as well.