Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Concrete execution fails for a static method using a static field #711

Closed
Tracked by #1187
alisevych opened this issue Aug 11, 2022 · 3 comments · Fixed by #1143
Closed
Tracked by #1187

Concrete execution fails for a static method using a static field #711

alisevych opened this issue Aug 11, 2022 · 3 comments · Fixed by #1143
Assignees
Labels
comp-fuzzing Issue is related to the fuzzing ctg-bug Issue is a bug

Comments

@alisevych
Copy link
Member

alisevych commented Aug 11, 2022

Description

Static method without input parameters is using a static field inside.
Concrete execution fails with "java.lang.IllegalArgumentException: wrong number of arguments"

To Reproduce

Steps to reproduce the behavior:

  1. IntelliJ IDEA with UTBot installed is running.
  2. Turn fuzzing on // File -> Settings -> Tools -> UTbot -> select some middle Code Analysis slider position
  3. Run test generation for the following class:
public class CheckStatic {

    public final static Integer keyValue = 420;

    public static int check() {
        if (keyValue == 0) {
            return keyValue;
        } else {
            return -keyValue;
        }
    }

}

Expected behavior

Tests are supposed to be generated without errors.

Actual behavior

An error test is generated with information about an error in the concrete executor.

Visual proofs (screenshots, logs, images)

Error report:

    public void testCheck_errors() {
        // Couldn't generate some tests. List of errors:
        // 
        // 4 occurrences of:
        // Default concrete execution failed

    }

Child process error:

Transforming: org/example/CheckStatic
java.lang.IllegalArgumentException: wrong number of arguments
signature=check()I
this=null: org.example.CheckStatic
arguments={
org.example.CheckStatic@1ad9c76c: org.example.CheckStatic
}

	at org.utbot.instrumentation.instrumentation.InvokeInstrumentation.invoke-d1pmJ48(InvokeInstrumentation.kt:77)
	at org.utbot.instrumentation.instrumentation.InvokeInstrumentation.invoke(InvokeInstrumentation.kt:17)
	at org.utbot.instrumentation.instrumentation.Instrumentation$DefaultImpls.invoke$default(Instrumentation.kt:25)
	at org.utbot.framework.concrete.UtExecutionInstrumentation$invoke$$inlined$withReflection$lambda$1$1.invoke(UtExecutionInstrumentation.kt:163)
	at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$2.invoke(ThreadUtil.kt:56)
	at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$1.invoke(ThreadUtil.kt:47)
	at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$1.invoke(ThreadUtil.kt:22)
	at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)

Environment

Windows 10 Pro
Gradle 6.8
JDK 8

Additional context

The example was taken from utbot-sample/src/main/java/org/utbot/examples/mock/CommonMocksExample.java - just added "static" to the clinitMockExample() definition.

@alisevych alisevych added ctg-bug Issue is a bug comp-fuzzing Issue is related to the fuzzing labels Aug 11, 2022
@korifey korifey moved this to Todo in UTBot Java Aug 11, 2022
@alisevych alisevych assigned SBOne-Kenobi and unassigned Markoutte Sep 7, 2022
@tyuldashev
Copy link
Collaborator

Currently in main (build 411)
Empty test is generated and concrete executor log contains exception:

public class CheckStaticTest {
}
Failed to instantiate SLF4J LoggerFactory
Reported exception:
java.lang.NoClassDefFoundError: org/utbot/framework/concrete/InstrumentationContext$MockGetter
	at org.slf4j.LoggerFactory.findPossibleStaticLoggerBinderPathSet(LoggerFactory.java:296)
	at org.slf4j.LoggerFactory.bind(LoggerFactory.java:146)
	at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
	at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
	at mu.KotlinLogging.logger(KotlinLogging.kt:43)
	at org.utbot.framework.concrete.UtExecutionInstrumentation$invoke$1$1$concreteExecutionResult$1$concreteResult$1.invoke(UtExecutionInstrumentation.kt:342)
	at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$2.invoke(ThreadUtil.kt:56)
	at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$1.invoke(ThreadUtil.kt:47)
	at org.utbot.common.ThreadBasedExecutor$invokeWithTimeout$1.invoke(ThreadUtil.kt:43)
	at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)
Caused by: java.lang.ClassNotFoundException: org.utbot.framework.concrete.InstrumentationContext$MockGetter
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 11 more

@alisevych alisevych added this to the 2022.10.1 Release milestone Oct 11, 2022
@alisevych
Copy link
Member Author

Reproducing with RC-build: build 417

@SBOne-Kenobi
Copy link
Collaborator

When our fuzzer meets methods without any parameters, it tries to generate this instance and call static method from this instance as a usual method. @Markoutte, can you fix it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comp-fuzzing Issue is related to the fuzzing ctg-bug Issue is a bug
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

4 participants