Descartes and DSpot demo applied to OW2 Joram


Synopsis

OW2 Joram is a message-oriented middleware (a message queue), that implements some well-know messaging standards, including JMS.

The demo shows:

  • The detection of a critical issue in Joram unit tests, with Descartes (code is removed but the test suite is green - everything "normal"!).
  • The issue is automatically inserted in the Joram Gitlab.
  • Dspot, focused on the issue, generates a test that fixes it.

Note: these tools were really used to detect and fix an issue in Joram: at least, the Descartes + Gitlab issue generation part (the issue was fixed by the Joram team, but without DSpot).

Descartes + Gitlab plugin configuration

Inserted in the Joram pom.xml, uses the Descartes maven plugin + Gitlab extension. The extension code for Descartes, to implement this function, is available as part of STAMP CI/CD tools, at https://github.com/STAMP-project/stamp-ci/tree/master/descartes-issue-generator

1-PomConfiguration.png

Run Descartes

Directly from the Joram maven build! (after "mvn clean install").

2-DescartesBuild.png

Gitab issue generated (critical)

The issue mentions that all tests pass in the module... even when code is removed by Descartes.

3-IssueList.png

The issue contents tells which methods have been emptied by Descartes, and which tests still pass.

It also suggests DSpot commands to fix the issue automatically (no warranty, DSpot can't fix everything...)

4-IssueCritical.png

Run DSpot as suggested in issue

5-DSpotBuild.png

Run the tests (with the DSpot-generated one)

6-MvnTestAmpl.png

Run Descartes again: DSpot solved the issue!

Still one issue, but minor: the code mutation is detected, but not by ALL tests...

7-IssueList.png

In the issue detail, we can see the DSpot-generated test detects the code mutation, but another (previously existing) test does not: it has to be fixed by Joram developers.

8-IssueMinor.png