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

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                Created:
                Updated:
                Resolved: