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

Cannot upgrading Mockito dependency due to com.cloudbees.jenkins.support.impl.GCLogs$VmArgumentFinder

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • support-core-plugin
    • None
    • support-core:2.72
    • support-core-2.74

      Cannot upgrade Mockito in support-core as build for jdk 11 fails with:

      Error
      Mockito cannot mock this class: class com.cloudbees.jenkins.support.impl.GCLogs$VmArgumentFinder.
      Mockito can only mock non-private & non-final classes.
      If you're not sure why you're getting this error, please report to the mailing list.
      Java               : 11
      JVM vendor name    : AdoptOpenJDK
      JVM vendor version : 11.0.6+10
      JVM name           : OpenJDK 64-Bit Server VM
      JVM version        : 11.0.6+10
      JVM info           : mixed mode
      OS name            : Linux
      OS version         : 5.4.0-1029-aws
      Underlying exception : org.mockito.exceptions.base.MockitoException: 
      Cannot create mock for class com.cloudbees.jenkins.support.impl.GCLogs$VmArgumentFinder
      The type is not public and its mock class is loaded by a different class loader.
      This can have multiple reasons:
       - You are mocking a class with additional interfaces of another class loader
       - Mockito is loaded by a different class loader than the mocked type (e.g. with OSGi)
       - The thread's context class loader is different than the mock's class loader
      Stacktrace
      org.mockito.exceptions.base.MockitoException: 
      Mockito cannot mock this class: class com.cloudbees.jenkins.support.impl.GCLogs$VmArgumentFinder.
      Mockito can only mock non-private & non-final classes.
      If you're not sure why you're getting this error, please report to the mailing list.
      Java               : 11
      JVM vendor name    : AdoptOpenJDK
      JVM vendor version : 11.0.6+10
      JVM name           : OpenJDK 64-Bit Server VM
      JVM version        : 11.0.6+10
      JVM info           : mixed mode
      OS name            : Linux
      OS version         : 5.4.0-1029-aws
      Underlying exception : org.mockito.exceptions.base.MockitoException: 
      Cannot create mock for class com.cloudbees.jenkins.support.impl.GCLogs$VmArgumentFinder
      The type is not public and its mock class is loaded by a different class loader.
      This can have multiple reasons:
       - You are mocking a class with additional interfaces of another class loader
       - Mockito is loaded by a different class loader than the mocked type (e.g. with OSGi)
       - The thread's context class loader is different than the mock's class loader
      	at com.cloudbees.jenkins.support.impl.GCLogsTest.rotatedJava9Files(GCLogsTest.java:68)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
      	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
      	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
      	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
      	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
      	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
      	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
      	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
      	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
      	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
      	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
      	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
      	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
      	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
      	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
      	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
      	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
      	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
      	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:377)
      	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:138)
      	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:465)
      	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:451)
      Caused by: org.mockito.exceptions.base.MockitoException: 
      Cannot create mock for class com.cloudbees.jenkins.support.impl.GCLogs$VmArgumentFinder
      The type is not public and its mock class is loaded by a different class loader.
      This can have multiple reasons:
       - You are mocking a class with additional interfaces of another class loader
       - Mockito is loaded by a different class loader than the mocked type (e.g. with OSGi)
       - The thread's context class loader is different than the mock's class loader
      	at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:153)
      	at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:366)
      	at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:175)
      	at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:377)
      	... 29 more
      

      Reference

      https://github.com/jenkinsci/support-core-plugin/blob/support-core-2.72/src/test/java/com/cloudbees/jenkins/support/impl/GCLogsTest.java

            allan_burdajewicz Allan BURDAJEWICZ
            allan_burdajewicz Allan BURDAJEWICZ
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: