Skip to content
Open
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
4 changes: 3 additions & 1 deletion 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 @@ -298,7 +300,7 @@ class Main {

solution.statistics = data.toMutableList()

epc.finishSearch()
epc.finishSession()

return solution
}
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
@@ -1,7 +1,6 @@
package org.evomaster.core.problem.rest.service.fitness

import com.webfuzzing.commons.faults.DefinedFaultCategory
import com.webfuzzing.commons.faults.FaultCategory
import org.evomaster.test.utils.EMTestUtils
import org.evomaster.client.java.controller.api.dto.ActionDto
import org.evomaster.client.java.controller.api.dto.AdditionalInfoDto
Expand All @@ -12,13 +11,11 @@ import org.evomaster.core.logging.LoggingUtil
import org.evomaster.core.problem.enterprise.DetectedFault
import org.evomaster.core.problem.enterprise.ExperimentalFaultCategory
import org.evomaster.core.problem.enterprise.SampleType
import org.evomaster.core.problem.enterprise.auth.NoAuth
import org.evomaster.core.problem.externalservice.HostnameResolutionAction
import org.evomaster.core.problem.externalservice.HostnameResolutionInfo
import org.evomaster.core.problem.externalservice.httpws.service.HarvestActualHttpWsResponseHandler
import org.evomaster.core.problem.externalservice.httpws.service.HttpWsExternalServiceHandler
import org.evomaster.core.problem.externalservice.httpws.HttpExternalServiceInfo
import org.evomaster.core.problem.httpws.HttpWsCallResult
import org.evomaster.core.problem.httpws.auth.AuthUtils
import org.evomaster.core.problem.httpws.service.HttpWsFitness
import org.evomaster.core.problem.rest.*
Expand Down Expand Up @@ -59,9 +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.StackTraceUtils
import org.evomaster.core.utils.TimeUtils
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import java.net.URI
Expand Down Expand Up @@ -610,7 +606,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
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
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
package org.evomaster.core.search.service

import com.google.inject.Inject
import com.webfuzzing.commons.faults.FaultCategory
import org.evomaster.core.EMConfig
import org.evomaster.core.Lazy
import org.evomaster.core.problem.enterprise.DetectedFaultUtils
import org.evomaster.core.search.EvaluatedIndividual
import org.evomaster.core.search.Individual
import org.evomaster.core.search.service.monitor.SearchProcessMonitor
import org.evomaster.core.search.service.mutator.MutatedGeneSpecification
import org.evomaster.core.search.service.time.ExecutionPhaseController
import org.evomaster.core.search.service.time.SearchTimeController
import org.evomaster.core.utils.TimeUtils
import org.slf4j.Logger
import org.slf4j.LoggerFactory

Expand Down Expand Up @@ -59,8 +61,6 @@ abstract class FitnessFunction<T> where T : Individual {

val a = individual.seeMainExecutableActions().count()

// val calculatedBefore = individual.copy()

if(time.averageOverheadMsBetweenTests.isRecordingTimer()){
val computation = time.averageOverheadMsBetweenTests.addElapsedTime()
executionInfoReporter.addLatestComputationOverhead(computation, time.evaluatedIndividuals)
Expand Down Expand Up @@ -147,12 +147,20 @@ abstract class FitnessFunction<T> where T : Individual {
// By default, we optimize for performance in collecting coverage values, but for special cases, we want to collect full info
val allTargetsWithDescriptive = config.processFormat == EMConfig.ProcessDataFormat.TARGET_HEURISTIC

val ei = SearchTimeController.measureTimeMillis(
{ t, ind ->
time.reportExecutedIndividualTime(t, actionsSize)
ind?.executionTimeMs = t
},
{doCalculateCoverage(individual, targets, allTargets = allTargetsWithDescriptive, fullyCovered = false, descriptiveIds = allTargetsWithDescriptive)}
val ei = TimeUtils.measureTimeMillis(
{ t, ind ->
time.reportExecutedIndividualTime(t, actionsSize)
ind?.executionTimeMs = t
},
{
doCalculateCoverage(
individual,
targets,
allTargets = allTargetsWithDescriptive,
fullyCovered = false,
descriptiveIds = allTargetsWithDescriptive
)
}
)
// plugin execution info reporter here, to avoid the time spent by execution reporter
handleExecutionInfo(ei)
Expand All @@ -177,4 +185,4 @@ abstract class FitnessFunction<T> where T : Individual {
executionInfoReporter.sqlExecutionInfo(ei.individual.seeAllActions(), ei.fitness.databaseExecutions)
executionInfoReporter.actionExecutionInfo(ei.individual, ei.executionTimeMs, time.evaluatedIndividuals)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import org.evomaster.core.problem.rest.data.RestIndividual
import org.evomaster.core.search.EvaluatedIndividual
import org.evomaster.core.search.GroupsOfChildren
import org.evomaster.core.search.Individual
import org.evomaster.core.search.service.time.SearchStatusUpdater
import org.evomaster.core.sql.SqlAction
import org.slf4j.Logger
import org.slf4j.LoggerFactory
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import org.evomaster.core.search.action.Action
import org.evomaster.core.search.EvaluatedIndividual
import org.evomaster.core.search.Individual
import org.evomaster.core.search.gene.wrapper.OptionalGene
import org.evomaster.core.search.service.time.SearchTimeController
import org.evomaster.core.search.tracer.TrackOperator
import org.slf4j.Logger
import org.slf4j.LoggerFactory
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import org.evomaster.core.logging.LoggingUtil
import org.evomaster.core.search.Individual
import org.evomaster.core.search.Solution
import org.evomaster.core.search.service.mutator.Mutator
import org.evomaster.core.search.service.time.ExecutionPhaseController
import org.evomaster.core.search.service.time.SearchStatusUpdater
import org.evomaster.core.search.service.time.SearchTimeController


abstract class SearchAlgorithm<T> where T : Individual {
Expand Down Expand Up @@ -100,8 +103,6 @@ abstract class SearchAlgorithm<T> where T : Individual {

time.doStopRecording()

ssu.enabled = false

if(config.minimize){
epc.startMinimization()

Expand Down Expand Up @@ -130,4 +131,4 @@ abstract class SearchAlgorithm<T> where T : Individual {
}

abstract fun getType() : EMConfig.Algorithm
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import com.google.inject.Inject
import org.evomaster.core.EMConfig
import org.evomaster.core.problem.externalservice.httpws.service.HttpWsExternalServiceHandler
import org.evomaster.core.problem.webfrontend.service.BrowserController
import org.evomaster.core.search.service.time.ExecutionPhaseController
import org.evomaster.core.search.service.time.SearchTimeController

/**
* Global state used in the search.
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,22 @@ import com.google.inject.Inject
import org.evomaster.client.java.controller.api.dto.SutInfoDto
import org.evomaster.client.java.instrumentation.shared.ObjectiveNaming
import org.evomaster.core.EMConfig
import org.evomaster.core.output.service.PartialOracles
import org.evomaster.core.problem.httpws.HttpWsCallResult
import org.evomaster.core.problem.rest.data.RestCallAction
import org.evomaster.core.problem.rest.service.AIResponseClassifier
import org.evomaster.core.problem.rest.service.CallGraphService
import org.evomaster.core.remote.service.RemoteController
import org.evomaster.core.search.Solution
import org.evomaster.core.search.service.time.ExecutionPhaseController
import org.evomaster.core.search.service.time.SearchListener
import org.evomaster.core.search.service.time.SearchTimeController
import org.evomaster.core.utils.IncrementalAverage
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import java.nio.file.Files
import java.nio.file.Paths
import javax.annotation.PostConstruct
import kotlin.reflect.full.isSubtypeOf
import kotlin.reflect.javaType
import kotlin.reflect.typeOf



class Statistics : SearchListener {
Expand Down Expand Up @@ -61,9 +61,6 @@ class Statistics : SearchListener {
@Inject(optional = true)
private var remoteController: RemoteController? = null

@Inject
private lateinit var oracles: PartialOracles

@Inject(optional = true)
private lateinit var aiResponseClassifier: AIResponseClassifier

Expand Down Expand Up @@ -237,15 +234,21 @@ class Statistics : SearchListener {

fun averageNumberOfEvaluatedDocumentsForRedisHeuristics(): Double = redisDocumentsAverageCalculator.mean

override fun newActionEvaluated() {
override fun newActionsEvaluated(n: Int) {

if(!epc.isInSearch()){
//we are only taking snapshots during the search
return
}

if (snapshotThreshold <= 0) {
//not collecting snapshot data
return
}

val elapsed = 100 * time.percentageUsedBudget()

if (elapsed > snapshotThreshold) {
if (elapsed >= snapshotThreshold) {
takeSnapshot()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import org.evomaster.core.remote.service.RemoteController
import org.evomaster.core.search.*
import org.evomaster.core.search.gene.Gene
import org.evomaster.core.search.service.*
import org.evomaster.core.search.service.time.SearchListener
import org.evomaster.core.search.service.time.SearchTimeController
import org.evomaster.core.utils.ReportWriter.writeByChannel
import org.slf4j.Logger
import org.slf4j.LoggerFactory
Expand Down Expand Up @@ -122,7 +124,7 @@ class SearchProcessMonitor: SearchListener {
}
}

override fun newActionEvaluated() {
override fun newActionsEvaluated(n: Int) {
if(config.enableProcessMonitor && config.processFormat == EMConfig.ProcessDataFormat.JSON_ALL){
step = StepOfSearchProcess(archive, time.evaluatedIndividuals, eval!!.individual, eval!!, System.currentTimeMillis(),isMutated)
}
Expand Down
Loading
Loading