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

java.lang.IllegalArgumentException: URI is not absolute #1169

Open
naveensabavath opened this issue Feb 7, 2025 · 6 comments
Open

java.lang.IllegalArgumentException: URI is not absolute #1169

naveensabavath opened this issue Feb 7, 2025 · 6 comments
Labels

Comments

@naveensabavath
Copy link

Command am using : fletcher@fletcher:~/Desktop/godster/demoevo$ java -jar target/evomaster.jar --maxTime 20s --outputFolder "src/test/java"

  • EvoMaster version: 3.4.0

  • Loading configuration file from: /home/fletcher/Desktop/godster/demoevo/em.yaml

  • Initializing...

  • There are 5 usable RESTful API endpoints defined in the schema configuration

  • Starting to generate test cases

  • Consumed search budget: 9.855%

  • Covered targets: 114; time per test: 76.2ms (2.2 actions); since last improvement: 0s

  • [ERROR] EvoMaster process terminated abruptly. This is likely a bug in EvoMaster. Please copy&paste the following stacktrace, and create a new issue on https://github.com/EMResearch/EvoMaster/issues

*### java.lang.RuntimeException: Internal bug with EvoMaster when making a HTTP call toward /users/_PM_U8_XU%5C%5E
at org.evomaster.core.problem.rest.service.AbstractRestFitness.handleRestCall(AbstractRestFitness.kt:617)
*
at

org.evomaster.core.problem.rest.service.ResourceRestFitness.computeFitnessForEachEnterpriseActionGroup(ResourceRestFitness.kt:174)
at org.evomaster.core.problem.rest.service.ResourceRestFitness.computeFitnessForEachResource(ResourceRestFitness.kt:230)
at org.evomaster.core.problem.rest.service.ResourceRestFitness.doCalculateCoverage(ResourceRestFitness.kt:84)
at org.evomaster.core.problem.rest.service.ResourceRestFitness.doCalculateCoverage(ResourceRestFitness.kt:28)
at org.evomaster.core.search.service.FitnessFunction.calculateIndividualCoverageWithStats(FitnessFunction.kt:149)
at org.evomaster.core.search.service.FitnessFunction.calculateCoverage(FitnessFunction.kt:66)
at org.evomaster.core.search.service.mutator.Mutator.mutateAndSave(Mutator.kt:174)
at org.evomaster.core.search.algorithms.MioAlgorithm.searchOnce(MioAlgorithm.kt:48)
at org.evomaster.core.search.service.SearchAlgorithm.search(SearchAlgorithm.kt:77)
at org.evomaster.core.Main$Companion.run(Main.kt:609)
at org.evomaster.core.Main$Companion.initAndRun(Main.kt:204)
at org.evomaster.core.Main$Companion.main(Main.kt:114)
at org.evomaster.core.Main.main(Main.kt)
Caused by: javax.ws.rs.ProcessingException: URI is not absolute
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:309)
at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$0(JerseyInvocation.java:630)
at org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:665)
at org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:659)
at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
at org.glassfish.jersey.internal.Errors.process(Errors.java:205)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:390)
at org.glassfish.jersey.client.JerseyInvocation.runInScope(JerseyInvocation.java:659)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:629)
at org.evomaster.core.problem.rest.service.AbstractRestFitness.handleRestCall(AbstractRestFitness.kt:538)
... 13 common frames omitted
Caused by: java.lang.IllegalArgumentException: URI is not absolute
at java.base/java.net.URL.of(URL.java:862)
at java.base/java.net.URI.toURL(URI.java:1172)
at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:318)
at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:265)
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:297)
... 23 common frames omitted

below is my SUTCONTROLLER class ::::::

package demo.demoevo;

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import org.evomaster.client.java.controller.EmbeddedSutController;
import org.evomaster.client.java.controller.InstrumentedSutStarter;
import org.evomaster.client.java.controller.api.dto.SutInfoDto;
import org.evomaster.client.java.controller.api.dto.auth.AuthenticationDto;
import org.evomaster.client.java.controller.problem.ProblemInfo;
import org.evomaster.client.java.controller.problem.RestProblem;
import org.evomaster.client.java.sql.DbSpecification;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.testcontainers.containers.GenericContainer;

import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Collections;
import java.util.List;
import java.util.Map;

public class EmbeddedEvoMasterController extends EmbeddedSutController {

private ConfigurableApplicationContext ctx;
private static final int MONGODB_PORT = 27017;
private static final String MONGODB_VERSION = "7.0.16";
private static final String MONGODB_DATABASE_NAME = "demodb";
private static final GenericContainer mongodbContainer = new GenericContainer("mongo:" + MONGODB_VERSION)
        .withTmpFs(Collections.singletonMap("/data/db", "rw"))
        .withExposedPorts(MONGODB_PORT);
private MongoClient mongoClient;

public EmbeddedEvoMasterController() {
    this(0);
}

public EmbeddedEvoMasterController(int port) {
    setControllerPort(port);
}

@Override
public String startSut() {
    mongodbContainer.start();
    mongoClient = MongoClients.create("mongodb://" + mongodbContainer.getContainerIpAddress() + ":" + mongodbContainer.getMappedPort(MONGODB_PORT));
    ctx = SpringApplication.run(DemoevoApplication.class,
            new String[]{"--server.port=0",
                    "--li" +
                            "quibase.enabled=false",
                    "--spring.data.mongodb.uri=mongodb://" + mongodbContainer.getContainerIpAddress() + ":" + mongodbContainer.getMappedPort(MONGODB_PORT) + "/" + MONGODB_DATABASE_NAME,
                    "--spring.datasource.username=sa",
                    "--spring.datasource.password",
                    "--dg-toolkit.derby.port=0",
                    "--spring.cache.type=NONE"
            });
    return "http://localhost:" + getSutPort();
}

protected int getSutPort() {
    return (Integer) ((Map) ctx.getEnvironment()
            .getPropertySources().get("server.ports").getSource())
            .get("local.server.port");
}

@Override
public boolean isSutRunning() {
    return ctx != null && ctx.isRunning();
}

@Override
public void stopSut() {
    ctx.stop();
    ctx.close();
    mongodbContainer.stop();
}

@Override
public String getPackagePrefixesToCover() {
    return "demo.demoevo";
}

@Override
public void resetStateOfSUT() {
    mongoClient.getDatabase(MONGODB_DATABASE_NAME).drop();
}

@Override
public boolean handleLocalAuthenticationSetup(String authenticationInfo) {
    return super.handleLocalAuthenticationSetup(authenticationInfo);
}

@Override
public List<DbSpecification> getDbSpecifications() {
    return null;
}

@Override
public void resetDatabase(List<String> tablesToClean) {
    super.resetDatabase(tablesToClean);
}

@Override
public List<AuthenticationDto> getInfoForAuthentication() {
    return null;
}

// @OverRide
// public ProblemInfo getProblemInfo() {
// System.out.println("SUTPORT:::: " + getSutPort());
// return new RestProblem(
// "http://localhost:" + getSutPort() + "/v3/api-docs", // URL to your OpenAPI documentation
// null
// );
// }

@Override
public ProblemInfo getProblemInfo() {
    String apiDocsUrl = "http://localhost:" + getSutPort() + "/v3/api-docs";
    System.out.println("Constructed OpenAPI URL: " + apiDocsUrl);
    // Additional debugging: Check if the URL is reachable
    try {
        HttpURLConnection connection = (HttpURLConnection) new URL(apiDocsUrl).openConnection();
        connection.setRequestMethod("HEAD");
        int responseCode = connection.getResponseCode();
        System.out.println("Response Code: " + responseCode);
    } catch (Exception e) {
        System.out.println("Error while checking URL: " + e.getMessage());
    }
    return new RestProblem(apiDocsUrl, null);
}



@Override
public SutInfoDto.OutputFormat getPreferredOutputFormat() {
    return SutInfoDto.OutputFormat.JAVA_JUNIT_5;
}

@Override
public Object getMongoConnection() {
    return mongoClient;
}

public static void main(String[] args) {
    int port = 40100;
    if (args.length > 0) {
        port = Integer.parseInt(args[0]);
    }
    EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port);
    InstrumentedSutStarter starter = new InstrumentedSutStarter(controller);
    starter.start();
}

}

@arcuri82
Copy link
Collaborator

arcuri82 commented Feb 7, 2025

hi @naveensabavath,

thanks for reporting this issue.
I think I understand what is going on.
A call is using the results of a location header from a previous call, leading to a malformed URL. This happens either due to a bug in EM, or the location header was invalid. I cannot say now for sure from these logs.
Regardless, even if it was an issue with the API giving a malformed location header, EM should not crash, and rather report that as a bug.

Unfortunately, it does not seem there is any option now in EM to block it from following location links :(
ie, until this bug is fixed, I don't think there is any temporary workaround :(

@arcuri82 arcuri82 added the bug label Feb 7, 2025
@naveensabavath
Copy link
Author

hi @arcuri82

I initially reported an issue where EvoMaster was generating MongoDB documents with special characters ([^] ~) in the _id field. When calling the GET /users/{id} API, the URL contained characters like %50 for special characters , causing URI encoding issues and breaking the request.

Root Cause:

EvoMaster was inserting random characters in _id values.
When retrieving data using GET /users/{id}, the API received an improperly encoded URI, leading to errors.

I modified my code to restrict the id field to only allow:
Alphabets (A-Z, a-z)
Numbers (0-9)
Hyphen (-) and Underscore (
)

Now, EvoMaster generates IDs without special characters, and the GET API works correctly.

and Thank you for Responding

@arcuri82
Copy link
Collaborator

arcuri82 commented Feb 7, 2025

@naveensabavath thanks for the reply. so, it would seems an invalid handling of special characters. good to hear you found a workaround until this problem is fixed

@naveensabavath
Copy link
Author

naveensabavath commented Feb 9, 2025

Issue: IllegalStateException: only support Map with String key in EvoMaster

hi @arcuri82 ,

I am encountering the following error while integrating EvoMaster with my Spring Boot application:

Caused by: java.lang.IllegalStateException: only support Map with String key
The exception is coming from EvoMaster, and I couldn't find any relevant solutions online.

When I asked ChatGPT, it suggested that the issue might be due to using Enums as keys in a Map, and recommended changing them to Strings. I tried implementing custom serialization and deserialization using JsonSerializer and JsonDeserializer to convert Enums to Strings, but the issue still persists.

Could you please provide guidance on how to properly handle this in EvoMaster?

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'base64ControllerImpl' defined in file [/home/gaian/Desktop/Naveen/Mobius/mobius-content-service/target/classes/com/aidtaas/mobius/content/services/controller/impl/Base64ControllerImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'base64ContentService' defined in URL [jar:file:/home/gaian/.m2/repository/com/aidtaas/mobius/mobius-content-service-layer/2.4.0/mobius-content-service-layer-2.4.0.jar!/com/aidtaas/mobius/content/service/layer/service/impl/Base64ContentService.class]: Unsatisfied dependency expressed through constructor parameter 2: Error creating bean with name 'contentCacheOperation' defined in URL [jar:file:/home/gaian/.m2/repository/com/aidtaas/mobius/mobius-content-service-layer/2.4.0/mobius-content-service-layer-2.4.0.jar!/com/aidtaas/mobius/content/service/layer/utils/ContentCacheOperation.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'contentRepository' defined in com.aidtaas.mobius.content.service.layer.repo.ContentRepository defined in @EnableMongoRepositories declared on ContentServiceApplication: only support Map with String key
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:801)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1352)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1189)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:950)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:738)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:440)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
	at Evomaster.EmbeddedEvoMasterController.startSut(EmbeddedEvoMasterController.java:45)
	at org.evomaster.client.java.controller.internal.EMController.lambda$runSut$20(EMController.java:366)
	at org.evomaster.client.java.controller.internal.EMController.noKillSwitch(EMController.java:118)
	at org.evomaster.client.java.controller.internal.EMController.runSut(EMController.java:366)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at shaded.org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
	at shaded.org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)
	at shaded.org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)
	at shaded.org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
	at shaded.org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
	at shaded.org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:475)
	at shaded.org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:397)
	at shaded.org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
	at shaded.org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255)
	at shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
	at shaded.org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
	at shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:292)
	at shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:274)
	at shaded.org.glassfish.jersey.internal.Errors.process(Errors.java:244)
	at shaded.org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
	at shaded.org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234)
	at shaded.org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
	at shaded.org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
	at shaded.org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
	at shaded.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
	at shaded.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
	at shaded.org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
	at shaded.org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763)
	at shaded.org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:551)
	at shaded.org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
	at shaded.org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1369)
	at shaded.org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
	at shaded.org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:489)
	at shaded.org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
	at shaded.org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1284)
	at shaded.org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at shaded.org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
	at shaded.org.eclipse.jetty.server.Server.handle(Server.java:501)
	at shaded.org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383)
	at shaded.org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556)
	at shaded.org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375)
	at shaded.org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273)
	at shaded.org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
	at shaded.org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
	at shaded.org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
	at shaded.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336)
	at shaded.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313)
	at shaded.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171)
	at shaded.org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135)
	at shaded.org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806)
	at shaded.org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'base64ContentService' defined in URL [jar:file:/home/gaian/.m2/repository/com/aidtaas/mobius/mobius-content-service-layer/2.4.0/mobius-content-service-layer-2.4.0.jar!/com/aidtaas/mobius/content/service/layer/service/impl/Base64ContentService.class]: Unsatisfied dependency expressed through constructor parameter 2: Error creating bean with name 'contentCacheOperation' defined in URL [jar:file:/home/gaian/.m2/repository/com/aidtaas/mobius/mobius-content-service-layer/2.4.0/mobius-content-service-layer-2.4.0.jar!/com/aidtaas/mobius/content/service/layer/utils/ContentCacheOperation.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'contentRepository' defined in com.aidtaas.mobius.content.service.layer.repo.ContentRepository defined in @EnableMongoRepositories declared on ContentServiceApplication: only support Map with String key
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:801)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1352)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1189)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:910)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788)
	... 71 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'contentCacheOperation' defined in URL [jar:file:/home/gaian/.m2/repository/com/aidtaas/mobius/mobius-content-service-layer/2.4.0/mobius-content-service-layer-2.4.0.jar!/com/aidtaas/mobius/content/service/layer/utils/ContentCacheOperation.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'contentRepository' defined in com.aidtaas.mobius.content.service.layer.repo.ContentRepository defined in @EnableMongoRepositories declared on ContentServiceApplication: only support Map with String key
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:801)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1352)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1189)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:910)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788)
	... 85 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contentRepository' defined in com.aidtaas.mobius.content.service.layer.repo.ContentRepository defined in @EnableMongoRepositories declared on ContentServiceApplication: only support Map with String key
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:910)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788)
	... 99 more
