From a67e8cbd0f0d53d0eb59f69a9292b6bcfc224f70 Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Wed, 15 Jun 2022 13:57:39 +0200 Subject: [PATCH 01/17] trying to setup Docker --- Dockerfile | 13 +++++++++++++ makeExecutable.sh | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..d62bc2da16 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM amazoncorretto:17-alpine-jdk + +COPY core/target/evomaster.jar . + +#Keep --add-opens in sync with makeExecutable.sh +ENTRYPOINT [ \ + "java", \ + "-Xmx4G", \ + "--add-opens", "java.base/java.net=ALL-UNNAMED", \ + "-jar", "evomaster.jar", \ + # see https://www.howtogeek.com/devops/how-to-connect-to-localhost-within-a-docker-container/ + "--sutControllerHost", "host.docker.internal" \ +] \ No newline at end of file diff --git a/makeExecutable.sh b/makeExecutable.sh index 0c9c1d48d3..adc27b1f89 100644 --- a/makeExecutable.sh +++ b/makeExecutable.sh @@ -39,4 +39,5 @@ VENDOR="EvoMaster Team" $JPACKAGE --main-jar $JAR --input $BUILD --dest $RELEASE --name evomaster \ --copyright "$COPYRIGHT" --license-file ./LICENSE --vendor "$VENDOR" --app-version $VERSION $OS \ - --java-options "--add-opens java.base/java.net=ALL-UNNAMED" \ No newline at end of file + --java-options "--add-opens java.base/java.net=ALL-UNNAMED" +#Keep --add-opens in sync with Dockerfile \ No newline at end of file From aba9ca914042127667b5d285c621d2485464b412 Mon Sep 17 00:00:00 2001 From: Juan Pablo Galeotti Date: Thu, 28 Nov 2024 19:05:37 -0300 Subject: [PATCH 02/17] new SqlHeuristicsCalculator to contain the "Advanced" SQL heuristics calculation --- .../client/java/sql/VariableDescriptor.java | 3 +- .../sql/internal/HeuristicsCalculator.java | 10 +++++-- .../sql/internal/SqlHeuristicsCalculator.java | 30 +++++++++++++++++++ .../java/sql/internal/SqlParserUtils.java | 28 ++++++++++++++++- .../internal/HeuristicsCalculatorTest.java | 9 ++++++ .../internal/SqlHeuristicsCalculatorTest.java | 21 +++++++++++++ 6 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/SqlHeuristicsCalculator.java create mode 100644 client-java/sql/src/test/java/org/evomaster/client/java/sql/internal/SqlHeuristicsCalculatorTest.java diff --git a/client-java/sql/src/main/java/org/evomaster/client/java/sql/VariableDescriptor.java b/client-java/sql/src/main/java/org/evomaster/client/java/sql/VariableDescriptor.java index 3add115480..f6bf6d5eda 100644 --- a/client-java/sql/src/main/java/org/evomaster/client/java/sql/VariableDescriptor.java +++ b/client-java/sql/src/main/java/org/evomaster/client/java/sql/VariableDescriptor.java @@ -26,7 +26,8 @@ public VariableDescriptor(String columnName) { } public VariableDescriptor(String columnName, String alias, String tableName) { - this.columnName = columnName.trim().toLowerCase(); + this.columnName = (columnName==null || columnName.trim().isEmpty() ? + null : columnName.trim().toLowerCase()); this.alias = (alias == null || alias.trim().isEmpty() ? this.columnName : alias.trim().toLowerCase()); diff --git a/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/HeuristicsCalculator.java b/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/HeuristicsCalculator.java index 8027fbd3bf..debd1ef8cb 100644 --- a/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/HeuristicsCalculator.java +++ b/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/HeuristicsCalculator.java @@ -51,20 +51,26 @@ public static SqlDistanceWithMetrics computeDistance( QueryResult... data ) { + /** + * This is not an ideal solution, but it will remain this way until config.heuristicsForSQLAdvanced remains + * experimental and it does not replace the "Plain" SqlHeuristicsCalculator + */ + if (advancedHeuristics) { + return SqlHeuristicsCalculator.computeDistance(sqlCommand,schema,taintHandler,data); + } + if (data.length == 0 || Arrays.stream(data).allMatch(QueryResult::isEmpty)){ //if no data, we have no info whatsoever return new SqlDistanceWithMetrics(Double.MAX_VALUE,0, false); } Statement stmt = SqlParserUtils.parseSqlCommand(sqlCommand); - Expression where = getWhere(stmt); if (where == null) { //no constraint and at least one data point return new SqlDistanceWithMetrics(0.0,0, false); } - SqlNameContext context = new SqlNameContext(stmt); if (schema != null) { context.setSchema(schema); diff --git a/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/SqlHeuristicsCalculator.java b/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/SqlHeuristicsCalculator.java new file mode 100644 index 0000000000..46d825ee5e --- /dev/null +++ b/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/SqlHeuristicsCalculator.java @@ -0,0 +1,30 @@ +package org.evomaster.client.java.sql.internal; + +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.statement.Statement; +import net.sf.jsqlparser.statement.select.FromItem; +import org.evomaster.client.java.controller.api.dto.database.schema.DbInfoDto; +import org.evomaster.client.java.sql.QueryResult; + +import static org.evomaster.client.java.sql.internal.SqlParserUtils.getFrom; +import static org.evomaster.client.java.sql.internal.SqlParserUtils.getWhere; + +public class SqlHeuristicsCalculator { + + public static SqlDistanceWithMetrics computeDistance(String sqlCommand, + DbInfoDto schema, + TaintHandler taintHandler, + QueryResult... data) { + + Statement parsedSqlCommand = SqlParserUtils.parseSqlCommand(sqlCommand); + Expression whereClause= getWhere(parsedSqlCommand); + FromItem fromItem = getFrom(parsedSqlCommand); + + if (fromItem == null && whereClause == null) { + return new SqlDistanceWithMetrics(0.0,0,false); + } + + + return null; + } +} diff --git a/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/SqlParserUtils.java b/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/SqlParserUtils.java index 9fa4a17843..00003de09f 100644 --- a/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/SqlParserUtils.java +++ b/client-java/sql/src/main/java/org/evomaster/client/java/sql/internal/SqlParserUtils.java @@ -5,6 +5,7 @@ import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.statement.Statement; import net.sf.jsqlparser.statement.delete.Delete; +import net.sf.jsqlparser.statement.select.FromItem; import net.sf.jsqlparser.statement.select.PlainSelect; import net.sf.jsqlparser.statement.select.Select; import net.sf.jsqlparser.statement.update.Update; @@ -55,7 +56,6 @@ public static boolean isSelectOne(String sqlCommand) { public static Expression getWhere(Statement parsedStatement) { - if (parsedStatement instanceof Select) { Select select = (Select) parsedStatement; PlainSelect plainSelect = select.getPlainSelect(); @@ -69,6 +69,32 @@ public static Expression getWhere(Statement parsedStatement) { } } + /** + * Extracts the "FROM" clause or the primary table involved in a SQL statement. + * This method supports SELECT, DELETE, and UPDATE SQL statements. + * + * @param parsedStatement The parsed SQL statement as a {@link Statement} object. + * This is typically obtained using JSQLParser's `CCJSqlParserUtil.parse`. + * @return The {@link FromItem} representing the "FROM" clause or the main table for the statement. + * - For a SELECT statement, returns the main {@link FromItem} in the "FROM" clause. + * - For a DELETE statement, returns the table being deleted from. + * - For an UPDATE statement, returns the table being updated. + * @throws IllegalArgumentException If the provided statement type is not SELECT, DELETE, or UPDATE. + */ + public static FromItem getFrom(Statement parsedStatement) { + if (parsedStatement instanceof Select) { + Select select = (Select) parsedStatement; + PlainSelect plainSelect = select.getPlainSelect(); + return plainSelect.getFromItem(); + } else if(parsedStatement instanceof Delete){ + return ((Delete) parsedStatement).getTable(); + } else if(parsedStatement instanceof Update){ + return ((Update) parsedStatement).getTable(); + } else { + throw new IllegalArgumentException("Cannot handle statement: " + parsedStatement.toString()); + } + } + /** * This method assumes that the SQL command can be successfully parsed. * diff --git a/client-java/sql/src/test/java/org/evomaster/client/java/sql/internal/HeuristicsCalculatorTest.java b/client-java/sql/src/test/java/org/evomaster/client/java/sql/internal/HeuristicsCalculatorTest.java index 0b3af37824..fda975518a 100644 --- a/client-java/sql/src/test/java/org/evomaster/client/java/sql/internal/HeuristicsCalculatorTest.java +++ b/client-java/sql/src/test/java/org/evomaster/client/java/sql/internal/HeuristicsCalculatorTest.java @@ -425,4 +425,13 @@ public void testWhereWithNoColumns() { assertEquals(0d, dist); } + @Test + public void testNoWhereNoFrom() { + String sqlCommand = "SELECT 1 as example_column"; + QueryResult data = new QueryResult(Arrays.asList("example_column"), null); + data.addRow(new DataRow("example_column",1, null)); + double distance = HeuristicsCalculator.computeDistance(sqlCommand,data); + assertEquals(0, distance); + } + } diff --git a/client-java/sql/src/test/java/org/evomaster/client/java/sql/internal/SqlHeuristicsCalculatorTest.java b/client-java/sql/src/test/java/org/evomaster/client/java/sql/internal/SqlHeuristicsCalculatorTest.java new file mode 100644 index 0000000000..962b675083 --- /dev/null +++ b/client-java/sql/src/test/java/org/evomaster/client/java/sql/internal/SqlHeuristicsCalculatorTest.java @@ -0,0 +1,21 @@ +package org.evomaster.client.java.sql.internal; + +import org.evomaster.client.java.sql.DataRow; +import org.evomaster.client.java.sql.QueryResult; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class SqlHeuristicsCalculatorTest { + + @Test + public void testNoWhereNoFromClause() { + String sqlCommand = "SELECT 1 AS example_column"; + QueryResult data = new QueryResult(Arrays.asList("example_column"), null); + data.addRow(new DataRow("example_column",1, null)); + SqlDistanceWithMetrics distanceWithMetrics = SqlHeuristicsCalculator.computeDistance(sqlCommand, null, null, data); + assertEquals(0, distanceWithMetrics.sqlDistance); + } +} From 694cc9dadc3964c26386e2d08a13806fb45b6d4c Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Tue, 10 Dec 2024 12:37:07 +0100 Subject: [PATCH 03/17] fixed test comments based on VW's feedback --- .../core/output/service/RestTestCaseWriter.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/core/src/main/kotlin/org/evomaster/core/output/service/RestTestCaseWriter.kt b/core/src/main/kotlin/org/evomaster/core/output/service/RestTestCaseWriter.kt index 4b45d395df..7fc4678da7 100644 --- a/core/src/main/kotlin/org/evomaster/core/output/service/RestTestCaseWriter.kt +++ b/core/src/main/kotlin/org/evomaster/core/output/service/RestTestCaseWriter.kt @@ -516,6 +516,16 @@ class RestTestCaseWriter : HttpWsTestCaseWriter { val examples = getAllUsedExamples(ind.individual as RestIndividual) .toSet().sorted() if(examples.isNotEmpty()){ + if(examples.size == 1){ + lines.addBlockCommentLine("Using 1 example:") + } else { + lines.addBlockCommentLine("Using ${examples.size} examples:") + } + examples.forEach { + lines.addBlockCommentLine(" $it") + } + + /* Andrea: changed based on VW's feedback val el = StringUtils.linesWithMaxLength(examples, ", ", config.maxLengthForCommentLine) val opening = "Using ${examples.size} examples:" if(el.size == 1){ @@ -526,6 +536,7 @@ class RestTestCaseWriter : HttpWsTestCaseWriter { el.forEach{lines.addBlockCommentLine(it)} } } + */ } //links @@ -533,6 +544,16 @@ class RestTestCaseWriter : HttpWsTestCaseWriter { .filter { it.isInUse() } .map { it.sourceLinkId } if(links.isNotEmpty()){ + if(links.size == 1){ + lines.addBlockCommentLine("Followed 1 link:") + } else { + lines.addBlockCommentLine("Followed ${links.size} links:") + } + links.forEach { + lines.addBlockCommentLine(" $it") + } + + /* val ll = StringUtils.linesWithMaxLength(links, ", ", config.maxLengthForCommentLine) val opening = "Followed ${links.size} links:" if(ll.size == 1){ @@ -543,9 +564,11 @@ class RestTestCaseWriter : HttpWsTestCaseWriter { ll.forEach{lines.addBlockCommentLine(it)} } } + */ } } + private fun getAllUsedExamples(ind: RestIndividual) : List{ return ind.seeFullTreeGenes() .filterIsInstance>() From 413b0dedc7109690541540cf3ce91a13215b6950 Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Tue, 10 Dec 2024 15:46:18 +0100 Subject: [PATCH 04/17] updated publications --- docs/publications.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/publications.md b/docs/publications.md index 5f310fbc6b..c3f0ccb0f9 100644 --- a/docs/publications.md +++ b/docs/publications.md @@ -23,6 +23,17 @@ Also, some of these papers provides full replication packages, which are linked ## Peer-Reviewed Publications +### 2025 +* A. Arcuri, A. Poth, O. Rrjolli. + *Introducing Black-Box Fuzz Testing for REST APIs in Industry: Challenges and Solutions*. + IEEE International Conference on Software Testing, Validation and Verification (ICST), Industry Track. + *(To appear)* + +* S. Seran, O. Duman, A. Arcuri. + *Multi-Phase Taint Analysis for JSON Inference in Search-Based Fuzzing*. + IEEE International Workshop on Search-Based and Fuzz Testing (SBFT). + *(To appear)* + ### 2024 * A. Arcuri, M. Zhang, S. Seran, J.P. Galeotti, A. Golmohammadi, O. Duman, A. Aldasoro, H. Ghianni. From ebec8680b1146fdbe3e8f972da349d079f0ca9bf Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Wed, 11 Dec 2024 14:03:10 +0100 Subject: [PATCH 05/17] working on supporting Docker --- Dockerfile | 38 ++++++++++++++++--- .../kotlin/org/evomaster/core/EMConfig.kt | 21 +++++++++- .../rest/service/AbstractRestSampler.kt | 4 +- docs/options.md | 3 +- 4 files changed, 56 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index d62bc2da16..0b788806b6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,39 @@ -FROM amazoncorretto:17-alpine-jdk +FROM amazoncorretto:21-alpine-jdk COPY core/target/evomaster.jar . -#Keep --add-opens in sync with makeExecutable.sh ENTRYPOINT [ \ "java", \ "-Xmx4G", \ - "--add-opens", "java.base/java.net=ALL-UNNAMED", \ - "-jar", "evomaster.jar", \ + "-jar", "evomaster.jar" \ # see https://www.howtogeek.com/devops/how-to-connect-to-localhost-within-a-docker-container/ - "--sutControllerHost", "host.docker.internal" \ -] \ No newline at end of file + #"--sutControllerHost", "host.docker.internal" \ +] + + +################### +###### NOTES ###### +################### +# Build +# docker build -t webfuzzing/evomaster . +# +# Run +# docker run webfuzzing/evomaster +# +# Example remote BB +# docker run -v "/$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster --blackBox true --bbSwaggerUrl https://api.apis.guru/v2/openapi.yaml --outputFormat JAVA_JUNIT_4 --maxTime 10s --ratePerMinute 60 +# +# Example local BB +# docker run -v "/$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster --blackBox true --bbSwaggerUrl http://host.docker.internal:8080/v3/api-docs --maxTime 5s +# +# TODO WB, and em.yaml, EMConfig param + info logs +# +# Debugging +# docker run -it --entrypoint sh webfuzzing/evomaster +# +# +# +# +# +# +# \ No newline at end of file diff --git a/core/src/main/kotlin/org/evomaster/core/EMConfig.kt b/core/src/main/kotlin/org/evomaster/core/EMConfig.kt index 0fead3b4bf..0799d46019 100644 --- a/core/src/main/kotlin/org/evomaster/core/EMConfig.kt +++ b/core/src/main/kotlin/org/evomaster/core/EMConfig.kt @@ -585,6 +585,15 @@ class EMConfig { throw ConfigProblemException("The use of 'prematureStop' is meaningful only if the stopping criterion" + " 'stoppingCriterion' is based on time") } + + if(blackBox){ + if(sutControllerHost != ControllerConstants.DEFAULT_CONTROLLER_HOST){ + throw ConfigProblemException("Changing 'sutControllerHost' has no meaning in black-box testing, as no controller is used") + } + if(!overrideOpenAPIUrl.isNullOrBlank()){ + throw ConfigProblemException("Changing 'overrideOpenAPIUrl' has no meaning in black-box testing, as no controller is used") + } + } } private fun checkPropertyConstraints(m: KMutableProperty<*>) { @@ -1048,6 +1057,16 @@ class EMConfig { " If no tag is specified here, then such filter is not applied.") var endpointTagFilter: String? = null + @Important(6.0) + @Cfg("Host name or IP address of where the SUT EvoMaster Controller Driver is listening on." + + " This option is only needed for white-box testing.") + var sutControllerHost = ControllerConstants.DEFAULT_CONTROLLER_HOST + + @Important(6.1) + @Url + @Cfg("If specified, override the OpenAPI URL location given by the EvoMaster Driver." + + " This option is only needed for white-box testing.") + var overrideOpenAPIUrl = "" //-------- other options ------------- @@ -1142,8 +1161,6 @@ class EMConfig { @Max(maxTcpPort) var sutControllerPort = ControllerConstants.DEFAULT_CONTROLLER_PORT - @Cfg("Host name or IP address of where the SUT REST controller is listening on") - var sutControllerHost = ControllerConstants.DEFAULT_CONTROLLER_HOST @Cfg("Limit of number of individuals per target to keep in the archive") @Min(1.0) diff --git a/core/src/main/kotlin/org/evomaster/core/problem/rest/service/AbstractRestSampler.kt b/core/src/main/kotlin/org/evomaster/core/problem/rest/service/AbstractRestSampler.kt index 70c3508350..88556cfeb4 100644 --- a/core/src/main/kotlin/org/evomaster/core/problem/rest/service/AbstractRestSampler.kt +++ b/core/src/main/kotlin/org/evomaster/core/problem/rest/service/AbstractRestSampler.kt @@ -91,7 +91,9 @@ abstract class AbstractRestSampler : HttpWsSampler() { // set up authentications moved up since we are going to get authentication info from HttpWsSampler setupAuthentication(infoDto) - if(!openApiURL.isNullOrBlank()) { + if(!config.overrideOpenAPIUrl.isNullOrBlank()){ + retrieveSwagger(config.overrideOpenAPIUrl) + }else if(!openApiURL.isNullOrBlank()) { retrieveSwagger(openApiURL) } else if(! openApiSchema.isNullOrBlank()){ swagger = OpenApiAccess.getOpenApi(openApiSchema) diff --git a/docs/options.md b/docs/options.md index 3c8848a888..357d78dbe8 100644 --- a/docs/options.md +++ b/docs/options.md @@ -51,6 +51,8 @@ There are 3 types of options: |`endpointFocus`| __String__. Concentrate search on only one single REST endpoint. *Default value*: `null`.| |`endpointPrefix`| __String__. Concentrate search on a set of REST endpoints defined by a common prefix. *Default value*: `null`.| |`endpointTagFilter`| __String__. Comma-separated list of OpenAPI/Swagger 'tags' definitions. Only the REST endpoints having at least one of such tags will be fuzzed. If no tag is specified here, then such filter is not applied. *Default value*: `null`.| +|`sutControllerHost`| __String__. Host name or IP address of where the SUT EvoMaster Controller Driver is listening on. This option is only needed for white-box testing. *Default value*: `localhost`.| +|`overrideOpenAPIUrl`| __String__. If specified, override the OpenAPI URL location given by the EvoMaster Driver. This option is only needed for white-box testing. *Constraints*: `URL`. *Default value*: `""`.| ## Internal Command-Line Options @@ -194,7 +196,6 @@ There are 3 types of options: |`statisticsFile`| __String__. Where the statistics file (if any) is going to be written (in CSV format). *Default value*: `statistics.csv`.| |`stoppingCriterion`| __Enum__. Stopping criterion for the search. *Valid values*: `TIME, ACTION_EVALUATIONS, INDIVIDUAL_EVALUATIONS`. *Default value*: `TIME`.| |`structureMutationProbability`| __Double__. Probability of applying a mutation that can change the structure of a test. *Constraints*: `probability 0.0-1.0`. *Default value*: `0.5`.| -|`sutControllerHost`| __String__. Host name or IP address of where the SUT REST controller is listening on. *Default value*: `localhost`.| |`sutControllerPort`| __Int__. TCP port of where the SUT REST controller is listening on. *Constraints*: `min=0.0, max=65535.0`. *Default value*: `40100`.| |`taintAnalysisForMapsAndArrays`| __Boolean__. Apply taint analysis to handle special cases of Maps and Arrays. *Default value*: `true`.| |`taintApplySpecializationProbability`| __Double__. Probability of applying a discovered specialization for a tainted value. *Constraints*: `probability 0.0-1.0`. *Default value*: `0.5`.| From 2e48ab80085dc7b5f0ddf993a89c7ca5f285d64f Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Wed, 11 Dec 2024 22:31:12 +0100 Subject: [PATCH 06/17] documentation for Docker + info logs --- Dockerfile | 10 +-- .../kotlin/org/evomaster/core/EMConfig.kt | 26 +++++-- .../main/kotlin/org/evomaster/core/Main.kt | 17 ++++- docs/docker.md | 69 +++++++++++++++++++ docs/options.md | 4 +- 5 files changed, 114 insertions(+), 12 deletions(-) create mode 100644 docs/docker.md diff --git a/Dockerfile b/Dockerfile index 0b788806b6..3ce15dc478 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,9 +5,8 @@ COPY core/target/evomaster.jar . ENTRYPOINT [ \ "java", \ "-Xmx4G", \ - "-jar", "evomaster.jar" \ - # see https://www.howtogeek.com/devops/how-to-connect-to-localhost-within-a-docker-container/ - #"--sutControllerHost", "host.docker.internal" \ + "-jar", "evomaster.jar", \ + "--runningInDocker", "true" \ ] @@ -26,7 +25,10 @@ ENTRYPOINT [ \ # Example local BB # docker run -v "/$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster --blackBox true --bbSwaggerUrl http://host.docker.internal:8080/v3/api-docs --maxTime 5s # -# TODO WB, and em.yaml, EMConfig param + info logs +# Example WB +# docker run -v "/$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster --dockerLocalhost true +# +# TODO and em.yaml # # Debugging # docker run -it --entrypoint sh webfuzzing/evomaster diff --git a/core/src/main/kotlin/org/evomaster/core/EMConfig.kt b/core/src/main/kotlin/org/evomaster/core/EMConfig.kt index 0799d46019..ef69fbe0c0 100644 --- a/core/src/main/kotlin/org/evomaster/core/EMConfig.kt +++ b/core/src/main/kotlin/org/evomaster/core/EMConfig.kt @@ -594,6 +594,9 @@ class EMConfig { throw ConfigProblemException("Changing 'overrideOpenAPIUrl' has no meaning in black-box testing, as no controller is used") } } + if(dockerLocalhost && !runningInDocker){ + throw ConfigProblemException("Specifying 'dockerLocalhost' only makes sense when running EvoMaster inside Docker.") + } } private fun checkPropertyConstraints(m: KMutableProperty<*>) { @@ -1062,7 +1065,20 @@ class EMConfig { " This option is only needed for white-box testing.") var sutControllerHost = ControllerConstants.DEFAULT_CONTROLLER_HOST + @Important(6.1) + @Cfg("TCP port of where the SUT EvoMaster Controller Driver is listening on." + + " This option is only needed for white-box testing.") + @Min(0.0) + @Max(maxTcpPort) + var sutControllerPort = ControllerConstants.DEFAULT_CONTROLLER_PORT + + @Important(6.2) + @Cfg("Replace references to 'localhost' to point to the actual host machine." + + " Only needed when running EvoMaster inside Docker.") + var dockerLocalhost = false + + @Important(7.0) @Url @Cfg("If specified, override the OpenAPI URL location given by the EvoMaster Driver." + " This option is only needed for white-box testing.") @@ -1070,6 +1086,10 @@ class EMConfig { //-------- other options ------------- + @Cfg("Inform EvoMaster process that it is running inside Docker." + + " Users should not modify this parameter, as it is set automatically in the Docker image of EvoMaster.") + var runningInDocker = false + @FilePath @Cfg("When generating tests in JavaScript, there is the need to know where the driver is located in respect to" + " the generated tests") @@ -1156,12 +1176,6 @@ class EMConfig { "A negative value means the CPU clock time will be rather used as seed") var seed: Long = -1 - @Cfg("TCP port of where the SUT REST controller is listening on") - @Min(0.0) - @Max(maxTcpPort) - var sutControllerPort = ControllerConstants.DEFAULT_CONTROLLER_PORT - - @Cfg("Limit of number of individuals per target to keep in the archive") @Min(1.0) var archiveTargetLimit = 10 diff --git a/core/src/main/kotlin/org/evomaster/core/Main.kt b/core/src/main/kotlin/org/evomaster/core/Main.kt index 03bb7137e7..dc46f847eb 100644 --- a/core/src/main/kotlin/org/evomaster/core/Main.kt +++ b/core/src/main/kotlin/org/evomaster/core/Main.kt @@ -77,11 +77,26 @@ class Main { return } - if (parser.parse(*args).has("help")) { + val options = parser.parse(*args) + + if (options.has("help")) { parser.printHelpOn(System.out) return } + val config = EMConfig().apply { updateProperties(options) } + + if(config.runningInDocker){ + LoggingUtil.getInfoLogger().info("You are running EvoMaster inside Docker." + + " To access the generated test suite under '/generated_tests', you will need to mount a folder" + + " or volume." + + " Also references to host machine on 'localhost' would need to be replaced with" + + " 'host.docker.internal'." + + " If this is the first time you run EvoMaster in Docker, you are strongly recommended to first" + + " check the documentation at:" + + " ${inBlue("https://github.com/WebFuzzing/EvoMaster/blob/master/docs/docker.md")}") + } + initAndRun(args) LoggingUtil.getInfoLogger().apply { diff --git a/docs/docker.md b/docs/docker.md new file mode 100644 index 0000000000..b7ac66f75d --- /dev/null +++ b/docs/docker.md @@ -0,0 +1,69 @@ +# Running EvoMaster in Docker + +_EvoMaster_ is also released via Docker, under `webfuzzing/evomaster`. + +It can be run with: + +> docker run webfuzzing/evomaster \ + +Where `` would be the [command-line options](options.md). + + +## Accessing the generated test files + +By default, _EvoMaster_ generates tests under the `/generated_tests` folder. +To access the generated tests after Docker run is completed, you need to mount a folder or a volume pointing to that folder. +An example is mounting the local `./generated_tests`, using for example: + +> docker run -v "/$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster \ + +There can be other ways to access the `/generated_tests` folder inside the Docker image (e.g., using volumes), but, for that, you will need to check the Docker documentation. + +## Issues with "localhost" + +An important fact to keep in mind is that references to `localhost` will point to the Docker virtual network, and not your host machine. +This latter can be accessed at `host.docker.internal`. + + +For example, in __black-box__ testing for REST APIs, if the tested API is running on your machine, an option like + +> --bbSwaggerUrl http://localhost:8080/v3/api-docs + +would need to be replaced with + +> --bbSwaggerUrl http://host.docker.internal:8080/v3/api-docs + +Note that here the port `8080` and the the path `/v3/api-docs` are just examples. + +An equivalent solution is to use the option + +> --dockerLocalhost true + +i.e., + +> --bbSwaggerUrl http://localhost:8080/v3/api-docs --dockerLocalhost true + +This can be useful if you do not remember or do not want to copy&paste the hostname `host.docker.internal`. + +For __white-box__ testing, by default _EvoMaster_ core tool process will try to connect to a driver, listening on `localhost`. +This will not directly work in Docker. +Such default configuration can be changed with the option: + +> --sutControllerHost host.docker.internal + +Still, this might not be enough. If in the driver there are references to `localhost`, either you need to change the code of the driver, or override some parameters via command-line options (e.g. using `--overrideOpenAPIUrl`). +A problem here is that, if you are using _ephemeral_ ports in the driver (as you are recommended to do), then it will not be easy to set up the correct port numbers beforehand on the command line. +To deal with this issue, you can use the option: + +> --dockerLocalhost true + +This will change the references to `localhost` (if any) in the driver into `host.docker.internal`. +It will also change the default of `--sutControllerHost`, unless you modify it explicitly. +This way, you can run __white-box__ _EvoMaster_ by using for example: + +> docker run -v "/$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster --dockerLocalhost true + + +## Handling "em.yaml" configuration file + +TODO diff --git a/docs/options.md b/docs/options.md index 357d78dbe8..be672f5bdc 100644 --- a/docs/options.md +++ b/docs/options.md @@ -52,6 +52,8 @@ There are 3 types of options: |`endpointPrefix`| __String__. Concentrate search on a set of REST endpoints defined by a common prefix. *Default value*: `null`.| |`endpointTagFilter`| __String__. Comma-separated list of OpenAPI/Swagger 'tags' definitions. Only the REST endpoints having at least one of such tags will be fuzzed. If no tag is specified here, then such filter is not applied. *Default value*: `null`.| |`sutControllerHost`| __String__. Host name or IP address of where the SUT EvoMaster Controller Driver is listening on. This option is only needed for white-box testing. *Default value*: `localhost`.| +|`sutControllerPort`| __Int__. TCP port of where the SUT EvoMaster Controller Driver is listening on. This option is only needed for white-box testing. *Constraints*: `min=0.0, max=65535.0`. *Default value*: `40100`.| +|`dockerLocalhost`| __Boolean__. Replace references to 'localhost' to point to the actual host machine. Only needed when running EvoMaster inside Docker. *Default value*: `false`.| |`overrideOpenAPIUrl`| __String__. If specified, override the OpenAPI URL location given by the EvoMaster Driver. This option is only needed for white-box testing. *Constraints*: `URL`. *Default value*: `""`.| ## Internal Command-Line Options @@ -176,6 +178,7 @@ There are 3 types of options: |`recordExceededTargets`| __Boolean__. Whether to record targets when the number is more than 100. *DEBUG option*. *Default value*: `false`.| |`recordExecutedMainActionInfo`| __Boolean__. Whether to record info of executed actions during search. *DEBUG option*. *Default value*: `false`.| |`resourceSampleStrategy`| __Enum__. Specify whether to enable resource-based strategy to sample an individual during search. Note that resource-based sampling is only applicable for REST problem with MIO algorithm. *Valid values*: `NONE, Customized, EqualProbability, Actions, TimeBudgets, Archive, ConArchive`. *Default value*: `ConArchive`.| +|`runningInDocker`| __Boolean__. Inform EvoMaster process that it is running inside Docker. Users should not modify this parameter, as it is set automatically in the Docker image of EvoMaster. *Default value*: `false`.| |`saveArchiveAfterMutation`| __Boolean__. Whether to save archive info after each of mutation, which is typically useful for debugging mutation and archive. *DEBUG option*. *Default value*: `false`.| |`saveExecutedMainActionInfo`| __String__. Specify a path to save all executed main actions to a file (default is 'executedMainActions.txt'). *DEBUG option*. *Default value*: `executedMainActions.txt`.| |`saveExecutedSQLToFile`| __String__. Specify a path to save all executed sql commands to a file (default is 'sql.txt'). *DEBUG option*. *Default value*: `sql.txt`.| @@ -196,7 +199,6 @@ There are 3 types of options: |`statisticsFile`| __String__. Where the statistics file (if any) is going to be written (in CSV format). *Default value*: `statistics.csv`.| |`stoppingCriterion`| __Enum__. Stopping criterion for the search. *Valid values*: `TIME, ACTION_EVALUATIONS, INDIVIDUAL_EVALUATIONS`. *Default value*: `TIME`.| |`structureMutationProbability`| __Double__. Probability of applying a mutation that can change the structure of a test. *Constraints*: `probability 0.0-1.0`. *Default value*: `0.5`.| -|`sutControllerPort`| __Int__. TCP port of where the SUT REST controller is listening on. *Constraints*: `min=0.0, max=65535.0`. *Default value*: `40100`.| |`taintAnalysisForMapsAndArrays`| __Boolean__. Apply taint analysis to handle special cases of Maps and Arrays. *Default value*: `true`.| |`taintApplySpecializationProbability`| __Double__. Probability of applying a discovered specialization for a tainted value. *Constraints*: `probability 0.0-1.0`. *Default value*: `0.5`.| |`taintChangeSpecializationProbability`| __Double__. Probability of changing specialization for a resolved taint during mutation. *Constraints*: `probability 0.0-1.0`. *Default value*: `0.1`.| From 0ca16835cc0e595c2648ab8b86682274ada6e51a Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Thu, 12 Dec 2024 13:27:16 +0100 Subject: [PATCH 07/17] better error message in case of OptionException --- core/src/main/kotlin/org/evomaster/core/EMConfig.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/src/main/kotlin/org/evomaster/core/EMConfig.kt b/core/src/main/kotlin/org/evomaster/core/EMConfig.kt index 0fead3b4bf..88dfd76a0d 100644 --- a/core/src/main/kotlin/org/evomaster/core/EMConfig.kt +++ b/core/src/main/kotlin/org/evomaster/core/EMConfig.kt @@ -1,9 +1,6 @@ package org.evomaster.core -import joptsimple.BuiltinHelpFormatter -import joptsimple.OptionDescriptor -import joptsimple.OptionParser -import joptsimple.OptionSet +import joptsimple.* import org.evomaster.client.java.controller.api.ControllerConstants import org.evomaster.client.java.controller.api.dto.auth.AuthenticationDto import org.evomaster.client.java.instrumentation.shared.ExternalServiceSharedUtils @@ -696,8 +693,11 @@ class EMConfig { return } - val opt = options.valueOf(m.name)?.toString() - ?: throw ConfigProblemException("Value not found for property ${m.name}") + val opt = try{ + options.valueOf(m.name)?.toString() + } catch (e: OptionException){ + throw ConfigProblemException("Error in parsing configuration option '${m.name}'. Library message: ${e.message}") + } ?: throw ConfigProblemException("Value not found for property '${m.name}'") updateValue(opt, m) } From cff3b35bdf46a6a4c5e04c5796801a81f675ddd0 Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Thu, 12 Dec 2024 15:44:10 +0100 Subject: [PATCH 08/17] more documentation for Docker and better logs --- Dockerfile | 5 ++- .../kotlin/org/evomaster/core/EMConfig.kt | 15 ++++++-- .../main/kotlin/org/evomaster/core/Main.kt | 27 ++++++++++---- docs/config_file.md | 3 ++ docs/docker.md | 37 ++++++++++++++++++- docs/options.md | 2 +- 6 files changed, 72 insertions(+), 17 deletions(-) create mode 100644 docs/config_file.md diff --git a/Dockerfile b/Dockerfile index 3ce15dc478..e429c7c12d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,10 +25,11 @@ ENTRYPOINT [ \ # Example local BB # docker run -v "/$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster --blackBox true --bbSwaggerUrl http://host.docker.internal:8080/v3/api-docs --maxTime 5s # -# Example WB +# Example WB (NOT IMPLEMENTED YET) # docker run -v "/$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster --dockerLocalhost true # -# TODO and em.yaml +# Setting for existing em.yaml +# -v "/$(pwd)/em.yaml":/em.yaml # # Debugging # docker run -it --entrypoint sh webfuzzing/evomaster diff --git a/core/src/main/kotlin/org/evomaster/core/EMConfig.kt b/core/src/main/kotlin/org/evomaster/core/EMConfig.kt index ef69fbe0c0..8c44e867e9 100644 --- a/core/src/main/kotlin/org/evomaster/core/EMConfig.kt +++ b/core/src/main/kotlin/org/evomaster/core/EMConfig.kt @@ -1073,10 +1073,6 @@ class EMConfig { @Max(maxTcpPort) var sutControllerPort = ControllerConstants.DEFAULT_CONTROLLER_PORT - @Important(6.2) - @Cfg("Replace references to 'localhost' to point to the actual host machine." + - " Only needed when running EvoMaster inside Docker.") - var dockerLocalhost = false @Important(7.0) @Url @@ -1090,6 +1086,17 @@ class EMConfig { " Users should not modify this parameter, as it is set automatically in the Docker image of EvoMaster.") var runningInDocker = false + /** + * TODO this is currently not implemented. + * Even if did, there would still be major issues with handling WireMock. + * Until we can think of a good solution there, no point in implementing this. + */ + @Experimental + @Cfg("Replace references to 'localhost' to point to the actual host machine." + + " Only needed when running EvoMaster inside Docker.") + var dockerLocalhost = false + + @FilePath @Cfg("When generating tests in JavaScript, there is the need to know where the driver is located in respect to" + " the generated tests") diff --git a/core/src/main/kotlin/org/evomaster/core/Main.kt b/core/src/main/kotlin/org/evomaster/core/Main.kt index dc46f847eb..d3ee8cdb54 100644 --- a/core/src/main/kotlin/org/evomaster/core/Main.kt +++ b/core/src/main/kotlin/org/evomaster/core/Main.kt @@ -87,14 +87,25 @@ class Main { val config = EMConfig().apply { updateProperties(options) } if(config.runningInDocker){ - LoggingUtil.getInfoLogger().info("You are running EvoMaster inside Docker." + - " To access the generated test suite under '/generated_tests', you will need to mount a folder" + - " or volume." + - " Also references to host machine on 'localhost' would need to be replaced with" + - " 'host.docker.internal'." + - " If this is the first time you run EvoMaster in Docker, you are strongly recommended to first" + - " check the documentation at:" + - " ${inBlue("https://github.com/WebFuzzing/EvoMaster/blob/master/docs/docker.md")}") + if(config.blackBox) { + LoggingUtil.getInfoLogger().info( + inGreen("You are running EvoMaster inside Docker." + + " To access the generated test suite under '/generated_tests', you will need to mount a folder" + + " or volume." + + " Also references to host machine on 'localhost' would need to be replaced with" + + " 'host.docker.internal'." + + " If this is the first time you run EvoMaster in Docker, you are strongly recommended to first" + + " check the documentation at:") + + " ${inBlue("https://github.com/WebFuzzing/EvoMaster/blob/master/docs/docker.md")}" + ) + } else { + LoggingUtil.getInfoLogger().warn( + inYellow( + "White-box testing (default in EvoMaster) is currently not supported / not recommended in Docker." + + " To run EvoMaster in black-box mode, you can use --blackBox true." + ) + ) + } } initAndRun(args) diff --git a/docs/config_file.md b/docs/config_file.md new file mode 100644 index 0000000000..3c6caa82c5 --- /dev/null +++ b/docs/config_file.md @@ -0,0 +1,3 @@ +## Config + +Documentation under construction \ No newline at end of file diff --git a/docs/docker.md b/docs/docker.md index b7ac66f75d..db31256883 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -6,7 +6,13 @@ It can be run with: > docker run webfuzzing/evomaster \ -Where `` would be the [command-line options](options.md). +Where `` would be the [command-line options](options.md), +like for example `--blackBox true` + +> __IMPORTANT__ +> +> For __white-box__ testing, running from Docker is currently not supported. As such, it is discouraged. +> You can try it, but likely you will get major issues with hostname and ephemeral port resolutions, as well as issues with external dependency mocks. ## Accessing the generated test files @@ -19,6 +25,10 @@ An example is mounting the local `./generated_tests`, using for example: There can be other ways to access the `/generated_tests` folder inside the Docker image (e.g., using volumes), but, for that, you will need to check the Docker documentation. +WARNING: note the `/` before `$(pwd)`. This is needed only if running in a MSYS shell on Windows like _Git Bash_, as it automatically converts paths on the command line. +Unfortunately, this will also mess up any input parameter to EvoMaster that is recognized as a path (e.g., if starting with a `/`). +You can [read more here](https://stackoverflow.com/questions/52944738/how-to-force-git-for-windows-bash-shell-to-not-convert-path-string-to-windows-p). + ## Issues with "localhost" An important fact to keep in mind is that references to `localhost` will point to the Docker virtual network, and not your host machine. @@ -35,6 +45,7 @@ would need to be replaced with Note that here the port `8080` and the the path `/v3/api-docs` are just examples. + + + + + + ## Handling "em.yaml" configuration file -TODO +If you want to use a configuration file (e.g., `em.yaml`) to specify command-line options, this needs to be mounted into Docker. +For example by using: + +> -v "$(pwd)/em.yaml":/em.yaml + +By default, _EvoMaster_ in Docker searches for a configuration file under `/em.yaml`. +You can mount your configuration file (based on its absolute path) into that. + +> WARNING: in _Git Bash_, you will need a `/` before `$(pwd)`, i.e., Linux-like paths should start with a `//` and not a `/` (as otherwise get converted, and you might end up seeing weird things like prepended paths such as `C:/Program Files/Git`). Also, options like +`--configPath` will not work there. + + +By default, if there is no `em.yaml` file, _EvoMaster_ will create one in the current working directory, with comments on how it should be configured. +However, if you run through Docker, you will not be able to directly access such file, unless you mount the whole `/` root folder (which is not recommended). +But you can still create it manually. +[See documentation](config_file.md). \ No newline at end of file diff --git a/docs/options.md b/docs/options.md index be672f5bdc..e9f777daf6 100644 --- a/docs/options.md +++ b/docs/options.md @@ -53,7 +53,6 @@ There are 3 types of options: |`endpointTagFilter`| __String__. Comma-separated list of OpenAPI/Swagger 'tags' definitions. Only the REST endpoints having at least one of such tags will be fuzzed. If no tag is specified here, then such filter is not applied. *Default value*: `null`.| |`sutControllerHost`| __String__. Host name or IP address of where the SUT EvoMaster Controller Driver is listening on. This option is only needed for white-box testing. *Default value*: `localhost`.| |`sutControllerPort`| __Int__. TCP port of where the SUT EvoMaster Controller Driver is listening on. This option is only needed for white-box testing. *Constraints*: `min=0.0, max=65535.0`. *Default value*: `40100`.| -|`dockerLocalhost`| __Boolean__. Replace references to 'localhost' to point to the actual host machine. Only needed when running EvoMaster inside Docker. *Default value*: `false`.| |`overrideOpenAPIUrl`| __String__. If specified, override the OpenAPI URL location given by the EvoMaster Driver. This option is only needed for white-box testing. *Constraints*: `URL`. *Default value*: `""`.| ## Internal Command-Line Options @@ -228,6 +227,7 @@ There are 3 types of options: |`appendToTargetHeuristicsFile`| __Boolean__. Whether should add to an existing target heuristics file, instead of replacing it. It is only used when processFormat is TARGET_HEURISTIC. *Default value*: `false`.| |`bbProbabilityUseDataPool`| __Double__. Specify the probability of using the data pool when sampling test cases. This is for black-box (bb) mode. *Constraints*: `probability 0.0-1.0`. *Default value*: `0.8`.| |`discoveredInfoRewardedInFitness`| __Boolean__. If there is new discovered information from a test execution, reward it in the fitness function. *Default value*: `false`.| +|`dockerLocalhost`| __Boolean__. Replace references to 'localhost' to point to the actual host machine. Only needed when running EvoMaster inside Docker. *Default value*: `false`.| |`dpcTargetTestSize`| __Int__. Specify a max size of a test to be targeted when either DPC_INCREASING or DPC_DECREASING is enabled. *Default value*: `1`.| |`employResourceSizeHandlingStrategy`| __Enum__. Specify a strategy to determinate a number of resources to be manipulated throughout the search. *Valid values*: `NONE, RANDOM, DPC`. *Default value*: `NONE`.| |`enableAdaptiveResourceStructureMutation`| __Boolean__. Specify whether to decide the resource-based structure mutator and resource to be mutated adaptively based on impacts during focused search.Note that it only works when resource-based solution is enabled for solving REST problem. *Default value*: `false`.| From b9a69852cc0505b32c9b35d0ed93c74c493c12a5 Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Thu, 12 Dec 2024 22:10:07 +0100 Subject: [PATCH 09/17] clarifications --- Dockerfile | 4 ++++ core/src/main/kotlin/org/evomaster/core/Main.kt | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e429c7c12d..af695de3d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,6 +19,10 @@ ENTRYPOINT [ \ # Run # docker run webfuzzing/evomaster # +# Publish (latest, otherwise tag with :TAG) +# docker login +# docker push webfuzzing/evomaster +# # Example remote BB # docker run -v "/$(pwd)/generated_tests":/generated_tests webfuzzing/evomaster --blackBox true --bbSwaggerUrl https://api.apis.guru/v2/openapi.yaml --outputFormat JAVA_JUNIT_4 --maxTime 10s --ratePerMinute 60 # diff --git a/core/src/main/kotlin/org/evomaster/core/Main.kt b/core/src/main/kotlin/org/evomaster/core/Main.kt index d3ee8cdb54..4a58d0cd82 100644 --- a/core/src/main/kotlin/org/evomaster/core/Main.kt +++ b/core/src/main/kotlin/org/evomaster/core/Main.kt @@ -102,7 +102,9 @@ class Main { LoggingUtil.getInfoLogger().warn( inYellow( "White-box testing (default in EvoMaster) is currently not supported / not recommended in Docker." + - " To run EvoMaster in black-box mode, you can use --blackBox true." + " To run EvoMaster in black-box mode, you can use '--blackBox true'." + + " If you need to run in white-box mode, it is recommended to download an OS installer or" + + " the uber JAR file from the release-page on GitHub." ) ) } From 9cfd613ad13fd29c53b60a214fc6d9e06ccf342a Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Fri, 13 Dec 2024 09:46:27 +0100 Subject: [PATCH 10/17] adding Docker to release process --- .github/workflows/release.yml | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c0464d9500..b77cc2f9de 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,6 +45,23 @@ jobs: path: core/target/evomaster.jar retention-days: ${{env.retention-days}} if-no-files-found: error + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: webfuzzing/evomaster + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: Build and push Docker + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} installer-for-windows: needs: build-base @@ -124,12 +141,13 @@ jobs: if-no-files-found: error tagged-release: + #FIXME remove once done with Docker + if: false needs: [installer-for-debian,installer-for-windows,installer-for-osx] name: "Tagged Release" runs-on: "ubuntu-latest" steps: - - name: Download fat jar uses: actions/download-artifact@v4 with: @@ -146,19 +164,6 @@ jobs: uses: actions/download-artifact@v4 with: name: evomaster.msi - - -## Doesn't seem any longer maintained... plus usability issues -# - uses: "marvinpinto/action-automatic-releases@latest" -# with: -# repo_token: "${{ secrets.GITHUB_TOKEN }}" -# prerelease: false -# files: | -# evomaster.jar -# ${{env.installer-windows}} -# ${{env.installer-osx}} -# ${{env.installer-debian}} - - name: Release uses: softprops/action-gh-release@v1 with: From 8ca739b6ea917776a1e1e3465560b7884b0a6731 Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Fri, 13 Dec 2024 09:52:18 +0100 Subject: [PATCH 11/17] adding Docker to release notes --- release_notes.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/release_notes.md b/release_notes.md index 814aa1c76d..d7ad91a398 100644 --- a/release_notes.md +++ b/release_notes.md @@ -2,6 +2,9 @@ Under development in `master` branch. +### New Features +- Now EvoMaster is released also on Docker Hub, with id `webfuzzing/evomaster`. + However, this is only for black-box mode. For white-box, it is still recommended to use an OS installer or the uber-jar file from release page. ### Bug Fixes - Fixed missing java.util.Arrays in generated files, leading to compilation errors in some cases involving SQL database resets. From 7c3afd78fc017f254b8c88b91d66881cc08bebe4 Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Fri, 13 Dec 2024 09:57:29 +0100 Subject: [PATCH 12/17] re-enabled release --- .github/workflows/release.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b77cc2f9de..def71570f6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -141,8 +141,6 @@ jobs: if-no-files-found: error tagged-release: - #FIXME remove once done with Docker - if: false needs: [installer-for-debian,installer-for-windows,installer-for-osx] name: "Tagged Release" runs-on: "ubuntu-latest" From bd6bf96cf55f0692617e844fc7f9a57e31002d37 Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Fri, 13 Dec 2024 13:38:56 +0100 Subject: [PATCH 13/17] ICST paper --- docs/publications.md | 2 +- docs/publications/2025_icst.pdf | Bin 0 -> 267835 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/publications/2025_icst.pdf diff --git a/docs/publications.md b/docs/publications.md index c3f0ccb0f9..1c0584be5f 100644 --- a/docs/publications.md +++ b/docs/publications.md @@ -27,7 +27,7 @@ Also, some of these papers provides full replication packages, which are linked * A. Arcuri, A. Poth, O. Rrjolli. *Introducing Black-Box Fuzz Testing for REST APIs in Industry: Challenges and Solutions*. IEEE International Conference on Software Testing, Validation and Verification (ICST), Industry Track. - *(To appear)* + [[PDF](publications/2025_icst.pdf)] * S. Seran, O. Duman, A. Arcuri. *Multi-Phase Taint Analysis for JSON Inference in Search-Based Fuzzing*. diff --git a/docs/publications/2025_icst.pdf b/docs/publications/2025_icst.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2a5f414f5570866982a97862f43e8a8e0db2d780 GIT binary patch literal 267835 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

