Closed
Description
Description
NPE from Fuzzing providers for static code block with File operations
To Reproduce
- Run the 'utbot' project in IntelliJ Idea 2022.2.4 Ultimate
- Install plugin built from unit-test-bot/rc3102023 branch
- Set Fuzzing 100% in Settings -> Tools -> UnitTestBot
- Generate tests for
read
method in the following code:
public class SecurityCheck {
public int read(A a) {
return 10;
}
}
class A {
static {
new File("a.txt").renameTo(new File("b.txt"));
}
}
Expected behavior
Tests are supposed to be generated.
Actual behavior
No tests are generated.
NPE is present in utbot-engine logs.
Visual proofs (screenshots, logs, images)
NPE in utbot-engine-current.log
15:21:40.952 | INFO | EngineProcessMain | -----------------------------------------------------------------------
15:21:40.954 | INFO | EngineProcessMain | -------------------NEW ENGINE PROCESS STARTED--------------------------
15:21:40.954 | INFO | EngineProcessMain | -----------------------------------------------------------------------
15:21:40.991 | INFO | EngineProcessMain | RdCategory: RdCoroutineScope | RdCoroutineHost overridden
15:21:41.234 | INFO | EngineProcessMain | RdCategory: ClientProtocolBuilder | pid - 29656, port - 56685
15:21:41.234 | INFO | EngineProcessMain | RdCategory: ClientProtocolBuilder | isJvm8 - true, isJvm9Plus - false, isWindows - true
15:21:41.361 | INFO | EngineProcessMain | RdCategory: ClientProtocolBuilder | signalled
15:21:41.436 | INFO | AnalyticsConfigureUtil | PathSelectorType: INHERITORS_SELECTOR
15:21:45.473 | INFO | TestCaseGenerator | Resuming method SecurityCheck.read
15:21:46.355 | INFO | JavaLanguage | Starting fuzzing for method: SecurityCheck.read
15:21:46.356 | INFO | JavaLanguage | use thisInstance = true
15:21:46.356 | INFO | JavaLanguage | parameters = [A]
15:21:46.374 | INFO | JavaLanguage | Fuzzing is stopped because of an error
java.lang.NullPointerException: null
at org.utbot.fuzzing.providers.ObjectsKt.isAccessible(Objects.kt:189) ~[utbot-fuzzers-2023.3.jar:?]
at org.utbot.fuzzing.providers.ObjectsKt.isAccessible(Objects.kt:180) ~[utbot-fuzzers-2023.3.jar:?]
at org.utbot.fuzzing.providers.ObjectValueProvider$findTypesOfNonRecursiveConstructor$1.invoke(Objects.kt:109) ~[utbot-fuzzers-2023.3.jar:?]
at org.utbot.fuzzing.providers.ObjectValueProvider$findTypesOfNonRecursiveConstructor$1.invoke(Objects.kt:109) ~[utbot-fuzzers-2023.3.jar:?]
at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:171) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:194) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:169) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:194) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:787) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:817) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:808) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at org.utbot.fuzzing.providers.ObjectValueProvider.findTypesOfNonRecursiveConstructor(Objects.kt:112) ~[utbot-fuzzers-2023.3.jar:?]
at org.utbot.fuzzing.providers.ObjectValueProvider.access$findTypesOfNonRecursiveConstructor(Objects.kt:17) ~[utbot-fuzzers-2023.3.jar:?]
at org.utbot.fuzzing.providers.ObjectValueProvider$generate$1.invokeSuspend(Objects.kt:34) ~[utbot-fuzzers-2023.3.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.SequenceBuilderIterator.hasNext(SequenceBuilder.kt:129) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at org.utbot.fuzzing.ValueProvider$Combined$generate$1.invokeSuspend(Providers.kt:191) ~[utbot-fuzzing-2023.3.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.SequenceBuilderIterator.hasNext(SequenceBuilder.kt:129) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.FlatteningSequence$iterator$1.ensureItemIterator(Sequences.kt:316) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.FlatteningSequence$iterator$1.hasNext(Sequences.kt:303) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:787) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:817) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:808) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at org.utbot.fuzzing.FuzzingApi$produce$candidates$1.apply(Api.kt:371) ~[utbot-fuzzing-2023.3.jar:?]
at org.utbot.fuzzing.FuzzingApi$produce$candidates$1.apply(Api.kt:371) ~[utbot-fuzzing-2023.3.jar:?]
at java.util.HashMap.computeIfAbsent(HashMap.java:1128) ~[?:1.8.0_345]
at org.utbot.fuzzing.FuzzingApi.produce(Api.kt:371) ~[utbot-fuzzing-2023.3.jar:?]
at org.utbot.fuzzing.FuzzingApi.fuzz(Api.kt:354) ~[utbot-fuzzing-2023.3.jar:?]
at org.utbot.fuzzing.FuzzingApi.fuzz$fuzzOne(Api.kt:277) ~[utbot-fuzzing-2023.3.jar:?]
at org.utbot.fuzzing.FuzzingApi.access$fuzz$fuzzOne(Api.kt:1) ~[utbot-fuzzing-2023.3.jar:?]
at org.utbot.fuzzing.FuzzingApi$fuzz$2$1.invokeSuspend(Api.kt:294) ~[utbot-fuzzing-2023.3.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlin.sequences.SequenceBuilderIterator.hasNext(SequenceBuilder.kt:129) ~[kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at org.utbot.fuzzing.FuzzingApi.fuzz(Api.kt:707) ~[utbot-fuzzing-2023.3.jar:?]
at org.utbot.fuzzing.ProvidersKt.runFuzzing(Providers.kt:18) ~[utbot-fuzzing-2023.3.jar:?]
at org.utbot.fuzzing.JavaLanguageKt.runJavaFuzzing(JavaLanguage.kt:114) [utbot-fuzzers-2023.3.jar:?]
at org.utbot.engine.UtBotSymbolicEngine$fuzzing$2.invokeSuspend(UtBotSymbolicEngine.kt:353) [utbot-framework-2023.3.jar:?]
at org.utbot.engine.UtBotSymbolicEngine$fuzzing$2.invoke(UtBotSymbolicEngine.kt) [utbot-framework-2023.3.jar:?]
at org.utbot.engine.UtBotSymbolicEngine$fuzzing$2.invoke(UtBotSymbolicEngine.kt) [utbot-framework-2023.3.jar:?]
at kotlinx.coroutines.flow.SafeFlow.collectSafely(Builders.kt:61) [utbot-instrumentation-2023.3.jar:?]
at kotlinx.coroutines.flow.AbstractFlow.collect(Flow.kt:230) [utbot-instrumentation-2023.3.jar:?]
at kotlinx.coroutines.flow.FlowKt__ErrorsKt.catchImpl(Errors.kt:156) [utbot-instrumentation-2023.3.jar:?]
at kotlinx.coroutines.flow.FlowKt.catchImpl(Unknown Source) [utbot-instrumentation-2023.3.jar:?]
at kotlinx.coroutines.flow.FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1.collect(SafeCollector.common.kt:113) [utbot-instrumentation-2023.3.jar:?]
at org.utbot.framework.plugin.api.TestCaseGenerator$generate$3$1$1.invokeSuspend(TestCaseGenerator.kt:181) [utbot-framework-2023.3.jar:?]
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) [kotlin-stdlib-1.8.0.jar:1.8.0-release-345(1.8.0)]
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) [utbot-instrumentation-2023.3.jar:?]
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284) [utbot-instrumentation-2023.3.jar:?]
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) [utbot-instrumentation-2023.3.jar:?]
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59) [utbot-instrumentation-2023.3.jar:?]
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) [utbot-instrumentation-2023.3.jar:?]
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38) [utbot-instrumentation-2023.3.jar:?]
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) [utbot-instrumentation-2023.3.jar:?]
at org.utbot.common.ConcurrencyKt.runBlockingWithCancellationPredicate(Concurrency.kt:38) [utbot-core-2023.3.jar:?]
at org.utbot.framework.plugin.api.TestCaseGenerator$generate$3.invoke(TestCaseGenerator.kt:156) [utbot-framework-2023.3.jar:?]
at org.utbot.framework.plugin.api.TestCaseGenerator$generate$3.invoke(TestCaseGenerator.kt:155) [utbot-framework-2023.3.jar:?]
at org.utbot.common.ConcurrencyKt.runIgnoringCancellationException(Concurrency.kt:47) [utbot-core-2023.3.jar:?]
at org.utbot.framework.plugin.api.TestCaseGenerator.generate(TestCaseGenerator.kt:155) [utbot-framework-2023.3.jar:?]
at org.utbot.framework.process.EngineProcessMainKt$setup$3.invoke(EngineProcessMain.kt:111) [utbot-framework-2023.3.jar:?]
at org.utbot.framework.process.EngineProcessMainKt$setup$3.invoke(EngineProcessMain.kt:97) [utbot-framework-2023.3.jar:?]
at org.utbot.rd.IdleWatchdog$measureTimeForActiveCall$1$2$1.invoke(ClientProcessUtil.kt:113) [utbot-rd-2023.3.jar:?]
at org.utbot.rd.IdleWatchdog.wrapActive(ClientProcessUtil.kt:86) [utbot-rd-2023.3.jar:?]
at org.utbot.rd.IdleWatchdog$measureTimeForActiveCall$1.invoke(ClientProcessUtil.kt:112) [utbot-rd-2023.3.jar:?]
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:182) [rd-framework-2022.2.1.jar:?]
at com.jetbrains.rd.framework.IRdEndpoint$set$1.invoke(TaskInterfaces.kt:173) [rd-framework-2022.2.1.jar:?]
at com.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:360) [rd-framework-2022.2.1.jar:?]
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:57) [rd-framework-2022.2.1.jar:?]
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:12) [rd-framework-2022.2.1.jar:?]
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:151) [rd-framework-2022.2.1.jar:?]
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:56) [rd-framework-2022.2.1.jar:?]
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:12) [rd-framework-2022.2.1.jar:?]
at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase$queue$1.run(SingleThreadScheduler.kt:41) [rd-core-2022.2.1.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_345]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_345]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_345]
15:21:46.386 | INFO | Summarization | Started: ----------------------------------------------------------------------------------------
-------------------Summarization started for 1 test cases--------------------
----------------------------------------------------------------------------------------
15:21:46.386 | INFO | Summarization | Started: Summarization for SecurityCheck.read
15:21:46.389 | INFO | Summarization | Diversity execution path percentage: 100
15:21:46.395 | INFO | Summarization | No execution traces found in test case for method SecurityCheck, public int read(A)
{
A r1;
SecurityCheck r0;
r0 := @this: SecurityCheck;
r1 := @parameter0: A;
return 10;
}
15:21:46.396 | INFO | Summarization | Finished (in 0.009 sec): Summarization for SecurityCheck.read <Nothing>
15:21:46.397 | INFO | Summarization | Finished (in 0.011 sec): ----------------------------------------------------------------------------------------
-------------------Summarization started for 1 test cases--------------------
Environment
Windows 10 Pro
IntelliJ IDEA 2022.2.4 Ultimate
IntelliJ project
JDK 1.8
Additional context
Used code from:
Same results with/without:
- mocks
- parameterization
- sandbox.policy file with permission to read files
Metadata
Metadata
Assignees
Type
Projects
Status
Done