Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-51556

xUnit JEP-200 incompatibility

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Critical
    • Resolution: Duplicate
    • Component/s: xunit-plugin
    • Labels:
    • Environment:
      Jenkins v 2.107.3 running on Windows server 2012 R2 standard
    • Similar Issues:

      Description

      xUnit plugin will not parse Gherkin xml output because of JEP-200 issue

      [xUnit] [INFO] - [NUnit-2 (default)] - 6 test report file(s) were found with the pattern 'tests\results_LATEST_\GherkinTest*\TestResult.xml' relative to 'd:\Jenkins\workspace\Test_xUnitPlugin' for the testing framework 'NUnit-2 (default)'.
      [xUnit] [ERROR] - Conversion error Error to convert the input XML document
       ERROR: Step 'Publish xUnit test result report' aborted due to exception: 
       java.lang.SecurityException: Rejected: net.sf.saxon.expr.CardinalityChecker; see [https://jenkins.io/redirect/class-filter/]
       at hudson.remoting.ClassFilter.check(ClassFilter.java:76)
       at hudson.remoting.MultiClassLoaderSerializer$Input.resolveClass(MultiClassLoaderSerializer.java:129)
       at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
       at java.io.ObjectInputStream.readClassDesc(Unknown Source)
       at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
       at java.io.ObjectInputStream.readObject0(Unknown Source)
       at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
       at java.io.ObjectInputStream.readSerialData(Unknown Source)
       at java.io.ObjectInputStream.readOrdinaryObject(Unknown Sorce)
       at java.io.ObjectInputStream.readObject0(Unknown Source)
       at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
       at java.io.ObjectInputStream.defaultReadObject(Unknown Source)
       at java.lang.Throwable.readObject(Unknown Source)
       at sun.reflect.GeneratedMethodAccessor157.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
       at java.io.ObjectInputStream.readSerialData(Unknown Source)
       at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
       at java.io.ObjectInputStream.readObject0(Unknown Source)
       at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
       at java.io.ObjectInputStream.defaultReadObject(Unknown Source)
       at java.lang.Throwable.readObject(Unknown Source)
       at sun.reflect.GeneratedMethodAccessor157.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
       at java.io.ObjectInputStream.readSerialData(Unknown Source)
       at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
       at java.io.ObjectInputStream.readObject0(Unknown Source)
       at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
       at java.io.ObjectInputStream.defaultReadObject(Unknown Source)
       at java.lang.Throwable.readObject(Unknown Source)
       at sun.reflect.GeneratedMethodAccessor157.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
       at java.io.ObjectInputStream.readSerialData(Unknown Source)
       at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
       at java.io.ObjectInputStream.readObject0(Unknown Source)
       at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
       at java.io.ObjectInputStream.defaultReadObject(Unknown Source)
       at java.lang.Throwable.readObject(Unknown Source)
       at sun.reflect.GeneratedMethodAccessor157.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
       at java.io.ObjectInputStream.readSerialData(Unknown Source)
       at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
       at java.io.ObjectInputStream.readObject0(Unknown Source)
       at java.io.ObjectInputStream.readObject(Unknown Source)
       at hudson.remoting.UserRequest.deserialize(UserRequest.java:277)
       at hudson.remoting.UserResponse.retrieve(UserRequest.java:310)
       at hudson.remoting.Channel.call(Channel.java:952)
       Caused: java.io.IOException: Failed to deserialize response to UserRequest:org.jenkinsci.plugins.xunit.service.XUnitTransformer@267de652
       at hudson.remoting.Channel.call(Channel.java:960)
       at hudson.FilePath.act(FilePath.java:1009)
       Caused: java.io.IOException: remote file operation failed: d:\Jenkins\workspace\Test_xUnitPlugin at hudson.remoting.Channel@7e088e6e:JNLP4-connect connection from fr1pswbld11.misys.global.ad/10.21.22.129:61724
       at hudson.FilePath.act(FilePath.java:1016)
       at hudson.FilePath.act(FilePath.java:998)
       at org.jenkinsci.plugins.xunit.XUnitProcessor.performTests(XUnitProcessor.java:207)
       at org.jenkinsci.plugins.xunit.XUnitProcessor.performXUnit(XUnitProcessor.java:150)
       at org.jenkinsci.plugins.xunit.XUnitPublisher.perform(XUnitPublisher.java:129)
       at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
       at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
       at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
       at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)
       at hudson.model.Build$BuildExecution.post2(Build.java:186)
       at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
       at hudson.model.Run.execute(Run.java:1752)
       at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
       at hudson.model.ResourceController.execute(ResourceController.java:97)
       at hudson.model.Executor.run(Executor.java:429)
       [BFA] Scanning build for known causes...
       [BFA] No failure causes found
       [BFA] Done. 0s
       Finished: FAILURE
      

        Attachments

          Issue Links

            Activity

            Hide
            jkg20 Jason Gibbons added a comment -

            After some brief investigation, please find attached two xml files produced by our tests using the Gherkin framework.  The one with  extension .works is parse without a problem by the plugin, the one with JEP-200error extension fails.

             

            Show
            jkg20 Jason Gibbons added a comment - After some brief investigation, please find attached two xml files produced by our tests using the Gherkin framework.  The one with  extension .works is parse without a problem by the plugin, the one with JEP-200error extension fails.  
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Nikolas Falco
            Path:
            src/test/java/org/jenkinsci/plugins/xunit/types/AbstractTest.java
            src/test/java/org/jenkinsci/plugins/xunit/types/NUnitTest.java
            src/test/resources/org/jenkinsci/plugins/xunit/types/nunit/testcase11/input.xml
            src/test/resources/org/jenkinsci/plugins/xunit/types/nunit/testcase11/result.xml
            src/test/resources/org/jenkinsci/plugins/xunit/types/nunit/testcase12/input.xml
            src/test/resources/org/jenkinsci/plugins/xunit/types/nunit/testcase12/result.xml
            http://jenkins-ci.org/commit/xunit-plugin/3bacce0a7ce13897e2cb4c99ab8e0c028708ee91
            Log:
            JENKINS-51556 xUnit JEP-200 incompatibility

            A parse error on slave cause JEP-200 when exception is serialised and sent back to master node.

            *NOTE:* This service been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/

            Functionality will be removed from GitHub.com on January 31st, 2019.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Nikolas Falco Path: src/test/java/org/jenkinsci/plugins/xunit/types/AbstractTest.java src/test/java/org/jenkinsci/plugins/xunit/types/NUnitTest.java src/test/resources/org/jenkinsci/plugins/xunit/types/nunit/testcase11/input.xml src/test/resources/org/jenkinsci/plugins/xunit/types/nunit/testcase11/result.xml src/test/resources/org/jenkinsci/plugins/xunit/types/nunit/testcase12/input.xml src/test/resources/org/jenkinsci/plugins/xunit/types/nunit/testcase12/result.xml http://jenkins-ci.org/commit/xunit-plugin/3bacce0a7ce13897e2cb4c99ab8e0c028708ee91 Log: JENKINS-51556 xUnit JEP-200 incompatibility A parse error on slave cause JEP-200 when exception is serialised and sent back to master node. * NOTE: * This service been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/ Functionality will be removed from GitHub.com on January 31st, 2019.
            Hide
            jkg20 Jason Gibbons added a comment -

            Issue is with

            net.sf.saxon.*

            classes

            Can these be added to the white list?

             

            Show
            jkg20 Jason Gibbons added a comment - Issue is with net.sf.saxon.* classes Can these be added to the white list?  
            Hide
            nfalco Nikolas Falco added a comment -

            I have to test locally with a slave node and understand why there is this serialisation issue.

            Show
            nfalco Nikolas Falco added a comment - I have to test locally with a slave node and understand why there is this serialisation issue.
            Hide
            jkg20 Jason Gibbons added a comment -

            Thanks - is there a way to wild card the whitelist check exclusion?

            I've tried adding net.sf.saxon classes block by block, but each time I add a set, another class gets caught as an exception

             

            Show
            jkg20 Jason Gibbons added a comment - Thanks - is there a way to wild card the whitelist check exclusion? I've tried adding net.sf.saxon classes block by block, but each time I add a set, another class gets caught as an exception  
            Hide
            oleg_nenashev Oleg Nenashev added a comment -

            AFAICT it duplicates JENKINS-51465

            Show
            oleg_nenashev Oleg Nenashev added a comment - AFAICT it duplicates JENKINS-51465
            Hide
            jkg20 Jason Gibbons added a comment -

            Yes -seems to be very closely related.

            However, at least one of the slaves on which the problem was manifesting for us had no pipeline jobs running on it at all.

            However, I did notice the following:

            Using test files which previously failed to be parsed (causing above error) - and using the same jenkins job and same jenkins slave:

            Uncheck the "Stop and set the build to 'failed' status if there are errors when processing a result file*"* option (or set to false in the pipeline) then run the job, and it passes okay.

            Recheck the "Stop and set the build to 'failed' status if there are errors when processing a result file*"* option again, and this time the nunit parser works okay.

             

            Not sure if this work around is always going to be replicable or if I made some other manipulation somewhere along the way that explains the fix - I'm going to try with our latest test result files (when the full integration build has finished) to see if I can get a failure.

             

            Show
            jkg20 Jason Gibbons added a comment - Yes -seems to be very closely related. However, at least one of the slaves on which the problem was manifesting for us had no pipeline jobs running on it at all. However, I did notice the following: Using test files which previously failed to be parsed (causing above error) - and using the same jenkins job and same jenkins slave: Uncheck the "Stop and set the build to 'failed' status if there are errors when processing a result file*"* option (or set to false in the pipeline) then run the job, and it passes okay. Recheck the "Stop and set the build to 'failed' status if there are errors when processing a result file*"* option again, and this time the nunit parser works okay.   Not sure if this work around is always going to be replicable or if I made some other manipulation somewhere along the way that explains the fix - I'm going to try with our latest test result files (when the full integration build has finished) to see if I can get a failure.  

              People

              • Assignee:
                nfalco Nikolas Falco
                Reporter:
                jkg20 Jason Gibbons
              • Votes:
                2 Vote for this issue
                Watchers:
                7 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: