[
https://issues.apache.org/jira/browse/SOLR-17718?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17938066#comment-17938066
]
Chris M. Hostetter commented on SOLR-17718:
-------------------------------------------
Full example of a failure...
{noformat}
KafkaCrossDcConsumerTest > testHandleFailedResubmit FAILED
org.mockito.exceptions.base.MockitoException:
Mockito cannot mock this class: class
org.apache.kafka.clients.consumer.KafkaConsumer.
If you're not sure why you're getting this error, please open an issue on
GitHub.
Java : 25
JVM vendor name : Oracle Corporation
JVM vendor version : 25-ea+15-1670
JVM name : OpenJDK 64-Bit Server VM
JVM version : 25-ea+15-1670
JVM info : mixed mode, sharing
OS name : Linux
OS version : 6.11.0-19-generic
You are seeing this disclaimer because Mockito is configured to create
inlined mocks.
You can learn about inline mocks and their limitations under item #39 of
the Mockito class javadoc.
Underlying exception : org.mockito.exceptions.base.MockitoException: Could
not modify all classes [interface java.io.Closeable, class
org.apache.kafka.clients.consumer.KafkaConsumer, interface
org.apache.kafka.clients.consumer.Consumer, class java.lang.Object, interface
java.lang.AutoCloseable]
at
app//org.apache.solr.crossdc.manager.consumer.KafkaCrossDcConsumerTest.setUp(KafkaCrossDcConsumerTest.java:88)
at
java.base@25-ea/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base@25-ea/java.lang.reflect.Method.invoke(Method.java:565)
at
app//org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at
app//org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
app//org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at
app//org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)
at
app//org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at
app//org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at app//org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at
app//org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at app//org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at
app//org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at
app//org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at app//org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at app//org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at
app//org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at app//org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at app//org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at
app//org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at app//org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at app//org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at
org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:112)
at
org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
at
org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40)
at
org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:54)
at
org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:53)
at
java.base@25-ea/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base@25-ea/java.lang.reflect.Method.invoke(Method.java:565)
at
org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at
org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at
org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at
org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:92)
at jdk.proxy1/jdk.proxy1.$Proxy4.processTestClass(Unknown Source)
at
org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:183)
at
org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:132)
at
org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
at
org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
at
org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at
org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:121)
at
org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
at
app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at
app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by:
org.mockito.exceptions.base.MockitoException: Could not modify all
classes [interface java.io.Closeable, class
org.apache.kafka.clients.consumer.KafkaConsumer, interface
org.apache.kafka.clients.consumer.Consumer, class java.lang.Object, interface
java.lang.AutoCloseable]
at app//net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:168)
at
app//net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:399)
at app//net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:190)
at
app//net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:410)
... 43 more
Caused by:
java.lang.IllegalStateException:
Byte Buddy could not instrument all classes within the mock's type
hierarchy
This problem should never occur for javac-compiled classes. This
problem has been observed for classes that are:
- Compiled by older versions of scalac
- Classes that are part of the Android distribution
at
org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:291)
at
org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.mockClass(InlineBytecodeGenerator.java:220)
at
org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.lambda$mockClass$0(TypeCachingBytecodeGenerator.java:78)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:168)
at
net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:399)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:190)
at
net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:410)
at
org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.mockClass(TypeCachingBytecodeGenerator.java:75)
at
org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createMockType(InlineDelegateByteBuddyMockMaker.java:429)
at
org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.doCreateMock(InlineDelegateByteBuddyMockMaker.java:388)
at
org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createMock(InlineDelegateByteBuddyMockMaker.java:367)
at
org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.createMock(InlineByteBuddyMockMaker.java:56)
at
org.mockito.internal.util.MockUtil.createMock(MockUtil.java:99)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:84)
at org.mockito.Mockito.mock(Mockito.java:2198)
at org.mockito.Mockito.mock(Mockito.java:2113)
... 43 more
Caused by:
java.lang.IllegalArgumentException: Java 25 (69) is not
supported by the current version of Byte Buddy which officially supports Java
24 (68) - update Byte Buddy or set net.bytebuddy.experimental as a VM property
at
net.bytebuddy.utility.OpenedClassReader.of(OpenedClassReader.java:120)
at
net.bytebuddy.utility.OpenedClassReader.of(OpenedClassReader.java:95)
at
net.bytebuddy.utility.AsmClassReader$Factory$Default.make(AsmClassReader.java:82)
at
net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining.create(TypeWriter.java:4031)
at
net.bytebuddy.dynamic.scaffold.TypeWriter$Default.make(TypeWriter.java:2246)
at
net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$UsingTypeWriter.make(DynamicType.java:4085)
at
net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase.make(DynamicType.java:3769)
at
org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.transform(InlineBytecodeGenerator.java:408)
at
java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:257)
at
java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at
java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:594)
at
java.instrument/sun.instrument.InstrumentationImpl.retransformClasses0(Native
Method)
at
java.instrument/sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:221)
at
org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:287)
... 58 more
{noformat}
> JDK 25 test failures w/mockito -- even when using assumeWorkingMockito()
> ------------------------------------------------------------------------
>
> Key: SOLR-17718
> URL: https://issues.apache.org/jira/browse/SOLR-17718
> Project: Solr
> Issue Type: New Feature
> Reporter: Chris M. Hostetter
> Priority: Major
>
> Test that use Mockito (currently) fail in jenkins jobs using JDK 25 due to
> the following underlying error...
> {noformat}
> Caused by:
> java.lang.IllegalArgumentException: Java 25 (69) is not supported by the
> current version of Byte Buddy which officially supports Java 24 (68) - update
> Byte Buddy or set net.bytebuddy.experimental as a VM property
> at net.bytebuddy.utility.OpenedClassReader.of(OpenedClassReader.java:120)
> {noformat}
> Note that this happens during the call to {{Mockito.mock(Foo.class)}} -- even
> in tests that preceed all use of Mockito w/ our custom
> {{SolrTestCaseJ4.assumeWorkingMockito()}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]