Derby
  1. Derby
  2. DERBY-5821

tools/derbyrunjartest.java doesn't use jvmflags

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 10.10.1.1
    • Fix Version/s: 10.10.1.1
    • Component/s: Test
    • Labels:
      None

      Description

      tools/derbyrunjartest.java doesn't use the jvmflags property when it starts a sub-process, so one cannot pass custom flags to the process. This makes it difficult to get the test to pass when running with code coverage tools.

      For example, for EMMA, we need to manipulate the classpath and reduce the verbosity level. And we need to pass a -javaagent flag if we're running with JaCoCo. Using the jvmflags property works for those tests that don't spawn processes.

      1. d5821-1a.diff
        19 kB
        Knut Anders Hatlen
      2. d5821-2a.patch
        3 kB
        Knut Anders Hatlen

        Activity

        Hide
        Knut Anders Hatlen added a comment -

        It's probably better to convert the test to JUnit and leave the old harness as it is. I'll give it a try.

        Show
        Knut Anders Hatlen added a comment - It's probably better to convert the test to JUnit and leave the old harness as it is. I'll give it a try.
        Hide
        Knut Anders Hatlen added a comment -

        Attached is a patch that rewrites derbyrunjartest as a JUnit
        test and removes it from the old harness.

        Both suites.All and derbyall passed with the patch.

        Details:

        • build.xml

        Add derbyrun.jar to the classpath when running JUnit tests under EMMA. It wasn't needed before, since none of the other JUnit tests used derbyrun.jar.

        • functionTests/master/derbyrunjartest.out

        Remove old canon.

        • functionTests/suites/derbytools.runall

        Remove from old harness suite.

        • functionTests/tests/tools/build.xml

        Make sure newly created policy file gets copied to classes directory.

        • functionTests/tests/tools/derbyrunjartest.java

        Execute the tools and compare actual output with the expected output using BaseTestCase.assertExecJavaCmdAsExpected().

        • functionTests/tests/tools/derbyrunjartest.policy

        Additional permissions needed for the test to run (test classes need permission to find the location of derbyrun.jar). The original version of the test ran without a security manager for this reason.

        • functionTests/tests/tools/derbyrunjartest_app.properties
        • functionTests/tests/tools/derbyrunjartest_sed.properties

        Remove files used by the old harness.

        • junit/BaseTestCase.java

        Added logic to pass emma.jar to the classpath of the sub-process when running java -jar. Since you cannot add jar files directly to the classpath when running with -jar, emma.jar is added to the bootclasspath.

        Show
        Knut Anders Hatlen added a comment - Attached is a patch that rewrites derbyrunjartest as a JUnit test and removes it from the old harness. Both suites.All and derbyall passed with the patch. Details: build.xml Add derbyrun.jar to the classpath when running JUnit tests under EMMA. It wasn't needed before, since none of the other JUnit tests used derbyrun.jar. functionTests/master/derbyrunjartest.out Remove old canon. functionTests/suites/derbytools.runall Remove from old harness suite. functionTests/tests/tools/build.xml Make sure newly created policy file gets copied to classes directory. functionTests/tests/tools/derbyrunjartest.java Execute the tools and compare actual output with the expected output using BaseTestCase.assertExecJavaCmdAsExpected(). functionTests/tests/tools/derbyrunjartest.policy Additional permissions needed for the test to run (test classes need permission to find the location of derbyrun.jar). The original version of the test ran without a security manager for this reason. functionTests/tests/tools/derbyrunjartest_app.properties functionTests/tests/tools/derbyrunjartest_sed.properties Remove files used by the old harness. junit/BaseTestCase.java Added logic to pass emma.jar to the classpath of the sub-process when running java -jar. Since you cannot add jar files directly to the classpath when running with -jar, emma.jar is added to the bootclasspath.
        Hide
        Knut Anders Hatlen added a comment -

        Committed revision 1353862.

        Show
        Knut Anders Hatlen added a comment - Committed revision 1353862.
        Hide
        Knut Anders Hatlen added a comment -

        Reopening the issue since I forgot to add the JUnit test to the tools._Suite. Also, the test case for the server command fails on J2ME platforms, because the server isn't supported on those platforms, and should be skipped.

        Show
        Knut Anders Hatlen added a comment - Reopening the issue since I forgot to add the JUnit test to the tools._Suite. Also, the test case for the server command fails on J2ME platforms, because the server isn't supported on those platforms, and should be skipped.
        Hide
        Knut Anders Hatlen added a comment -

        Attaching a patch that adds the test to tools._Suite and makes it skip testServer() on J2ME platforms.

        Show
        Knut Anders Hatlen added a comment - Attaching a patch that adds the test to tools._Suite and makes it skip testServer() on J2ME platforms.
        Hide
        Knut Anders Hatlen added a comment -

        Committed revision 1359068.

        Show
        Knut Anders Hatlen added a comment - Committed revision 1359068.

          People

          • Assignee:
            Knut Anders Hatlen
            Reporter:
            Knut Anders Hatlen
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development