Caused by: java.lang.IllegalStateException: only support Map with String key
	at org.evomaster.client.java.instrumentation.object.ClassToSchema.getSchema(ClassToSchema.java:336)
	at org.evomaster.client.java.instrumentation.object.ClassToSchema.getSchema(ClassToSchema.java:365)
	at org.evomaster.client.java.instrumentation.object.ClassToSchema.findAllNestedClassAndRegisterThemIfNeeded(ClassToSchema.java:239)
	at org.evomaster.client.java.instrumentation.object.ClassToSchema.getOrDeriveSchemaAndNestedClasses(ClassToSchema.java:225)
	at org.evomaster.client.java.instrumentation.object.ClassToSchema.getOrDeriveSchemaWithItsRef(ClassToSchema.java:153)
	at org.evomaster.client.java.instrumentation.coverage.methodreplacement.thirdpartyclasses.MappingMongoEntityInformationClassReplacement.handleMappingMongoEntityInformationConstructor(MappingMongoEntityInformationClassReplacement.java:95)
	at org.evomaster.client.java.instrumentation.coverage.methodreplacement.thirdpartyclasses.MappingMongoEntityInformationClassReplacement.MappingMongoEntityInformation(MappingMongoEntityInformationClassReplacement.java:83)
	at org.springframework.data.mongodb.repository.support.MongoEntityInformationSupport.entityInformationFor(MongoEntityInformationSupport.java:48)
	at org.springframework.data.mongodb.repository.support.MongoRepositoryFactory.getEntityInformation(MongoRepositoryFactory.java:147)
	at org.springframework.data.mongodb.repository.support.MongoRepositoryFactory.getTargetRepository(MongoRepositoryFactory.java:128)
	at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:317)
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:279)
	at org.springframework.data.util.Lazy.getNullable(Lazy.java:245)
	at org.springframework.data.util.Lazy.get(Lazy.java:114)
	at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:285)
	at org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean.afterPropertiesSet(MongoRepositoryFactoryBean.java:101)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1817)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766)
	... 110 more

@arcuri82
Copy link
Collaborator

arcuri82 commented Feb 9, 2025

Hi,

this is a bug in EvoMaster, unfortunately. Can you create a new issue for it? (as this already deals with special characters in requests).

until bug is fixed, a workaround is to disable Mongo support, eg, --instrumentMR_MONGO=false

@arcuri82 arcuri82 changed the title Caused by: java.lang.IllegalArgumentException: URI is not absolute getting this error While running Java SpringBoot application with MongoDb java.lang.IllegalArgumentException: URI is not absolute Feb 9, 2025
@arcuri82 arcuri82 reopened this Feb 10, 2025
@arcuri82
Copy link
Collaborator

@naveensabavath thanks, but too early to close this issue. i ll close it when ll fix the issue with handling of special characters

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants