Skip to content

Usage of 'java.net.http.HttpClient.Version' causes 'Unable to make field private static final' exception #909

Open
@tyuldashev

Description

@tyuldashev

Description
When code contains java.net.http.HttpClient.Version or java.net.http.HttpClient.Redirect UTbot fails with exception.

To Reproduce

  1. Generate test for following code:
import java.net.http.HttpClient;

import static java.net.http.HttpClient.newBuilder;

public class HttpVersionBug {
    void requestJavaSite() {
        HttpClient client = newBuilder()
                .version(HttpClient.Version.HTTP_2)
                .build();
    }
}

Expected behavior
Tests are generated without errors.

Actual behavior

One of generated tests contains following code:

 public void testRequestJavaSite_errors() {
        // Couldn't generate some tests. List of errors:
        // 
        // 1 occurrences of:
        /* Unable to make field private static final java.net.http.HttpClient$Version[] java.net.http.HttpClient$Version.$VALUES accessible:
        module java.net.http does not "opens java.net.http" to unnamed module @708a09f2 */

    }

idea.log has following stacktrace

Test generation failed on stmt $r1 = , symbolic stack trace:

<org.test.org.test.HttpVersionBug: void requestJavaSite()>
java.lang.reflect.InaccessibleObjectException: Unable to make field private static final java.net.http.HttpClient$Version[] java.net.http.HttpClient$Version.$VALUES accessible: module java.net.http does not "opens java.net.http" to unnamed module @708a09f2
at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340) ~[?:?]
at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280) ~[?:?]
at java.lang.reflect.Field.checkCanSetAccessible(Field.java:176) ~[?:?]
at java.lang.reflect.Field.setAccessible(Field.java:170) ~[?:?]
at org.utbot.engine.util.statics.concrete.EnumConcreteUtilsKt.associateEnumSootFieldsWithConcreteValues(EnumConcreteUtils.kt:265) ~[?:?]
at org.utbot.engine.Traverser.makeConcreteUpdatesForEnum(Traverser.kt:541) ~[?:?]
at org.utbot.engine.Traverser.makeConcreteUpdatesForEnumsWithStmt(Traverser.kt:583) ~[?:?]
at org.utbot.engine.Traverser.processStaticFieldConcretely(Traverser.kt:502) ~[?:?]
at org.utbot.engine.Traverser.processStaticInitializer(Traverser.kt:404) ~[?:?]
at org.utbot.engine.Traverser.processStaticInitializerIfRequired(Traverser.kt:358) ~[?:?]
at org.utbot.engine.Traverser.doPreparatoryWorkIfRequired(Traverser.kt:331) ~[?:?]
at org.utbot.engine.Traverser.traverseStmt(Traverser.kt:295) ~[?:?]
at org.utbot.engine.Traverser.traverse(Traverser.kt:281) ~[?:?]
at org.utbot.engine.UtBotSymbolicEngine$traverseImpl$1.invokeSuspend(UtBotSymbolicEngine.kt:352) ~[?:?]
at org.utbot.engine.UtBotSymbolicEngine$traverseImpl$1.invoke(UtBotSymbolicEngine.kt) ~[?:?]
at org.utbot.engine.UtBotSymbolicEngine$traverseImpl$1.invoke(UtBotSymbolicEngine.kt) ~[?:?]
at kotlinx.coroutines.flow.SafeFlow.collectSafely(Builders.kt:61) ~[?:?]
at kotlinx.coroutines.flow.AbstractFlow.collect(Flow.kt:230) ~[?:?]
at kotlinx.coroutines.flow.FlowKt__EmittersKt$onStart$$inlined$unsafeFlow$1.collect(SafeCollector.common.kt:120) ~[?:?]
at kotlinx.coroutines.flow.FlowKt__EmittersKt$onCompletion$$inlined$unsafeFlow$1.collect(SafeCollector.common.kt:114) ~[?:?]
at kotlinx.coroutines.flow.FlowKt__CollectKt.emitAll(Collect.kt:109) ~[?:?]
at kotlinx.coroutines.flow.FlowKt.emitAll(Unknown Source) ~[?:?]
at kotlinx.coroutines.flow.FlowKt__MergeKt$flattenConcat$1$1.emit(Merge.kt:80) ~[?:?]
at kotlinx.coroutines.flow.FlowKt__MergeKt$flattenConcat$1$1.emit(Merge.kt:80) ~[?:?]
at kotlinx.coroutines.flow.FlowKt__BuildersKt$flowOf$$inlined$unsafeFlow$1.collect(SafeCollector.common.kt:114) ~[?:?]
at kotlinx.coroutines.flow.FlowKt__BuildersKt$flowOf$$inlined$unsafeFlow$1$1.invokeSuspend(SafeCollector.common.kt) ~[?:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[?:?]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) ~[?:?]
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284) ~[?:?]
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) ~[?:?]
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59) ~[?:?]
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) ~[?:?]
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38) ~[?:?]
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) ~[?:?]
at org.utbot.common.ConcurrencyKt.runBlockingWithCancellationPredicate(Concurrency.kt:38) ~[?:?]
at org.utbot.framework.plugin.api.TestCaseGenerator$generate$3.invoke(TestCaseGenerator.kt:149) ~[?:?]
at org.utbot.framework.plugin.api.TestCaseGenerator$generate$3.invoke(TestCaseGenerator.kt:148) ~[?:?]
at org.utbot.common.ConcurrencyKt.runIgnoringCancellationException(Concurrency.kt:47) ~[?:?]
at org.utbot.framework.plugin.api.TestCaseGenerator.generate(TestCaseGenerator.kt:148) ~[?:?]
at org.utbot.intellij.plugin.generator.UtTestsDialogProcessor$createTests$2$1.run(UtTestsDialogProcessor.kt:222) ~[?:?]
at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:442) ~[?:?]
at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:114) ~[?:?]
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressAsynchronously$5(CoreProgressManager.java:493) ~[?:?]
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:244) ~[?:?]
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:189) ~[?:?]
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608) ~[?:?]
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683) ~[?:?]
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639) ~[?:?]
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607) ~[?:?]
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60) ~[?:?]
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:176) ~[?:?]
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:244) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668) [?:?]
at java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665) [?:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
at java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665) [?:?]
at java.lang.Thread.run(Thread.java:829) [?:?]

Metadata

Metadata

Assignees

Labels

ctg-bugIssue is a bug

Type

No type

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions