WebFuzzing / EvoMaster

The first open-source AI-driven tool for automatically generating system-level test cases (also known as fuzzing) for web/enterprise applications. Currently targeting whitebox and blackbox testing of Web APIs, like REST, GraphQL and RPC (e.g., gRPC and Thrift).
GNU Lesser General Public License v3.0
454 stars 77 forks source link

Fail to parse endpoint due to body.content must not be null when requestBody has $ref #962

Open aruvic opened 2 months ago

aruvic commented 2 months ago

EvoMaster was executed as (Windows binary) evomaster.exe --outputFolder "path\to\the\folder" --maxTime 5m

EvoMaster version: 3.0.0
Loading configuration file from: C:\Users\aruvic\em.yaml
Initializing...
16:19:54.660 [main] WARN  o.t.u.TestcontainersConfiguration - Attempted to read Testcontainers configuration file at file:/C:/Users/aruvic/.testcontainers.properties but the file was not found. Exception message: FileNotFoundException: C:\Users\aruvic\.testcontainers.properties (The system cannot find the file specified)
16:19:56.244 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - Fail to parse endpoint POST/partyManagement/v5/hub due to body.content must not be null
16:19:56.259 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - Fail to parse endpoint POST/partyManagement/v5/individual due to body.content must not be null
16:19:56.260 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - Fail to parse endpoint PATCH/partyManagement/v5/individual/{id} due to body.content must not be null
16:19:56.260 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - Fail to parse endpoint POST/partyManagement/v5/organization due to body.content must not be null
16:19:56.261 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - Fail to parse endpoint PATCH/partyManagement/v5/organization/{id} due to body.content must not be null
There are 7 usable RESTful API endpoints defined in the schema configuration
There are 5 endpoints which have errors and will not be handled in the test generation

The problem is related to:

Followig part of the code: val bodies = body.content.filter { if (it.value.schema == null) { false } else { val reference = it.value.schema.$ref reference.isNullOrBlank() || getLocalObjectSchema(swagger, reference) != null } }

When OAS3 specification is following:

    post:
      tags:
        - organization
      summary: Creates a Organization
      description: This operation creates a Organization entity.
      operationId: createOrganization
      parameters:
        - $ref: '#/components/parameters/Fields'
      requestBody:
        $ref: '#/components/requestBodies/Organization_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201Organization'

    Organization_FVO:
      description: The Organization to be created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Organization_FVO'
      required: true

requestBody's content (body.content) is of course null as it cotains a reference $ref to Components->Request Bodies ($ref: #/components/requestBodies/Organization_FVO') hence following error: "Fail to parse endpoint POST/partyManagement/v5/organization due to body.content must not be null"

Maybe suggestion to fix it as following:

val bodies: Map<String, MediaType> = body.content?.filter {
            it.value.schema != null && (it.value.schema.`$ref`.isNullOrBlank() || getLocalObjectSchema(swagger, it.value.schema.`$ref`) != null)
        } ?: emptyMap()

After change following is reported:

* EvoMaster version: 3.0.1-SNAPSHOT
* Loading configuration file from: C:\Users\aruvic\Documents\Development\EvoMaster\core\target\em.yaml
* Initializing...
16:45:25.491 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No valid body-payload for POST:/partyManagement/v5/hub
16:45:25.513 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No valid body-payload for POST:/partyManagement/v5/individual
16:45:25.515 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No valid body-payload for PATCH:/partyManagement/v5/individual/{id}
16:45:25.517 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No valid body-payload for POST:/partyManagement/v5/organization
16:45:25.517 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No valid body-payload for PATCH:/partyManagement/v5/organization/{id}
* There are 12 usable RESTful API endpoints defined in the schema configuration
arcuri82 commented 2 months ago

Hi @aruvic ,

thanks for reporting this bug. You are indeed right. Dealing with requestBody.$ref is definitively something we should handle

aruvic commented 2 months ago

Hi @arcuri82, thanks for confirming it.

I tried to fix it myself as below:

import io.swagger.v3.oas.models.parameters.RequestBody

    private fun resolveRequestBody(swagger: OpenAPI, reference: String): RequestBody? {
        val classDef = extractReferenceName(reference)
        return swagger.components.requestBodies[classDef]
    }

    private fun handleBodyPayload(
            operation: Operation,
            verb: HttpVerb,
            restPath: RestPath,
            swagger: OpenAPI,
            params: MutableList<Param>,
            options: Options) {

        // Return early if requestBody is missing
        val body = operation.requestBody ?: return

        // Ensure the verb is appropriate for operations with a body
        if (!listOf(HttpVerb.POST, HttpVerb.PATCH, HttpVerb.PUT).contains(verb)) {
            log.warn("In HTTP, body payloads are undefined for $verb. Issue in $restPath")
            return
        }

        // Handle dereferencing if requestBody is referenced
        val resolvedBody = if (body.`$ref` != null) {
            resolveRequestBody(swagger, body.`$ref`) ?: return
        } else {
            body
        }

        // Extract content, ensuring it's not null or empty
        val bodies: Map<String, MediaType> = resolvedBody.content?.filter { entry: Map.Entry<String, MediaType> ->
            entry.value.schema?.let { schema ->
                !schema.`$ref`.isNullOrBlank() && getLocalObjectSchema(swagger, schema.`$ref`) != null
            } ?: false
        } ?: emptyMap()

        if (bodies.isEmpty()) {
            log.warn("No valid body-payload for $verb:$restPath. Defaulting to empty handling.")
            return
        }

        // Proceed with first valid MediaType found
        val obj: MediaType = bodies.values.first()
        var gene = getGene("body", obj.schema, swagger, referenceClassDef = null, options = options)

        // Wrap gene as optional if not explicitly required
        if (!(resolvedBody.required ?: false) && gene !is OptionalGene) {
            gene = OptionalGene("body", gene)
        }

        val contentTypeGene = EnumGene<String>("contentType", bodies.keys.toList())

        // Add to parameters list
        params.add(BodyParam(gene, contentTypeGene))
    }

I also tried to improve "responses" as following by adding:

import io.swagger.v3.oas.models.responses.ApiResponse
    private fun resolveResponse(swagger: OpenAPI, responseOrRef: ApiResponse): ApiResponse {
        responseOrRef.`$ref`?.let { ref ->
            val refKey = extractReferenceName(ref)
            return swagger.components.responses[refKey] ?: responseOrRef
        }
        return responseOrRef
    }

and in function handleOperation() changed the code to be like this:

            val produces = operation.responses?.entries?.mapNotNull { entry ->
                val response = resolveResponse(swagger, entry.value)
                if (response.content != null && response.content.isNotEmpty()) {
                    response.content.keys
                } else null
            }?.flatten()?.toSet()?.toList() ?: listOf()

provided I did everything correct above (I'm not sure, please check), I get now another error:

C:\Users\aruvic\Documents\Development\EvoMaster\core\target>java --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.regex=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED -jar evomaster.jar --outputFolder "test_output" --maxTime 1m --writeStatistics=true
* ←[34m
 _____          ___  ___          _
|  ___|         |  \/  |         | |
| |____   _____ | .  . | __ _ ___| |_ ___ _ __
|  __\ \ / / _ \| |\/| |/ _` / __| __/ _ \ '__|
| |___\ V / (_) | |  | | (_| \__ \ ||  __/ |
\____/ \_/ \___/\_|  |_/\__,_|___/\__\___|_|

                    ←[0m
* EvoMaster version: 3.0.1-SNAPSHOT
* Going to create configuration file at: C:\Users\aruvic\Documents\Development\EvoMaster\core\target\em.yaml
* Initializing...
* Loading configuration file from: C:\Users\aruvic\Documents\Development\EvoMaster\core\target\em.yaml
11:09:34.845 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - Unhandled format 'base64'
11:09:34.847 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: partyOrPartyRole
11:09:34.862 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: individual
11:09:34.863 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: party
11:09:34.863 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: event
11:09:34.863 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: partyRole
11:09:34.864 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: validFor
11:09:34.864 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: attachment
11:09:34.867 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: status
* There are 12 usable RESTful API endpoints defined in the schema configuration
11:09:58.063 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: characteristic
11:09:58.065 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: existsDuring
11:09:58.066 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: organizationParentRelationship
11:09:58.073 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: taxExemptionCertificate
11:09:58.073 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: creditRating_item
11:09:58.073 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: engagedParty
11:09:58.073 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: partyRoleSpecification
11:09:58.074 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: creditProfile_item
11:09:58.083 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: size
11:09:58.109 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: source
11:09:58.109 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: reportingSystem
11:09:58.170 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: value_item
11:09:58.172 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: value
11:09:58.174 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: organization
11:09:58.223 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: account_item
11:09:58.224 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: agreement_item
11:09:58.224 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: paymentMethod_item
11:09:58.254 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No type/format information provided for 'value'. Defaulting to 'string'
11:09:58.258 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: BaseEvent_allOf_event
11:09:58.258 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: BaseEvent_FVO_allOf_event
11:09:58.258 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: Event_allOf_event
11:09:58.259 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: Event_FVO_allOf_event
11:09:58.259 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: ObjectCharacteristic_allOf_value
11:09:58.259 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: ObjectCharacteristic_FVO_allOf_value
* Starting to generate test cases

←[1A←[2K* Consumed search budget: 0.372%; covered targets: 0; time per test: 218.0ms (1.0 actions)
←[1A←[2K* Consumed search budget: 1.233%; covered targets: 2; time per test: 152.3ms (1.0 actions)
←[1A←[2K* Consumed search budget: 2.540%; covered targets: 10; time per test: 73.2ms (1.0 actions)
←[1A←[2K* Consumed search budget: 4.080%; covered targets: 12; time per test: 78.7ms (1.1 actions)
←[1A←[2K* Consumed search budget: 11.888%; covered targets: 12; time per test: 122.8ms (1.3 actions)
←[1A←[2K* Consumed search budget: 13.805%; covered targets: 12; time per test: 126.1ms (1.3 actions)
←[1A←[2K* Consumed search budget: 15.105%; covered targets: 12; time per test: 122.1ms (1.4 actions)
←[1A←[2K* Consumed search budget: 18.880%; covered targets: 12; time per test: 134.0ms (1.5 actions)
←[1A←[2K* Consumed search budget: 20.597%; covered targets: 12; time per test: 137.2ms (1.5 actions)
←[1A←[2K* Consumed search budget: 21.485%; covered targets: 12; time per test: 130.6ms (1.6 actions)
←[1A←[2K* Consumed search budget: 34.855%; covered targets: 12; time per test: 102.3ms (1.6 actions)
←[1A←[2K* Consumed search budget: 36.727%; covered targets: 12; time per test: 78.3ms (1.4 actions)
←[1A←[2K* Consumed search budget: 38.130%; covered targets: 12; time per test: 80.8ms (1.4 actions)
←[1A←[2K* Consumed search budget: 39.222%; covered targets: 12; time per test: 82.5ms (1.4 actions)
←[1A←[2K* Consumed search budget: 40.562%; covered targets: 12; time per test: 84.4ms (1.4 actions)
←[1A←[2K* Consumed search budget: 41.823%; covered targets: 12; time per test: 85.6ms (1.4 actions)
←[1A←[2K* Consumed search budget: 43.035%; covered targets: 12; time per test: 86.7ms (1.4 actions)
←[1A←[2K* Consumed search budget: 44.263%; covered targets: 12; time per test: 88.3ms (1.4 actions)
←[1A←[2K* Consumed search budget: 45.898%; covered targets: 12; time per test: 89.5ms (1.4 actions)
←[1A←[2K* Consumed search budget: 47.215%; covered targets: 12; time per test: 90.6ms (1.3 actions)
←[1A←[2K* Consumed search budget: 48.458%; covered targets: 12; time per test: 92.1ms (1.3 actions)
←[1A←[2K* Consumed search budget: 49.653%; covered targets: 12; time per test: 92.8ms (1.3 actions)
←[1A←[2K* Consumed search budget: 50.733%; covered targets: 12; time per test: 93.8ms (1.3 actions)
←[1A←[2K* Consumed search budget: 51.982%; covered targets: 12; time per test: 94.8ms (1.3 actions)
←[1A←[2K* Consumed search budget: 53.173%; covered targets: 12; time per test: 95.8ms (1.3 actions)
←[1A←[2K* Consumed search budget: 54.305%; covered targets: 12; time per test: 96.5ms (1.3 actions)
←[1A←[2K* Consumed search budget: 55.322%; covered targets: 12; time per test: 97.2ms (1.3 actions)
←[1A←[2K* Consumed search budget: 56.165%; covered targets: 12; time per test: 83.1ms (1.3 actions)
* ←[31m[ERROR] ←[0m←[33mEvoMaster process terminated abruptly. This is likely a bug in EvoMaster. Please copy&paste the following stacktrace, and create a new issue on ←[34mhttps://github.com/EMResearch/EvoMaster/issues←[0m←[0m
java.lang.IllegalArgumentException: mismatched gene impact for previous class org.evomaster.core.search.gene.optional.OptionalGene
        at org.evomaster.core.search.impact.impactinfocollection.GeneImpact.check(GeneImpact.kt:22)
        at org.evomaster.core.search.impact.impactinfocollection.value.StringGeneImpact.syncImpact(StringGeneImpact.kt:123)
        at org.evomaster.core.search.impact.impactinfocollection.value.ObjectGeneImpact.syncImpact(ObjectGeneImpact.kt:92)
        at org.evomaster.core.search.impact.impactinfocollection.value.OptionalGeneImpact.syncImpact(OptionalGeneImpact.kt:87)
        at org.evomaster.core.search.impact.impactinfocollection.value.ObjectGeneImpact.syncImpact(ObjectGeneImpact.kt:92)
        at org.evomaster.core.search.impact.impactinfocollection.value.OptionalGeneImpact.syncImpact(OptionalGeneImpact.kt:87)
        at org.evomaster.core.search.impact.impactinfocollection.value.ObjectGeneImpact.syncImpact(ObjectGeneImpact.kt:92)
        at org.evomaster.core.search.EvaluatedIndividual.syncImpact(EvaluatedIndividual.kt:637)
        at org.evomaster.core.search.EvaluatedIndividual.compareWithLatest(EvaluatedIndividual.kt:377)
        at org.evomaster.core.search.EvaluatedIndividual.updateImpactOfGenes(EvaluatedIndividual.kt:337)
        at org.evomaster.core.search.service.mutator.Mutator.mutateAndSave(Mutator.kt:197)
        at org.evomaster.core.search.algorithms.MioAlgorithm.searchOnce(MioAlgorithm.kt:48)
        at org.evomaster.core.search.service.SearchAlgorithm.search(SearchAlgorithm.kt:73)
        at org.evomaster.core.Main$Companion.run(Main.kt:564)
        at org.evomaster.core.Main$Companion.initAndRun(Main.kt:178)
        at org.evomaster.core.Main$Companion.main(Main.kt:89)
        at org.evomaster.core.Main.main(Main.kt)

Do I need to open a new bug for the above error?

Br, Alen

arcuri82 commented 2 months ago

Hi, thanks for reporting this. No need to open a different bug report for this, at least for now, as it might be a side-effect of your changes. Unfortunately this week is quite busy :( I will see to look into it in more details hopefully next week

aruvic commented 2 months ago

Hi, thanks for reporting this. No need to open a different bug report for this, at least for now, as it might be a side-effect of your changes. Unfortunately this week is quite busy :( I will see to look into it in more details hopefully next week

thanks a lot

arcuri82 commented 2 months ago

@aruvic I made a fix for the handling of dereferencing. but i m waiting for CI to finish before merging it into master branch (I ll write it here once that is done). anyway, the other reported issue (mismatched gene impact) seems unrelated to this, ie, it is another bug.

@man-zhang any guess of why it could happen? as a temporary workaround, do we have any way to disable collecting gene impact?

also, not sure how best to address this bug, as it might be difficult to reproduce... @aruvic is that API closed-source? if so, @man-zhang we might need some more logging to understand what is going on

thx!

arcuri82 commented 2 months ago

a fix for dereferencing is now merged in the master branch.

@aruvic could you check if it fixes the first issue you reported? if so, could you check if you still get the error on mismatched gene impact? (likely yes, as they seem unrelated). In such case, can you open it in a different issue? thx!

aruvic commented 1 month ago

a fix for dereferencing is now merged in the master branch.

@aruvic could you check if it fixes the first issue you reported? if so, could you check if you still get the error on mismatched gene impact? (likely yes, as they seem unrelated). In such case, can you open it in a different issue? thx!

Hi, sorry, I was out of office for the last two weeks. Indeed I can confirm that the first issue is fixed and the second issue still persists for which I will open a separate issue.

java --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.regex=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED -Djdk.attach.allowAttachSelf=true -jar evomaster.jar --outputFolder "C:\Users\aruvic\Documents\Development\new_folder\UC001\JAVA\tmf_api_tmf632_party_management_v5.0.0_server\test_output" --maxTime 10m
* ←[34m
 _____          ___  ___          _
|  ___|         |  \/  |         | |
| |____   _____ | .  . | __ _ ___| |_ ___ _ __
|  __\ \ / / _ \| |\/| |/ _` / __| __/ _ \ '__|
| |___\ V / (_) | |  | | (_| \__ \ ||  __/ |
\____/ \_/ \___/\_|  |_/\__,_|___/\__\___|_|

                    ←[0m
* EvoMaster version: 3.0.1-SNAPSHOT
* Loading configuration file from: C:\Users\aruvic\Documents\Development\EvoMaster\core\target\em.yaml
* Initializing...
14:10:10.402 [main] WARN  o.t.u.TestcontainersConfiguration - Attempted to read Testcontainers configuration file at file:/C:/Users/aruvic/.testcontainers.properties but the file was not found. Exception message: FileNotFoundException: C:\Users\aruvic\.testcontainers.properties (The system cannot find the file specified)
14:10:13.005 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - Unhandled format 'base64'
14:10:13.023 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: partyOrPartyRole
14:10:13.034 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: individual
14:10:13.034 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: party
14:10:13.035 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: event
14:10:13.035 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: partyRole
14:10:13.036 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: validFor
14:10:13.036 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: attachment
14:10:13.038 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: status
* There are 12 usable RESTful API endpoints defined in the schema configuration
14:10:45.320 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: characteristic
14:10:45.323 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: existsDuring
14:10:45.323 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: organizationParentRelationship
14:10:45.330 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: taxExemptionCertificate
14:10:45.331 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: creditRating_item
14:10:45.331 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: engagedParty
14:10:45.332 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: partyRoleSpecification
14:10:45.333 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: creditProfile_item
14:10:45.345 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: size
14:10:45.370 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: source
14:10:45.371 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: reportingSystem
14:10:45.422 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: value_item
14:10:45.424 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: value
14:10:45.426 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: organization
14:10:45.495 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: account_item
14:10:45.495 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: agreement_item
14:10:45.496 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: paymentMethod_item
14:10:45.545 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No type/format information provided for 'value'. Defaulting to 'string'
14:10:45.550 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: BaseEvent_allOf_event
14:10:45.551 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: BaseEvent_FVO_allOf_event
14:10:45.551 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: Event_allOf_event
14:10:45.552 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: Event_FVO_allOf_event
14:10:45.552 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: ObjectCharacteristic_allOf_value
14:10:45.552 [main] WARN  o.e.c.p.rest.RestActionBuilderV3 - No fields for object definition: ObjectCharacteristic_FVO_allOf_value
* ←[33m[WARNING] ←[0m←[33mUsing experimental settings. Those might not work as expected, or simply straight out crash. Furthermore, they might simply be incomplete features still under development. Used experimental settings: [bbProbabilityUseDataPool, wbProbabilityUseDataPool]←[0m
* Starting to generate test cases

←[1A←[2K* Consumed search budget: 0.037%; covered targets: 0; time per test: 220.0ms (1.0 actions)
←[1A←[2K* Consumed search budget: 0.148%; covered targets: 0; time per test: 167.7ms (1.0 actions)
←[1A←[2K* Consumed search budget: 0.261%; covered targets: 0; time per test: 71.7ms (1.0 actions)
←[1A←[2K* Consumed search budget: 0.412%; covered targets: 0; time per test: 74.9ms (1.1 actions)
←[1A←[2K* Consumed search budget: 0.988%; covered targets: 0; time per test: 105.8ms (1.3 actions)
←[1A←[2K* Consumed search budget: 1.114%; covered targets: 12; time per test: 105.3ms (1.3 actions)
←[1A←[2K* Consumed search budget: 1.214%; covered targets: 12; time per test: 101.1ms (1.4 actions)
←[1A←[2K* Consumed search budget: 1.494%; covered targets: 12; time per test: 109.2ms (1.5 actions)
←[1A←[2K* Consumed search budget: 1.658%; covered targets: 12; time per test: 116.0ms (1.5 actions)
←[1A←[2K* Consumed search budget: 1.807%; covered targets: 12; time per test: 95.3ms (1.6 actions)
←[1A←[2K* Consumed search budget: 2.753%; covered targets: 12; time per test: 98.7ms (1.6 actions)
←[1A←[2K* Consumed search budget: 2.842%; covered targets: 12; time per test: 86.6ms (1.6 actions)
←[1A←[2K* Consumed search budget: 3.794%; covered targets: 12; time per test: 87.3ms (1.5 actions)
←[1A←[2K* Consumed search budget: 4.242%; covered targets: 12; time per test: 90.1ms (1.5 actions)
←[1A←[2K* Consumed search budget: 4.666%; covered targets: 12; time per test: 91.0ms (1.5 actions)
←[1A←[2K* Consumed search budget: 5.227%; covered targets: 12; time per test: 93.6ms (1.5 actions)
←[1A←[2K* Consumed search budget: 5.323%; covered targets: 12; time per test: 91.0ms (1.6 actions)
←[1A←[2K* Consumed search budget: 5.914%; covered targets: 12; time per test: 93.9ms (1.6 actions)
←[1A←[2K* Consumed search budget: 7.123%; covered targets: 12; time per test: 105.6ms (1.6 actions)
←[1A←[2K* Consumed search budget: 7.622%; covered targets: 12; time per test: 108.1ms (1.6 actions)
←[1A←[2K* Consumed search budget: 7.750%; covered targets: 12; time per test: 97.8ms (1.5 actions)
* ←[31m[ERROR] ←[0m←[33mEvoMaster process terminated abruptly. This is likely a bug in EvoMaster. Please copy&paste the following stacktrace, and create a new issue on ←[34mhttps://github.com/EMResearch/EvoMaster/issues←[0m←[0m
java.lang.IllegalArgumentException: mismatched gene impact for previous class org.evomaster.core.search.gene.optional.OptionalGene
        at org.evomaster.core.search.impact.impactinfocollection.GeneImpact.check(GeneImpact.kt:22)
        at org.evomaster.core.search.impact.impactinfocollection.value.StringGeneImpact.syncImpact(StringGeneImpact.kt:123)
        at org.evomaster.core.search.impact.impactinfocollection.value.ObjectGeneImpact.syncImpact(ObjectGeneImpact.kt:92)
        at org.evomaster.core.search.impact.impactinfocollection.value.OptionalGeneImpact.syncImpact(OptionalGeneImpact.kt:87)
        at org.evomaster.core.search.impact.impactinfocollection.value.ObjectGeneImpact.syncImpact(ObjectGeneImpact.kt:92)
        at org.evomaster.core.search.impact.impactinfocollection.value.OptionalGeneImpact.syncImpact(OptionalGeneImpact.kt:87)
        at org.evomaster.core.search.impact.impactinfocollection.value.ObjectGeneImpact.syncImpact(ObjectGeneImpact.kt:92)
        at org.evomaster.core.search.EvaluatedIndividual.syncImpact(EvaluatedIndividual.kt:637)
        at org.evomaster.core.search.EvaluatedIndividual.compareWithLatest(EvaluatedIndividual.kt:377)
        at org.evomaster.core.search.EvaluatedIndividual.updateImpactOfGenes(EvaluatedIndividual.kt:337)
        at org.evomaster.core.search.service.mutator.Mutator.mutateAndSave(Mutator.kt:197)
        at org.evomaster.core.search.algorithms.MioAlgorithm.searchOnce(MioAlgorithm.kt:48)
        at org.evomaster.core.search.service.SearchAlgorithm.search(SearchAlgorithm.kt:73)
        at org.evomaster.core.Main$Companion.run(Main.kt:563)
        at org.evomaster.core.Main$Companion.initAndRun(Main.kt:178)
        at org.evomaster.core.Main$Companion.main(Main.kt:89)
        at org.evomaster.core.Main.main(Main.kt)