Skip to content

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

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

Open
naveensabavath opened this issue Feb 10, 2025 · 10 comments
Labels
bug FIXED in SNAPSHOT the problem has been fixed in the master branch. will be available in the next release.

Comments

@naveensabavath
Copy link

naveensabavath commented Feb 10, 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 With MongoDb:

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 arcuri82 added the bug label Feb 10, 2025
@arcuri82
Copy link
Collaborator

hi @naveensabavath ,

thanks. this is a bug in EM. Fortunately, it should be a rather easy fix. I ll prioritize it

@naveensabavath
Copy link
Author

hi @arcuri82

How can we Integrate Evomaster with Kafka Using Java

@arcuri82
Copy link
Collaborator

hi,
thanks. but, for these questions, better to start a new issue/feature-request or new entry in discussion forum.

currently there is no native or special handling / optimization for Kafka.
it is on our TODO plan for future. depending on resources, might happen later this year or next year

arcuri82 added a commit that referenced this issue Feb 10, 2025
#1171 support for enums as keys for maps
@arcuri82 arcuri82 added the FIXED in SNAPSHOT the problem has been fixed in the master branch. will be available in the next release. label Feb 10, 2025
arcuri82 added a commit that referenced this issue Feb 10, 2025
@naveensabavath
Copy link
Author

hi @naveensabavath ,

thanks. this is a bug in EM. Fortunately, it should be a rather easy fix. I ll prioritize it

Hi @arcuri82 ,

Thank you for acknowledging the bug related to "Only Support Map with String Key" when using Map<Enum, String> with MongoDB in EvoMaster.

I wanted to check if the fix is currently being worked on and if there’s an expected timeline for when it will be available. Also, will this fix ensure that Map<Enum, String> is correctly serialized and deserialized in MongoDB without requiring a workaround?

Looking forward to your update. Thanks again for your help!

@arcuri82
Copy link
Collaborator

hi @naveensabavath
we might make a new release with the fix within 1 or 2 months.
if you want to try to check it out now, you will need to build and locally install SNAPSHOT version from master branch (ie, version 3.4.1-SNAPSHOT)

@naveensabavath
Copy link
Author

naveensabavath commented Feb 11, 2025

hey @arcuri82 ,

Thank you so much .. I did try with SnapShot Version and the error "only support Map with String key in EvoMaster" has gone.

<--------------------------------------------------------------------->

I wanted some clarification on the coverage metrics. After running EvoMaster, I see the following:

Covered targets: 579
Bytecode line coverage: 10% (128 out of 1328 in 46 units/classes)
Successfully executed (HTTP 2xx) endpoints: 2 out of 10 (20%)
However, when I check the generated test cases, I see that all my API endpoints are included, but many of them result in HTTP 500, 401, or 400 errors.

I have a few questions:

How does EvoMaster determine coverage (lines, branches, faults)? Is it based on **only successful executions (2xx responses), or does it also count failures?
If most APIs return 500/401, how does that impact bytecode coverage?
Is there a way to force EvoMaster to explore more successful execution paths instead of hitting mostly error responses?

<--------------------------------------------------------------------->

<--------------------------------------------------------------------->

ERROR :

i have encoutered a new Error and I dont Know what exactly it is please look at it because i dont know why it is Coming

error : java.lang.IllegalArgumentException: different template class org.evomaster.core.search.gene.collection.PairGene

Command am running java -jar target/evomaster.jar --maxTime 120s --outputFolder "src/test/java/Evomaster"

17:25:13.704 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1165_XYZ'
17:25:13.828 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1164_XYZ'
17:25:13.828 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1162_XYZ'
17:25:13.829 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1166_XYZ'
17:25:13.829 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1163_XYZ'
17:25:13.830 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1165_XYZ'
17:25:13.830 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1164_XYZ'
17:25:13.831 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1162_XYZ'
17:25:13.831 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1166_XYZ'
17:25:13.832 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1163_XYZ'
17:25:13.832 [main] WARN o.evomaster.core.taint.TaintAnalysis - More than 2 genes have the taint 'EM_1165_XYZ'

  • [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.IllegalArgumentException: different template class org.evomaster.core.search.gene.collection.PairGene
    at org.evomaster.core.search.gene.ObjectGene.containsSameValueAs(ObjectGene.kt:265)
    at org.evomaster.core.search.gene.optional.ChoiceGene.containsSameValueAs(ChoiceGene.kt:227)
    at org.evomaster.core.search.gene.optional.OptionalGene.containsSameValueAs(OptionalGene.kt:98)
    at org.evomaster.core.search.gene.ObjectGene.containsSameValueAs(ObjectGene.kt:269)
    at org.evomaster.core.search.gene.collection.ArrayGene.containsSameValueAs(ArrayGene.kt:163)
    at org.evomaster.core.search.gene.optional.OptionalGene.containsSameValueAs(OptionalGene.kt:98)
    at org.evomaster.core.search.gene.ObjectGene.containsSameValueAs(ObjectGene.kt:269)
    at org.evomaster.core.search.gene.optional.ChoiceGene.containsSameValueAs(ChoiceGene.kt:227)
    at org.evomaster.core.search.impact.impactinfocollection.ImpactUtils$Companion.findMutatedGene(ImpactUtils.kt:327)
    at org.evomaster.core.search.impact.impactinfocollection.ImpactUtils$Companion.findMutatedGene(ImpactUtils.kt:317)
    at org.evomaster.core.search.service.mutator.StandardMutator.mutationConfiguration(StandardMutator.kt:453)
    at org.evomaster.core.search.service.mutator.StandardMutator.mutationConfiguration$default(StandardMutator.kt:366)
    at org.evomaster.core.search.service.mutator.StandardMutator.innerMutate(StandardMutator.kt:264)
    at org.evomaster.core.search.service.mutator.StandardMutator.mutate(StandardMutator.kt:301)
    at org.evomaster.core.search.service.mutator.Mutator.mutateAndSave(Mutator.kt:163)
    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:607)
    at org.evomaster.core.Main$Companion.initAndRun(Main.kt:202)
    at org.evomaster.core.Main$Companion.main(Main.kt:112)
    at org.evomaster.core.Main.main(Main.kt)

<--------------------------------------------------------------------->

@arcuri82
Copy link
Collaborator

hi,

this looks like another bug :( can you post it as a new issue?

regarding your questions, for how long are you running EvoMaster?
it seems like it is struggling in generating valid inputs. 10% is quite low. possible issue with input constraints. note: if you add "example(s)" in the OpenAPI schema for complex objects/inputs, EM can use those values in the search.

is the application you are testing open-source? or is it a commercial / in-house/ industrial API?

@naveensabavath
Copy link
Author

hi,

i am running Evomaster for 3 days.
and my Application is not open Source ...it is industrial API.

can u please answer below Quoestions if Possible

How does EvoMaster determine coverage (lines, branches, faults)? Is it based on **only successful executions (2xx responses), or does it also count failures?
If most APIs return 500/401, how does that impact bytecode coverage?
Is there a way to force EvoMaster to explore more successful execution paths instead of hitting mostly error responses?

@arcuri82
Copy link
Collaborator

arcuri82 commented Feb 11, 2025

hi,

you are saying you are running EM with --maxTime 72h ?
Regarding industrial API, would you be interested discussing a Industry Collaboration?

For your questions:

  1. How does EvoMaster determine coverage (lines, branches, faults)? Is it based on **only successful executions (2xx responses), or does it also count failures? -> it counts all, regardless of returned status code

  2. If most APIs return 500/401, how does that impact bytecode coverage? -> EM tries to maximize code coverage, regardless of returned status code. Note, if you get a 401 while the generated test has auth info, that might be a misconfiguration of the auth

  3. Is there a way to force EvoMaster to explore more successful execution paths instead of hitting mostly error responses? -> no, it tries to do it by itself. if it doesn't manage it, it means it is struggling with generating valid inputs, eg, that pass first layer of validation. but, without looking at the code and the constraints there, it is hard to say what is going. still, achieved 10% coverage is quite low

@arcuri82
Copy link
Collaborator

ah, wait, i see in your comment you wrote --maxTime 120s. that is very low. should try at least 60m, better if more hours

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug FIXED in SNAPSHOT the problem has been fixed in the master branch. will be available in the next release.
Projects
None yet
Development

No branches or pull requests

2 participants