Uploaded image for project: 'camunda BPM'
  1. camunda BPM
  2. CAM-4133

JAX-RS runtimes interfere with each other during test execution

    XMLWordPrintable

Details

    Description

      Impact:
      We currently do not test against once against each of the three individual runtimes Jersey, Resteasy, and Wink, but three times against a mixture of them. Thus, we may not catch bugs that exist in reality.

      Reason:
      JAX-RS implementations provide a subclass of javax.ws.rs.ext.RuntimeDelegate to provide certain API functionality. A subclass of RuntimeDelegate is looked up via the standard SPI mechanism + a fallback implementation. All three JAX-RS runtimes we test with provide a different implementation of RuntimeDelegate and must therefore be isolated when we execute tests. This is currently not the case. For example, executing the REST API tests with Jersey uses the RuntimeDelegate class provided by Resteasy.

      Solution:
      Only include the vendor-specific JAX-RS implementations in their respective Maven profiles. Restructure the test cases accordingly

      Idea:

      • instead of subclassing the abstract test classes once for each runtime as it is now:
      • define an SPI that allows to start/stop a test container with the desired runtime
      • include one SPI Implementation with each profile of a test runtime
      • add a JUnit rule that uses the SPI to start/stop the test container

      Branch with solution: https://github.com/camunda/camunda-bpm-platform/tree/CAM-4133-2

      mgm-controller-panel

        This is the controller panel for Smart Panels app

        Attachments

          Issue Links

            Activity

              People

                lipphardt Christian
                thorben.lindhauer Thorben Lindhauer
                Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved:

                  Salesforce