ZESVpz){v-ZH9uym*k2_jT0SKjf@&T(ubE(^Z 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 To-5cAZoT^5?|%8~yI21YCuYVG literal 0 HcmV?d00001 From f03bbf13871da516d8855a925d3b19e31ef9ab11 Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Fri, 13 Dec 2024 13:53:14 +0100 Subject: [PATCH 14/17] info on use in industry --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 978791369b..77752bf13b 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,17 @@ __Known limitations__: --> +### Use in Industry + +Several enterprises use _EvoMaster_ to fuzz their Web APIs. +We do few academia-industry collaborations ([see more info here](docs/contribute.md)), where we help test engineers to apply _EvoMaster_ on their systems, as long as we can then report on such experience. +Example of Fortune 500 companies using _EvoMaster_ are: + +* [Meituan](https://www.meituan.com): see [TOSEM'23](docs/publications/2023_tosem_rpc.pdf), [ASE'24](docs/publications/2024_ase.pdf). + +* [Volkswagen](https://www.volkswagen.com): see [AUSE'24](docs/publications/2024_ause_vw.pdf), [ICST'25](docs/publications/2025_icst.pdf). + + ### Videos ![](docs/img/video-player-flaticon.png) From 2ad6fd2a5ce6924f3335e183d068c22cb3491884 Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Fri, 13 Dec 2024 22:26:42 +0100 Subject: [PATCH 15/17] enabling test comments. added info on found faults --- .../kotlin/org/evomaster/core/EMConfig.kt | 3 +-- .../core/output/service/RestTestCaseWriter.kt | 20 +++++++++++++++++++ docs/options.md | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/core/src/main/kotlin/org/evomaster/core/EMConfig.kt b/core/src/main/kotlin/org/evomaster/core/EMConfig.kt index 88dfd76a0d..9346cff2e9 100644 --- a/core/src/main/kotlin/org/evomaster/core/EMConfig.kt +++ b/core/src/main/kotlin/org/evomaster/core/EMConfig.kt @@ -2398,9 +2398,8 @@ class EMConfig { " instead of OFF.") val probabilityOfOnVsOffInAllOptionals = 0.8 - @Experimental @Cfg("Add summary comments on each test") - var addTestComments = false + var addTestComments = true @Min(1.0) @Cfg("Max length for test comments. Needed when enumerating some names/values, making comments too long to be" + diff --git a/core/src/main/kotlin/org/evomaster/core/output/service/RestTestCaseWriter.kt b/core/src/main/kotlin/org/evomaster/core/output/service/RestTestCaseWriter.kt index 7fc4678da7..406fe8febc 100644 --- a/core/src/main/kotlin/org/evomaster/core/output/service/RestTestCaseWriter.kt +++ b/core/src/main/kotlin/org/evomaster/core/output/service/RestTestCaseWriter.kt @@ -6,6 +6,7 @@ import org.evomaster.core.output.Lines import org.evomaster.core.output.SqlWriter import org.evomaster.core.output.TestCase import org.evomaster.core.output.TestWriterUtils +import org.evomaster.core.problem.enterprise.EnterpriseActionResult import org.evomaster.core.problem.httpws.HttpWsAction import org.evomaster.core.problem.httpws.HttpWsCallResult import org.evomaster.core.problem.rest.* @@ -512,6 +513,25 @@ class RestTestCaseWriter : HttpWsTestCaseWriter { } } + //TODO move up when adding test comments to other problem types as well + //faults + val faults = ea.map { it.result } + .filterIsInstance() + .flatMap { it.getFaults() } + if(faults.isNotEmpty()){ + if(faults.size == 1){ + lines.addBlockCommentLine("Found 1 potential fault of type-code ${faults.first().category.code}") + } else { + val codes = faults.asSequence().map { it.category.code }.toSet().toList().sorted() + val codeInfo = if (codes.size == 1) { + " of type-code ${codes[0]}" + } else { + ". Type-codes: ${codes.joinToString(", ")}" + } + lines.addBlockCommentLine("Found ${faults.size} potential faults$codeInfo") + } + } + //examples val examples = getAllUsedExamples(ind.individual as RestIndividual) .toSet().sorted() diff --git a/docs/options.md b/docs/options.md index 3c8848a888..511d5bfaeb 100644 --- a/docs/options.md +++ b/docs/options.md @@ -62,6 +62,7 @@ There are 3 types of options: |`SMdR`| __Double__. Specify a probability to apply SMdR when resource sampling strategy is 'Customized'. *Constraints*: `probability 0.0-1.0`. *Default value*: `0.25`.| |`adaptiveGeneSelectionMethod`| __Enum__. Specify a strategy to select genes for mutation adaptively. *Valid values*: `NONE, AWAY_NOIMPACT, APPROACH_IMPACT, APPROACH_LATEST_IMPACT, APPROACH_LATEST_IMPROVEMENT, BALANCE_IMPACT_NOIMPACT, BALANCE_IMPACT_NOIMPACT_WITH_E, ALL_FIXED_RAND`. *Default value*: `APPROACH_IMPACT`.| |`addPreDefinedTests`| __Boolean__. Add predefined tests at the end of the search. An example is a test to fetch the schema of RESTful APIs. *Default value*: `true`.| +|`addTestComments`| __Boolean__. Add summary comments on each test. *Default value*: `true`.| |`advancedBlackBoxCoverage`| __Boolean__. Apply more advanced coverage criteria for black-box testing. This can result in larger generated test suites. *Default value*: `true`.| |`algorithm`| __Enum__. The algorithm used to generate test cases. The default depends on whether black-box or white-box testing is done. *Valid values*: `DEFAULT, SMARTS, MIO, RANDOM, WTS, MOSA, RW`. *Default value*: `DEFAULT`.| |`allowInvalidData`| __Boolean__. When generating data, allow in some cases to use invalid values on purpose. *Default value*: `true`.| @@ -221,7 +222,6 @@ There are 3 types of options: |Options|Description| |---|---| |`abstractInitializationGeneToMutate`| __Boolean__. During mutation, whether to abstract genes for repeated SQL actions. *Default value*: `false`.| -|`addTestComments`| __Boolean__. Add summary comments on each test. *Default value*: `false`.| |`appendToTargetHeuristicsFile`| __Boolean__. Whether should add to an existing target heuristics file, instead of replacing it. It is only used when processFormat is TARGET_HEURISTIC. *Default value*: `false`.| |`bbProbabilityUseDataPool`| __Double__. Specify the probability of using the data pool when sampling test cases. This is for black-box (bb) mode. *Constraints*: `probability 0.0-1.0`. *Default value*: `0.8`.| |`discoveredInfoRewardedInFitness`| __Boolean__. If there is new discovered information from a test execution, reward it in the fitness function. *Default value*: `false`.| From a23966dcccd424c97fb3046ca72c5e60c10cced2 Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Fri, 13 Dec 2024 22:29:05 +0100 Subject: [PATCH 16/17] updated release notes --- release_notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/release_notes.md b/release_notes.md index d7ad91a398..642126a8e3 100644 --- a/release_notes.md +++ b/release_notes.md @@ -5,6 +5,7 @@ Under development in `master` branch. ### New Features - Now EvoMaster is released also on Docker Hub, with id `webfuzzing/evomaster`. However, this is only for black-box mode. For white-box, it is still recommended to use an OS installer or the uber-jar file from release page. +- For improving readability, generated tests now have summary comments (e.g., as JavaDoc for Java/Kotlin outputs). ### Bug Fixes - Fixed missing java.util.Arrays in generated files, leading to compilation errors in some cases involving SQL database resets. From ed30a7319c61604663f6ddc3d5850cae5f59549d Mon Sep 17 00:00:00 2001 From: arcuri82 Date: Sat, 14 Dec 2024 22:09:28 +0100 Subject: [PATCH 17/17] fix for unit tests --- .../core/output/PythonTestCaseWriterTest.kt | 11 ++--------- .../evomaster/core/output/TestCaseWriterTest.kt | 9 ++------- .../org/evomaster/core/output/WriteJsonTest.kt | 11 ++--------- .../org/evomaster/core/output/WriteXMLTest.kt | 11 ++--------- .../org/evomaster/core/output/WriterTestBase.kt | 15 +++++++++++++++ 5 files changed, 23 insertions(+), 34 deletions(-) create mode 100644 core/src/test/kotlin/org/evomaster/core/output/WriterTestBase.kt diff --git a/core/src/test/kotlin/org/evomaster/core/output/PythonTestCaseWriterTest.kt b/core/src/test/kotlin/org/evomaster/core/output/PythonTestCaseWriterTest.kt index 05bdde6fad..2d6767e830 100644 --- a/core/src/test/kotlin/org/evomaster/core/output/PythonTestCaseWriterTest.kt +++ b/core/src/test/kotlin/org/evomaster/core/output/PythonTestCaseWriterTest.kt @@ -15,15 +15,8 @@ import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Test import javax.ws.rs.core.MediaType -class PythonTestCaseWriterTest { - - private fun getConfig(format: OutputFormat): EMConfig { - val config = EMConfig() - config.outputFormat = format - //config.expectationsActive = false - config.testTimeout = -1 - return config - } +class PythonTestCaseWriterTest : WriterTestBase(){ + @Test fun testEmptyTest() { diff --git a/core/src/test/kotlin/org/evomaster/core/output/TestCaseWriterTest.kt b/core/src/test/kotlin/org/evomaster/core/output/TestCaseWriterTest.kt index 5c2d4756e1..1f4b75c8f8 100644 --- a/core/src/test/kotlin/org/evomaster/core/output/TestCaseWriterTest.kt +++ b/core/src/test/kotlin/org/evomaster/core/output/TestCaseWriterTest.kt @@ -29,14 +29,9 @@ import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Test import javax.ws.rs.core.MediaType -class TestCaseWriterTest { +class TestCaseWriterTest : WriterTestBase(){ + - private fun getConfig(format: OutputFormat): EMConfig { - val config = EMConfig() - config.outputFormat = format - config.testTimeout = -1 - return config - } @Test fun testEmptyDbInitialization() { diff --git a/core/src/test/kotlin/org/evomaster/core/output/WriteJsonTest.kt b/core/src/test/kotlin/org/evomaster/core/output/WriteJsonTest.kt index 30f504d87e..d55f9e2197 100644 --- a/core/src/test/kotlin/org/evomaster/core/output/WriteJsonTest.kt +++ b/core/src/test/kotlin/org/evomaster/core/output/WriteJsonTest.kt @@ -19,15 +19,8 @@ import org.evomaster.core.search.gene.sql.SqlPrimaryKeyGene import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test -class WriteJsonTest { - - private fun getConfig(format: OutputFormat): EMConfig { - val config = EMConfig() - config.outputFormat = format - //config.expectationsActive = false - config.testTimeout = -1 - return config - } +class WriteJsonTest : WriterTestBase() { + @Test fun testJSONBEmpty() { diff --git a/core/src/test/kotlin/org/evomaster/core/output/WriteXMLTest.kt b/core/src/test/kotlin/org/evomaster/core/output/WriteXMLTest.kt index 52529e8264..2d7cc66383 100644 --- a/core/src/test/kotlin/org/evomaster/core/output/WriteXMLTest.kt +++ b/core/src/test/kotlin/org/evomaster/core/output/WriteXMLTest.kt @@ -15,15 +15,8 @@ import org.evomaster.core.search.gene.string.StringGene import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test -class WriteXMLTest { - - private fun getConfig(format: OutputFormat): EMConfig { - val config = EMConfig() - config.outputFormat = format - //config.expectationsActive = false - config.testTimeout = -1 - return config - } +class WriteXMLTest : WriterTestBase() { + @Test fun testEmptyXML() { diff --git a/core/src/test/kotlin/org/evomaster/core/output/WriterTestBase.kt b/core/src/test/kotlin/org/evomaster/core/output/WriterTestBase.kt new file mode 100644 index 0000000000..ffa9fb082a --- /dev/null +++ b/core/src/test/kotlin/org/evomaster/core/output/WriterTestBase.kt @@ -0,0 +1,15 @@ +package org.evomaster.core.output + +import org.evomaster.core.EMConfig + +abstract class WriterTestBase { + + + open fun getConfig(format: OutputFormat): EMConfig { + val config = EMConfig() + config.outputFormat = format + config.testTimeout = -1 + config.addTestComments = false + return config + } +} \ No newline at end of file