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
Run Descartes
Directly from the Joram maven build! (after "mvn clean install").
Gitab issue generated (critical)
The issue mentions that all tests pass in the module... even when code is removed by Descartes.
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...)
Run DSpot as suggested in issue
Run the tests (with the DSpot-generated one)
Run Descartes again: DSpot solved the issue!
Still one issue, but minor: the code mutation is detected, but not by ALL tests...
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.