Uploaded image for project: 'Oozie'
  1. Oozie
  2. OOZIE-2386

org.apache.oozie.util.TestXConfiguration.testSubstituteVar is flakey

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: trunk
    • Fix Version/s: 4.3.0
    • Component/s: tests
    • Labels:
      None

      Description

      org.apache.oozie.util.TestXConfiguration.testSubstituteVar is flakey.

      junit.framework.AssertionFailedError: Fail to apply substitution depth
      	at junit.framework.Assert.fail(Assert.java:50)
      	at org.apache.oozie.util.TestXConfiguration.testSubstituteVar(TestXConfiguration.java:223)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:497)
      	at junit.framework.TestCase.runTest(TestCase.java:168)
      	at junit.framework.TestCase.runBare(TestCase.java:134)
      	at junit.framework.TestResult$1.protect(TestResult.java:110)
      	at junit.framework.TestResult.runProtected(TestResult.java:128)
      	at junit.framework.TestResult.run(TestResult.java:113)
      	at junit.framework.TestCase.run(TestCase.java:124)
      	at junit.framework.TestSuite.runTest(TestSuite.java:243)
      	at junit.framework.TestSuite.run(TestSuite.java:238)
      	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
      	at org.junit.runners.Suite.runChild(Suite.java:128)
      	at org.junit.runners.Suite.runChild(Suite.java:24)
      	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
      

      This is another case of a static variable persisting between unit tests. XConfiguration#initSubstituteDepth() gets called when you create an XConfiguration object, but there's an initialized static variable to make it only happen once. A different test, XConfiguration#testSubstituteVarUnlimited() sets the depth to infinite, so if it's run first, then XConfiguration#initSubstituteDepth() will fail because it's testing that the substitution hits a limit. We simply need to reset initialized at the beginning of the test (which XConfiguration#testSubstituteVarUnlimited() actually does already).

        Attachments

        1. OOZIE-2386.001.patch
          0.6 kB
          Robert Kanter
        2. OOZIE-2386.002.patch
          1 kB
          Robert Kanter
        3. OOZIE-2386.ammendment.patch
          2 kB
          Robert Kanter

          Activity

            People

            • Assignee:
              rkanter Robert Kanter
              Reporter:
              rkanter Robert Kanter
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: