Description

      matrix-project is failing when executing on the PCT against cores >= 1.653, the failling test is MatrixRunTest

      MatrixRunTest fails due to a this change in the CauseAction added in 1.653, as result of this change the OldDataMonitor is triggered and a NPE is thrown due to the lack of  parent

       

      unmarshalRunMatrix(hudson.matrix.MatrixRunTest) Time elapsed: 7.629 sec <<< ERROR!
      com.thoughtworks.xstream.converters.ConversionException: 
      null : null
      ---- Debugging information ----
      cause-exception : java.lang.NullPointerException
      cause-message : null
      class : hudson.matrix.MatrixRun
      required-type : hudson.matrix.MatrixRun
      converter-type : hudson.util.RobustReflectionConverter
      path : /matrix-run
      line number : 39
      version : not available
      -------------------------------
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
      at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
      at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
      at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
      at hudson.util.XStream2.unmarshal(XStream2.java:114)
      at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
      at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1053)
      at hudson.matrix.MatrixRunTest.unmarshalRunMatrix(MatrixRunTest.java:50)
      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:498)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
      at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      at org.jvnet.hudson.test.JenkinsRule$2.evaluate(JenkinsRule.java:534)
      at org.junit.rules.RunRules.evaluate(RunRules.java:20)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
      at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
      at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
      at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
      at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
      at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
      at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
      at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
      Caused by: java.lang.NullPointerException
      at hudson.diagnosis.OldDataMonitor.referTo(OldDataMonitor.java:388)
      at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:161)
      at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:202)
      at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:371)
      at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
      ... 36 more
      

       

      To Reproduce

      mvn clean compile test-compile && mvn surefire:test -Djenkins.version=2.46.2 -Dtest=MatrixRun* -Djava.level=7
      

      The jenkins.version property can be any higher or equal to 1.653

      Extra comments

      The tests are fine against the baseline and someone could argue that there is no point in running the PCT or that this is not an issue, however I believe that being able to test a plugin against versions of the core newer than the one defined in the baseline is useful if the fix to make this possible does not imply a baseline bump or breaks existing behaviour

          [JENKINS-44444] Matrix-project is failing the PCT

          Raul Arabaolaza created issue -
          Raul Arabaolaza made changes -
          Description Original: h4. h4. Description

          {{matrix-project}} is failing when executing on the [PCT|https://github.com/jenkinsci/plugin-compat-tester] against cores >= {{1.653, the failling tests are }}{{MatrixRunTest}} and {{CombinationFilterUsingBuildParamsTest}} 

          {{MatrixRunTest}} fails due to a this change in the {{CauseAction}} added in {{1.653, as result of this change the }}{{OldDataMonitor}} is triggered and a NPE is thrown due to the lack of  parent

           
          {noformat}
          unmarshalRunMatrix(hudson.matrix.MatrixRunTest) Time elapsed: 7.629 sec <<< ERROR!
          com.thoughtworks.xstream.converters.ConversionException:
          null : null
          ---- Debugging information ----
          cause-exception : java.lang.NullPointerException
          cause-message : null
          class : hudson.matrix.MatrixRun
          required-type : hudson.matrix.MatrixRun
          converter-type : hudson.util.RobustReflectionConverter
          path : /matrix-run
          line number : 39
          version : not available
          -------------------------------
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
          at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
          at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
          at hudson.util.XStream2.unmarshal(XStream2.java:114)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1053)
          at hudson.matrix.MatrixRunTest.unmarshalRunMatrix(MatrixRunTest.java:50)
          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:498)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
          at org.jvnet.hudson.test.JenkinsRule$2.evaluate(JenkinsRule.java:534)
          at org.junit.rules.RunRules.evaluate(RunRules.java:20)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
          Caused by: java.lang.NullPointerException
          at hudson.diagnosis.OldDataMonitor.referTo(OldDataMonitor.java:388)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:161)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:202)
          at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:371)
          at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
          ... 36 more
          {noformat}
           

          {{CombinationFilterUsingBuildParamsTest}} fails due to the need to adapt the mocking strategy to the new {{Jenkins.getInstanceOrNull}} method

           
          {noformat}
          testCombinationFilterV01(hudson.matrix.CombinationFilterUsingBuildParamsTest) Time elapsed: 0.006 sec <<< ERROR!
          org.mockito.exceptions.misusing.WrongTypeOfReturnValue:

          ExtensionList$$EnhancerByMockitoWithCGLIB$$91270d55 cannot be returned by getInstanceOrNull()
          getInstanceOrNull() should return Jenkins
          ***
          If you're unsure why you're getting above error read on.
          Due to the nature of the syntax above problem might occur because:
          1. This exception *might* occur in wrongly written multi-threaded tests.
          Please refer to Mockito FAQ on limitations of concurrency testing.
          2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies -
          - with doReturn|Throw() family of methods. More in javadocs for Mockito.spy() method.

          at hudson.matrix.CombinationFilterUsingBuildParamsTest.usingNoListeners(CombinationFilterUsingBuildParamsTest.java:252)
          at hudson.matrix.CombinationFilterUsingBuildParamsTest.setUp(CombinationFilterUsingBuildParamsTest.java:122)
          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:498)
          at org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:133)
          at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)
          at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87)
          at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
          at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
          at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
          at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106)
          at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
          at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)

          {noformat}
          New: h4. Description

          {{matrix-project}} is failing when executing on the [PCT|https://github.com/jenkinsci/plugin-compat-tester] against cores >= {{1.653}}, the failling tests are {{MatrixRunTest}} and {{CombinationFilterUsingBuildParamsTest}} 

          {{MatrixRunTest}} fails due to a this change in the {{CauseAction}} added in {{1.653}}, as result of this change the {{OldDataMonitor}} is triggered and a NPE is thrown due to the lack of  parent

           
          {noformat}
          unmarshalRunMatrix(hudson.matrix.MatrixRunTest) Time elapsed: 7.629 sec <<< ERROR!
          com.thoughtworks.xstream.converters.ConversionException:
          null : null
          ---- Debugging information ----
          cause-exception : java.lang.NullPointerException
          cause-message : null
          class : hudson.matrix.MatrixRun
          required-type : hudson.matrix.MatrixRun
          converter-type : hudson.util.RobustReflectionConverter
          path : /matrix-run
          line number : 39
          version : not available
          -------------------------------
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
          at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
          at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
          at hudson.util.XStream2.unmarshal(XStream2.java:114)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1053)
          at hudson.matrix.MatrixRunTest.unmarshalRunMatrix(MatrixRunTest.java:50)
          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:498)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
          at org.jvnet.hudson.test.JenkinsRule$2.evaluate(JenkinsRule.java:534)
          at org.junit.rules.RunRules.evaluate(RunRules.java:20)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
          Caused by: java.lang.NullPointerException
          at hudson.diagnosis.OldDataMonitor.referTo(OldDataMonitor.java:388)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:161)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:202)
          at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:371)
          at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
          ... 36 more
          {noformat}
           

          {{CombinationFilterUsingBuildParamsTest}} fails due to the need to adapt the mocking strategy to the new {{Jenkins.getInstanceOrNull}} method

           
          {noformat}
          testCombinationFilterV01(hudson.matrix.CombinationFilterUsingBuildParamsTest) Time elapsed: 0.006 sec <<< ERROR!
          org.mockito.exceptions.misusing.WrongTypeOfReturnValue:

          ExtensionList$$EnhancerByMockitoWithCGLIB$$91270d55 cannot be returned by getInstanceOrNull()
          getInstanceOrNull() should return Jenkins
          ***
          If you're unsure why you're getting above error read on.
          Due to the nature of the syntax above problem might occur because:
          1. This exception *might* occur in wrongly written multi-threaded tests.
          Please refer to Mockito FAQ on limitations of concurrency testing.
          2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies -
          - with doReturn|Throw() family of methods. More in javadocs for Mockito.spy() method.

          at hudson.matrix.CombinationFilterUsingBuildParamsTest.usingNoListeners(CombinationFilterUsingBuildParamsTest.java:252)
          at hudson.matrix.CombinationFilterUsingBuildParamsTest.setUp(CombinationFilterUsingBuildParamsTest.java:122)
          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:498)
          at org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:133)
          at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)
          at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87)
          at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
          at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
          at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
          at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106)
          at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
          at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)

          {noformat}

          h4. To Reproduce

          {code}
          mvn clean compile test-compile && mvn surefire:test -f pct.xml -Djenkins.version=2.46.2 -Dtest=CombinationFilter*,MatrixRun* -Djava.level=7
          {code}

          Where the file {{pct.xml}} is generated from the PCT against core {{2.46.2}}, for simplicity I have attached the file to this ticket
          Raul Arabaolaza made changes -
          Description Original: h4. Description

          {{matrix-project}} is failing when executing on the [PCT|https://github.com/jenkinsci/plugin-compat-tester] against cores >= {{1.653}}, the failling tests are {{MatrixRunTest}} and {{CombinationFilterUsingBuildParamsTest}} 

          {{MatrixRunTest}} fails due to a this change in the {{CauseAction}} added in {{1.653}}, as result of this change the {{OldDataMonitor}} is triggered and a NPE is thrown due to the lack of  parent

           
          {noformat}
          unmarshalRunMatrix(hudson.matrix.MatrixRunTest) Time elapsed: 7.629 sec <<< ERROR!
          com.thoughtworks.xstream.converters.ConversionException:
          null : null
          ---- Debugging information ----
          cause-exception : java.lang.NullPointerException
          cause-message : null
          class : hudson.matrix.MatrixRun
          required-type : hudson.matrix.MatrixRun
          converter-type : hudson.util.RobustReflectionConverter
          path : /matrix-run
          line number : 39
          version : not available
          -------------------------------
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
          at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
          at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
          at hudson.util.XStream2.unmarshal(XStream2.java:114)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1053)
          at hudson.matrix.MatrixRunTest.unmarshalRunMatrix(MatrixRunTest.java:50)
          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:498)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
          at org.jvnet.hudson.test.JenkinsRule$2.evaluate(JenkinsRule.java:534)
          at org.junit.rules.RunRules.evaluate(RunRules.java:20)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
          Caused by: java.lang.NullPointerException
          at hudson.diagnosis.OldDataMonitor.referTo(OldDataMonitor.java:388)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:161)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:202)
          at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:371)
          at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
          ... 36 more
          {noformat}
           

          {{CombinationFilterUsingBuildParamsTest}} fails due to the need to adapt the mocking strategy to the new {{Jenkins.getInstanceOrNull}} method

           
          {noformat}
          testCombinationFilterV01(hudson.matrix.CombinationFilterUsingBuildParamsTest) Time elapsed: 0.006 sec <<< ERROR!
          org.mockito.exceptions.misusing.WrongTypeOfReturnValue:

          ExtensionList$$EnhancerByMockitoWithCGLIB$$91270d55 cannot be returned by getInstanceOrNull()
          getInstanceOrNull() should return Jenkins
          ***
          If you're unsure why you're getting above error read on.
          Due to the nature of the syntax above problem might occur because:
          1. This exception *might* occur in wrongly written multi-threaded tests.
          Please refer to Mockito FAQ on limitations of concurrency testing.
          2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies -
          - with doReturn|Throw() family of methods. More in javadocs for Mockito.spy() method.

          at hudson.matrix.CombinationFilterUsingBuildParamsTest.usingNoListeners(CombinationFilterUsingBuildParamsTest.java:252)
          at hudson.matrix.CombinationFilterUsingBuildParamsTest.setUp(CombinationFilterUsingBuildParamsTest.java:122)
          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:498)
          at org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:133)
          at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)
          at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87)
          at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
          at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
          at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
          at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106)
          at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
          at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)

          {noformat}

          h4. To Reproduce

          {code}
          mvn clean compile test-compile && mvn surefire:test -f pct.xml -Djenkins.version=2.46.2 -Dtest=CombinationFilter*,MatrixRun* -Djava.level=7
          {code}

          Where the file {{pct.xml}} is generated from the PCT against core {{2.46.2}}, for simplicity I have attached the file to this ticket
          New: h4. Description

          {{matrix-project}} is failing when executing on the [PCT|https://github.com/jenkinsci/plugin-compat-tester] against cores >= {{1.653}}, the failling tests are {{MatrixRunTest}} and {{CombinationFilterUsingBuildParamsTest}} 

          {{MatrixRunTest}} fails due to a this change in the {{CauseAction}} added in {{1.653}}, as result of this change the {{OldDataMonitor}} is triggered and a NPE is thrown due to the lack of  parent

           
          {noformat}
          unmarshalRunMatrix(hudson.matrix.MatrixRunTest) Time elapsed: 7.629 sec <<< ERROR!
          com.thoughtworks.xstream.converters.ConversionException:
          null : null
          ---- Debugging information ----
          cause-exception : java.lang.NullPointerException
          cause-message : null
          class : hudson.matrix.MatrixRun
          required-type : hudson.matrix.MatrixRun
          converter-type : hudson.util.RobustReflectionConverter
          path : /matrix-run
          line number : 39
          version : not available
          -------------------------------
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
          at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
          at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
          at hudson.util.XStream2.unmarshal(XStream2.java:114)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1053)
          at hudson.matrix.MatrixRunTest.unmarshalRunMatrix(MatrixRunTest.java:50)
          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:498)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
          at org.jvnet.hudson.test.JenkinsRule$2.evaluate(JenkinsRule.java:534)
          at org.junit.rules.RunRules.evaluate(RunRules.java:20)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
          Caused by: java.lang.NullPointerException
          at hudson.diagnosis.OldDataMonitor.referTo(OldDataMonitor.java:388)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:161)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:202)
          at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:371)
          at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
          ... 36 more
          {noformat}
           

          {{CombinationFilterUsingBuildParamsTest}} fails due to the need to adapt the mocking strategy to the new {{Jenkins.getInstanceOrNull}} method

           
          {noformat}
          testCombinationFilterV01(hudson.matrix.CombinationFilterUsingBuildParamsTest) Time elapsed: 0.006 sec <<< ERROR!
          org.mockito.exceptions.misusing.WrongTypeOfReturnValue:

          ExtensionList$$EnhancerByMockitoWithCGLIB$$91270d55 cannot be returned by getInstanceOrNull()
          getInstanceOrNull() should return Jenkins
          ***
          If you're unsure why you're getting above error read on.
          Due to the nature of the syntax above problem might occur because:
          1. This exception *might* occur in wrongly written multi-threaded tests.
          Please refer to Mockito FAQ on limitations of concurrency testing.
          2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies -
          - with doReturn|Throw() family of methods. More in javadocs for Mockito.spy() method.

          at hudson.matrix.CombinationFilterUsingBuildParamsTest.usingNoListeners(CombinationFilterUsingBuildParamsTest.java:252)
          at hudson.matrix.CombinationFilterUsingBuildParamsTest.setUp(CombinationFilterUsingBuildParamsTest.java:122)
          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:498)
          at org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:133)
          at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)
          at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87)
          at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
          at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
          at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
          at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106)
          at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
          at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)

          {noformat}

          h4. To Reproduce

          {code}
          mvn clean compile test-compile && mvn surefire:test -f pct.xml -Djenkins.version=2.46.2 -Dtest=CombinationFilter*,MatrixRun* -Djava.level=7
          {code}

          Where the file {{pct.xml}} is generated from the PCT against core {{2.46.2}}, for simplicity I have attached the file to this ticket

          h4. Extra comments

          The tests are fine against the baseline and someone could argue that there is no point in running the PCT or that this is not an issue, however I believe that being able to test a plugin against versions of the core newer than the one defined in the baseline is useful if the fix to make this possible does not imply a baseline bump or breaks existing behaviour
          Raul Arabaolaza made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]
          Raul Arabaolaza made changes -
          Description Original: h4. Description

          {{matrix-project}} is failing when executing on the [PCT|https://github.com/jenkinsci/plugin-compat-tester] against cores >= {{1.653}}, the failling tests are {{MatrixRunTest}} and {{CombinationFilterUsingBuildParamsTest}} 

          {{MatrixRunTest}} fails due to a this change in the {{CauseAction}} added in {{1.653}}, as result of this change the {{OldDataMonitor}} is triggered and a NPE is thrown due to the lack of  parent

           
          {noformat}
          unmarshalRunMatrix(hudson.matrix.MatrixRunTest) Time elapsed: 7.629 sec <<< ERROR!
          com.thoughtworks.xstream.converters.ConversionException:
          null : null
          ---- Debugging information ----
          cause-exception : java.lang.NullPointerException
          cause-message : null
          class : hudson.matrix.MatrixRun
          required-type : hudson.matrix.MatrixRun
          converter-type : hudson.util.RobustReflectionConverter
          path : /matrix-run
          line number : 39
          version : not available
          -------------------------------
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
          at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
          at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
          at hudson.util.XStream2.unmarshal(XStream2.java:114)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1053)
          at hudson.matrix.MatrixRunTest.unmarshalRunMatrix(MatrixRunTest.java:50)
          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:498)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
          at org.jvnet.hudson.test.JenkinsRule$2.evaluate(JenkinsRule.java:534)
          at org.junit.rules.RunRules.evaluate(RunRules.java:20)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
          Caused by: java.lang.NullPointerException
          at hudson.diagnosis.OldDataMonitor.referTo(OldDataMonitor.java:388)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:161)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:202)
          at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:371)
          at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
          ... 36 more
          {noformat}
           

          {{CombinationFilterUsingBuildParamsTest}} fails due to the need to adapt the mocking strategy to the new {{Jenkins.getInstanceOrNull}} method

           
          {noformat}
          testCombinationFilterV01(hudson.matrix.CombinationFilterUsingBuildParamsTest) Time elapsed: 0.006 sec <<< ERROR!
          org.mockito.exceptions.misusing.WrongTypeOfReturnValue:

          ExtensionList$$EnhancerByMockitoWithCGLIB$$91270d55 cannot be returned by getInstanceOrNull()
          getInstanceOrNull() should return Jenkins
          ***
          If you're unsure why you're getting above error read on.
          Due to the nature of the syntax above problem might occur because:
          1. This exception *might* occur in wrongly written multi-threaded tests.
          Please refer to Mockito FAQ on limitations of concurrency testing.
          2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies -
          - with doReturn|Throw() family of methods. More in javadocs for Mockito.spy() method.

          at hudson.matrix.CombinationFilterUsingBuildParamsTest.usingNoListeners(CombinationFilterUsingBuildParamsTest.java:252)
          at hudson.matrix.CombinationFilterUsingBuildParamsTest.setUp(CombinationFilterUsingBuildParamsTest.java:122)
          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:498)
          at org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:133)
          at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)
          at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87)
          at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
          at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
          at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
          at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106)
          at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
          at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)

          {noformat}

          h4. To Reproduce

          {code}
          mvn clean compile test-compile && mvn surefire:test -f pct.xml -Djenkins.version=2.46.2 -Dtest=CombinationFilter*,MatrixRun* -Djava.level=7
          {code}

          Where the file {{pct.xml}} is generated from the PCT against core {{2.46.2}}, for simplicity I have attached the file to this ticket

          h4. Extra comments

          The tests are fine against the baseline and someone could argue that there is no point in running the PCT or that this is not an issue, however I believe that being able to test a plugin against versions of the core newer than the one defined in the baseline is useful if the fix to make this possible does not imply a baseline bump or breaks existing behaviour
          New: h4. Description

          {{matrix-project}} is failing when executing on the [PCT|https://github.com/jenkinsci/plugin-compat-tester] against cores >= {{1.653}}, the failling tests are {{MatrixRunTest}} and {{CombinationFilterUsingBuildParamsTest}} 

          {{MatrixRunTest}} fails due to a this change in the {{CauseAction}} added in {{1.653}}, as result of this change the {{OldDataMonitor}} is triggered and a NPE is thrown due to the lack of  parent

           
          {noformat}
          unmarshalRunMatrix(hudson.matrix.MatrixRunTest) Time elapsed: 7.629 sec <<< ERROR!
          com.thoughtworks.xstream.converters.ConversionException:
          null : null
          ---- Debugging information ----
          cause-exception : java.lang.NullPointerException
          cause-message : null
          class : hudson.matrix.MatrixRun
          required-type : hudson.matrix.MatrixRun
          converter-type : hudson.util.RobustReflectionConverter
          path : /matrix-run
          line number : 39
          version : not available
          -------------------------------
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
          at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
          at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
          at hudson.util.XStream2.unmarshal(XStream2.java:114)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1053)
          at hudson.matrix.MatrixRunTest.unmarshalRunMatrix(MatrixRunTest.java:50)
          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:498)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
          at org.jvnet.hudson.test.JenkinsRule$2.evaluate(JenkinsRule.java:534)
          at org.junit.rules.RunRules.evaluate(RunRules.java:20)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
          Caused by: java.lang.NullPointerException
          at hudson.diagnosis.OldDataMonitor.referTo(OldDataMonitor.java:388)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:161)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:202)
          at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:371)
          at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
          ... 36 more
          {noformat}
           

          {{CombinationFilterUsingBuildParamsTest}} fails due to the need to adapt the mocking strategy to the new {{Jenkins.getInstanceOrNull}} method

           
          {noformat}
          testCombinationFilterV01(hudson.matrix.CombinationFilterUsingBuildParamsTest) Time elapsed: 0.006 sec <<< ERROR!
          org.mockito.exceptions.misusing.WrongTypeOfReturnValue:

          ExtensionList$$EnhancerByMockitoWithCGLIB$$91270d55 cannot be returned by getInstanceOrNull()
          getInstanceOrNull() should return Jenkins
          ***
          If you're unsure why you're getting above error read on.
          Due to the nature of the syntax above problem might occur because:
          1. This exception *might* occur in wrongly written multi-threaded tests.
          Please refer to Mockito FAQ on limitations of concurrency testing.
          2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies -
          - with doReturn|Throw() family of methods. More in javadocs for Mockito.spy() method.

          at hudson.matrix.CombinationFilterUsingBuildParamsTest.usingNoListeners(CombinationFilterUsingBuildParamsTest.java:252)
          at hudson.matrix.CombinationFilterUsingBuildParamsTest.setUp(CombinationFilterUsingBuildParamsTest.java:122)
          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:498)
          at org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:133)
          at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)
          at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87)
          at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
          at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
          at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
          at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106)
          at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
          at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)

          {noformat}

          h4. To Reproduce

          {code}
          mvn clean compile test-compile && mvn surefire:test -Djenkins.version=2.46.2 -Dtest=CombinationFilter*,MatrixRun* -Djava.level=7
          {code}

          The {{jenkins.version}} property can be any higher or equal to {{1.653}}

          h4. Extra comments

          The tests are fine against the baseline and someone could argue that there is no point in running the PCT or that this is not an issue, however I believe that being able to test a plugin against versions of the core newer than the one defined in the baseline is useful if the fix to make this possible does not imply a baseline bump or breaks existing behaviour
          Raul Arabaolaza made changes -
          Description Original: h4. Description

          {{matrix-project}} is failing when executing on the [PCT|https://github.com/jenkinsci/plugin-compat-tester] against cores >= {{1.653}}, the failling tests are {{MatrixRunTest}} and {{CombinationFilterUsingBuildParamsTest}} 

          {{MatrixRunTest}} fails due to a this change in the {{CauseAction}} added in {{1.653}}, as result of this change the {{OldDataMonitor}} is triggered and a NPE is thrown due to the lack of  parent

           
          {noformat}
          unmarshalRunMatrix(hudson.matrix.MatrixRunTest) Time elapsed: 7.629 sec <<< ERROR!
          com.thoughtworks.xstream.converters.ConversionException:
          null : null
          ---- Debugging information ----
          cause-exception : java.lang.NullPointerException
          cause-message : null
          class : hudson.matrix.MatrixRun
          required-type : hudson.matrix.MatrixRun
          converter-type : hudson.util.RobustReflectionConverter
          path : /matrix-run
          line number : 39
          version : not available
          -------------------------------
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
          at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
          at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
          at hudson.util.XStream2.unmarshal(XStream2.java:114)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1053)
          at hudson.matrix.MatrixRunTest.unmarshalRunMatrix(MatrixRunTest.java:50)
          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:498)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
          at org.jvnet.hudson.test.JenkinsRule$2.evaluate(JenkinsRule.java:534)
          at org.junit.rules.RunRules.evaluate(RunRules.java:20)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
          Caused by: java.lang.NullPointerException
          at hudson.diagnosis.OldDataMonitor.referTo(OldDataMonitor.java:388)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:161)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:202)
          at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:371)
          at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
          ... 36 more
          {noformat}
           

          {{CombinationFilterUsingBuildParamsTest}} fails due to the need to adapt the mocking strategy to the new {{Jenkins.getInstanceOrNull}} method

           
          {noformat}
          testCombinationFilterV01(hudson.matrix.CombinationFilterUsingBuildParamsTest) Time elapsed: 0.006 sec <<< ERROR!
          org.mockito.exceptions.misusing.WrongTypeOfReturnValue:

          ExtensionList$$EnhancerByMockitoWithCGLIB$$91270d55 cannot be returned by getInstanceOrNull()
          getInstanceOrNull() should return Jenkins
          ***
          If you're unsure why you're getting above error read on.
          Due to the nature of the syntax above problem might occur because:
          1. This exception *might* occur in wrongly written multi-threaded tests.
          Please refer to Mockito FAQ on limitations of concurrency testing.
          2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies -
          - with doReturn|Throw() family of methods. More in javadocs for Mockito.spy() method.

          at hudson.matrix.CombinationFilterUsingBuildParamsTest.usingNoListeners(CombinationFilterUsingBuildParamsTest.java:252)
          at hudson.matrix.CombinationFilterUsingBuildParamsTest.setUp(CombinationFilterUsingBuildParamsTest.java:122)
          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:498)
          at org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:133)
          at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282)
          at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87)
          at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120)
          at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
          at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
          at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:122)
          at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:106)
          at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53)
          at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)

          {noformat}

          h4. To Reproduce

          {code}
          mvn clean compile test-compile && mvn surefire:test -Djenkins.version=2.46.2 -Dtest=CombinationFilter*,MatrixRun* -Djava.level=7
          {code}

          The {{jenkins.version}} property can be any higher or equal to {{1.653}}

          h4. Extra comments

          The tests are fine against the baseline and someone could argue that there is no point in running the PCT or that this is not an issue, however I believe that being able to test a plugin against versions of the core newer than the one defined in the baseline is useful if the fix to make this possible does not imply a baseline bump or breaks existing behaviour
          New: h4. Description

          {{matrix-project}} is failing when executing on the [PCT|https://github.com/jenkinsci/plugin-compat-tester] against cores >= {{1.653}}, the failling test is {{MatrixRunTest}}

          {{MatrixRunTest}} fails due to a this change in the {{CauseAction}} added in {{1.653}}, as result of this change the {{OldDataMonitor}} is triggered and a NPE is thrown due to the lack of  parent

           
          {noformat}
          unmarshalRunMatrix(hudson.matrix.MatrixRunTest) Time elapsed: 7.629 sec <<< ERROR!
          com.thoughtworks.xstream.converters.ConversionException:
          null : null
          ---- Debugging information ----
          cause-exception : java.lang.NullPointerException
          cause-message : null
          class : hudson.matrix.MatrixRun
          required-type : hudson.matrix.MatrixRun
          converter-type : hudson.util.RobustReflectionConverter
          path : /matrix-run
          line number : 39
          version : not available
          -------------------------------
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
          at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
          at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
          at hudson.util.XStream2.unmarshal(XStream2.java:114)
          at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
          at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1053)
          at hudson.matrix.MatrixRunTest.unmarshalRunMatrix(MatrixRunTest.java:50)
          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:498)
          at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
          at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
          at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
          at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
          at org.jvnet.hudson.test.JenkinsRule$2.evaluate(JenkinsRule.java:534)
          at org.junit.rules.RunRules.evaluate(RunRules.java:20)
          at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
          at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
          at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
          at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
          at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
          at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
          at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
          at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
          at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
          at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
          at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
          at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
          at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
          at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
          Caused by: java.lang.NullPointerException
          at hudson.diagnosis.OldDataMonitor.referTo(OldDataMonitor.java:388)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:161)
          at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:202)
          at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:371)
          at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
          at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
          ... 36 more
          {noformat}
           
          h4. To Reproduce

          {code}
          mvn clean compile test-compile && mvn surefire:test -Djenkins.version=2.46.2 -Dtest=MatrixRun* -Djava.level=7
          {code}

          The {{jenkins.version}} property can be any higher or equal to {{1.653}}

          h4. Extra comments

          The tests are fine against the baseline and someone could argue that there is no point in running the PCT or that this is not an issue, however I believe that being able to test a plugin against versions of the core newer than the one defined in the baseline is useful if the fix to make this possible does not imply a baseline bump or breaks existing behaviour
          Raul Arabaolaza made changes -
          Remote Link New: This issue links to "PR-49 (Web Link)" [ 16908 ]
          Raul Arabaolaza made changes -
          Status Original: In Progress [ 3 ] New: In Review [ 10005 ]
          Jesse Glick made changes -
          Link New: This issue is blocked by JENKINS-33467 [ JENKINS-33467 ]

          Jesse Glick added a comment -

          OldDataMonitor is indeed getting notified because of CauseAction.causes. But the NPE in referTo is not a bug in Jenkins core—it is a bug in the test, which is deserializing a Run incorrectly.

          Jesse Glick added a comment - OldDataMonitor is indeed getting notified because of CauseAction.causes . But the NPE in referTo is not a bug in Jenkins core—it is a bug in the test, which is deserializing a Run incorrectly.

            jglick Jesse Glick
            rarabaolaza Raul Arabaolaza
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: