Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import org.evomaster.core.search.action.ActionFilter
import org.evomaster.core.search.gene.Gene
import org.evomaster.core.search.mutationweight.GeneWeightTestSchema
import org.evomaster.core.search.service.AdaptiveParameterControl
import org.evomaster.core.search.service.SearchTimeController
import org.evomaster.core.search.service.time.SearchTimeController
import org.evomaster.core.search.service.mutator.MutationWeightControl

/**
Expand Down
3 changes: 3 additions & 0 deletions core/src/main/kotlin/org/evomaster/core/BaseModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import org.evomaster.core.search.service.*
import org.evomaster.core.search.service.monitor.SearchProcessMonitor
import org.evomaster.core.search.service.mutator.MutationWeightControl
import org.evomaster.core.search.service.mutator.genemutation.ArchiveGeneMutator
import org.evomaster.core.search.service.time.ExecutionPhaseController
import org.evomaster.core.search.service.time.SearchStatusUpdater
import org.evomaster.core.search.service.time.SearchTimeController
import org.evomaster.core.search.tracer.ArchiveMutationTrackService
import org.evomaster.core.search.tracer.TrackService
import org.evomaster.core.solver.SMTLibZ3DbConstraintSolver
Expand Down
11 changes: 11 additions & 0 deletions core/src/main/kotlin/org/evomaster/core/EMConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2616,6 +2616,17 @@ class EMConfig {
var minimize: Boolean = true


@Cfg("When the main fuzzing session is over, there are several following phases in which test cases can be created" +
" and evaluated (e.g., for minimization, flakiness and security checks)." +
" Each of these follow up phases takes some time, which is not included in 'maxTime'." +
" All those phases are time-bounded, based on the main search budget." +
" For example, with a default of 10% and main budget of 1 hour, then each phase will take" +
" at most 6 minutes each after the 1 hour search." +
" Phases will be preemptively stopped if they reach their timeouts.")
@PercentageAsProbability
var extraPhaseBudgetPercentage: Double = 0.10

@Deprecated("No longer in use, replaced by 'extraPhaseBudgetPercentage'")
@Cfg("Maximum number of minutes that will be dedicated to the minimization phase." +
" A negative number mean no timeout is considered." +
" A value of 0 means minimization will be skipped, even if minimize=true.")
Expand Down
14 changes: 8 additions & 6 deletions core/src/main/kotlin/org/evomaster/core/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ import org.evomaster.core.search.algorithms.*
import org.evomaster.core.search.service.*
import org.evomaster.core.search.service.monitor.SearchProcessMonitor
import org.evomaster.core.search.service.mutator.genemutation.ArchiveImpactSelector
import org.evomaster.core.search.service.time.ExecutionPhaseController
import org.evomaster.core.search.service.time.SearchTimeController
import java.lang.reflect.InvocationTargetException
import java.util.Locale
import kotlin.system.exitProcess
Expand Down Expand Up @@ -269,7 +271,7 @@ class Main {
solution = phaseHttpOracle(injector, config, epc, solution)
solution = phaseFlaky(injector, config, epc, solution)

epc.startWriteOutput()
epc.markStartingWriteOutput()
val suites = writeTests(injector, solution, controllerInfo)
writeWFCReport(injector, solution, suites)

Expand Down Expand Up @@ -298,7 +300,7 @@ class Main {

solution.statistics = data.toMutableList()

epc.finishSearch()
epc.markFinishedSession()

return solution
}
Expand Down Expand Up @@ -423,7 +425,7 @@ class Main {
return when (config.problemType) {
EMConfig.ProblemType.REST -> {
LoggingUtil.getInfoLogger().info("Starting to apply flaky detection")
epc.startFlakiness()
epc.markStartingFlakiness()

val flakinessDetector = injector.getInstance(Key.get(object : TypeLiteral<FlakinessDetector<RestIndividual>>() {}))
flakinessDetector.reexecuteToDetectFlakiness()
Expand All @@ -450,7 +452,7 @@ class Main {
}
//apply security testing phase
LoggingUtil.getInfoLogger().info("Starting to apply security testing")
epc.startSecurity()
epc.markStartingSecurity()

//TODO might need to reset stc, and print some updated info again

Expand All @@ -477,7 +479,7 @@ class Main {

return if (config.httpOracles && config.problemType == EMConfig.ProblemType.REST) {
LoggingUtil.getInfoLogger().info("Starting to apply HTTP")
epc.startHttpOracles()
epc.markStartingAdditionalOracles()

val httpSemanticsService = injector.getInstance(HttpSemanticsService::class.java)
httpSemanticsService.applyHttpSemanticsPhase()
Expand Down Expand Up @@ -830,7 +832,7 @@ class Main {

val config = injector.getInstance(EMConfig::class.java)
val epc = injector.getInstance(ExecutionPhaseController::class.java)
epc.startSearch()
epc.markStartingSearch()

if (!config.blackBox || config.bbExperiments) {
val rc = injector.getInstance(RemoteController::class.java)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import org.evomaster.core.problem.security.service.HttpCallbackVerifier
import org.evomaster.core.remote.service.RemoteController
import org.evomaster.core.search.Solution
import org.evomaster.core.search.service.Sampler
import org.evomaster.core.search.service.SearchTimeController
import org.evomaster.core.search.service.time.SearchTimeController
import org.evomaster.core.sql.schema.TableId
import org.evomaster.test.utils.EMTestUtils
import org.evomaster.test.utils.SeleniumEMUtils
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import org.evomaster.core.search.gene.sql.SqlForeignKeyGene
import org.evomaster.core.search.gene.sql.SqlPrimaryKeyGene
import org.evomaster.core.search.service.ExtraHeuristicsLogger
import org.evomaster.core.search.service.FitnessFunction
import org.evomaster.core.search.service.SearchTimeController
import org.evomaster.core.search.service.time.SearchTimeController
import org.evomaster.core.sql.*
import org.evomaster.core.taint.TaintAnalysis
import org.slf4j.Logger
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,9 @@ import com.fasterxml.jackson.databind.ObjectMapper
import org.evomaster.core.logging.LoggingUtil
import org.evomaster.core.remote.HttpClientFactory
import org.evomaster.core.remote.SutProblemException
import org.evomaster.core.search.service.SearchTimeController
import org.glassfish.jersey.client.ClientConfig
import org.glassfish.jersey.client.ClientProperties
import org.glassfish.jersey.client.HttpUrlConnectorProvider
import org.evomaster.core.utils.TimeUtils
import org.slf4j.LoggerFactory
import javax.net.ssl.SSLContext
import javax.ws.rs.client.Client
import javax.ws.rs.client.ClientBuilder
import javax.ws.rs.client.Entity
import javax.ws.rs.core.MediaType

Expand Down Expand Up @@ -58,8 +53,8 @@ class IntrospectiveQuery {
""".trimIndent(), MediaType.APPLICATION_JSON_TYPE)

//TODO check if TCP problems
val response = SearchTimeController.measureTimeMillis({ ms, res ->
LoggingUtil.getInfoLogger().info("Fetched GraphQL schema in ${ms}ms")
val response = TimeUtils.measureTimeMillis({ ms, res ->
LoggingUtil.getInfoLogger().info("Fetched GraphQL schema in ${ms}ms")
}, {
try {
var request = client.target(graphQlEndpoint)
Expand All @@ -72,8 +67,10 @@ class IntrospectiveQuery {
.invoke()
} catch (e: Exception) {
log.error("Failed query to '$graphQlEndpoint' : $query")
throw SutProblemException("Failed introspection query to '$graphQlEndpoint'." +
" Please check connection and URL format. Error: ${e.message}")
throw SutProblemException(
"Failed introspection query to '$graphQlEndpoint'." +
" Please check connection and URL format. Error: ${e.message}"
)
}
})

Expand Down Expand Up @@ -109,4 +106,4 @@ class IntrospectiveQuery {

return body
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import org.evomaster.core.problem.rest.resource.RestResourceNode
import org.evomaster.core.problem.rest.resource.SamplerSpecification
import org.evomaster.core.problem.rest.service.ResourceSamplingMethod.*
import org.evomaster.core.search.service.Randomness
import org.evomaster.core.search.service.SearchTimeController
import org.evomaster.core.search.service.time.SearchTimeController
import org.slf4j.Logger
import org.slf4j.LoggerFactory

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ import org.evomaster.core.search.gene.string.StringGene
import org.evomaster.core.search.gene.utils.GeneUtils
import org.evomaster.core.search.service.DataPool
import org.evomaster.core.search.service.ExecutionStats
import org.evomaster.core.search.service.SearchTimeController
import org.evomaster.core.taint.TaintAnalysis
import org.evomaster.core.utils.TimeUtils
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import java.net.URI
Expand Down Expand Up @@ -625,7 +625,7 @@ abstract class AbstractRestFitness : HttpWsFitness<RestIndividual>() {
val response = try {
val call = createInvocation(a, chainState, cookies, tokens)

SearchTimeController.measureTimeMillis(
TimeUtils.measureTimeMillis(
{ t, res ->
rcr.setResponseTimeMs(t)
executionStats.record(a.id, t)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ import org.evomaster.core.logging.LoggingUtil
import org.evomaster.core.remote.NoRemoteConnectionException
import org.evomaster.core.remote.SutProblemException
import org.evomaster.core.remote.TcpUtils
import org.evomaster.core.search.service.ExecutionPhaseController
import org.evomaster.core.search.service.SearchTimeController
import org.evomaster.core.search.service.time.ExecutionPhaseController
import org.evomaster.core.search.service.time.SearchTimeController
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import javax.annotation.PostConstruct
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.evomaster.core.search.algorithms

import org.evomaster.core.EMConfig
import org.evomaster.core.search.service.SearchTimeController
import org.evomaster.core.search.service.time.SearchTimeController

/**
* Encapsulates per-target budget accounting for LIPS.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package org.evomaster.core.search.service

import com.google.inject.Inject
import org.evomaster.core.EMConfig
import org.evomaster.core.search.service.time.SearchTimeController
import kotlin.math.roundToInt

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import org.evomaster.core.search.impact.impactinfocollection.ImpactsOfIndividual
import org.evomaster.core.search.service.IdMapper.Companion.LOCAL_OBJECTIVE_KEY
import org.evomaster.core.search.service.monitor.SearchProcessMonitor
import org.evomaster.core.search.service.mutator.EvaluatedMutation
import org.evomaster.core.search.service.time.SearchTimeController
import org.evomaster.core.search.tracer.ArchiveMutationTrackService
import org.slf4j.LoggerFactory

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import net.sf.jsqlparser.util.deparser.SelectDeParser
import net.sf.jsqlparser.util.deparser.StatementDeParser
import org.evomaster.client.java.controller.api.dto.ExtraHeuristicEntryDto
import org.evomaster.core.EMConfig
import org.evomaster.core.search.service.time.SearchTimeController
import org.evomaster.core.sql.ReplaceValuesDeParser
import java.nio.file.Files
import java.nio.file.Path
Expand Down
Loading
Loading