STAMP-project / dspot

Automatically detect and generate missing assertions for Junit test cases (also known as test amplification)
https://dspot-demo.stamp-project.eu/
GNU Lesser General Public License v3.0
114 stars 28 forks source link

No result when using Dspot #663

Closed MaelAudren closed 5 years ago

MaelAudren commented 5 years ago

Characteristics

Description

I don't manage to generate test from Dspot. I tried various configuration using several amplifiers but I feel like that my tests are never amplilfied. I think that normally Dspot execution should take several minutes but my executions always take less than 20 seconds.

Steps to reproduce

Properties file
# Relative path to the project root.
project=.
# Relative path to the source project from this properties file
src=src/main/java/
# Relative path to the test source project from this properties file
testSrc=src/test/java/
# Java version used
javaVersion=8
# (Optional) Path to the output folder, default to "output_diversify"
outputDirectory=result/all
# (Optional) Filter on the package name containing tests to be amplified ("example" => "example.*")
filter=org.ow2.proactive.catalog.*
classes=build/classes/main/
testClasses=build/classes/test/
Command Line / Options
java -jar dspot-1.2.1-jar-with-dependencies.jar --path-to-properties dspot.properties --automatic-builder GradleBuilder -t  org.ow2.proactive.catalog.* -m pitest.csv 

Other files and URLs

Catalog generated Pitest CSV file

danglotb commented 5 years ago

Hi @MaelAudren

I'm gonna investigate on this.

If you could provide me the logs, it would be great.

To start, I would like to warn you about the value of your testClasses properties, i.e. **testClasses=build/classes/test/**. Unless I'm mistaken, It seems incorrect for me, in particular, the wildcards at the begin.

danglotb commented 5 years ago

I ran the same configuration than you provided: the same properties and the same command line.

I obtained the following result:

[INFO] 2018-12-04 22:12:48 DSpot - Print BucketServiceTest with 4 amplified test cases in result/all

======= REPORT =======
PitMutantScoreSelector: 
The original test suite kills 311 mutants
The amplification results with 2 new tests
it kills 12 more mutants

(It looks like the properties is working as it is. Anyway, I suggest you to fix it to avoid any future problems.)

Please, could you provide me the traces? I need them to investigate further... since I'm not able to reproduce the errors.

I think that normally Dspot execution should take several minutes but my executions always take less than 20 seconds.

This should not happen, please, retry to amplify the following test class: ow2.proactive.catalog.service.BucketServiceTest using the command line option: --test ow2.proactive.catalog.service.BucketServiceTest and enable the verbose mode with the following flag: --verbose.

The whole command line would be:

java -jar dspot-1.2.1-jar-with-dependencies.jar --path-to-properties dspot.properties --automatic-builder GradleBuilder -t  org.ow2.proactive.catalog.service.BucketServiceTest -m pitest.csv --verbose
danglotb commented 5 years ago

I pursued the amplification and it seems that there is a bug in DSpot.

You will observe something like:

[INFO] 2018-12-05 10:39:02 DSpotCompiler - Compiling with -proceedOnError -encoding UTF-8 -cp /home/bdanglot/workspace/catalog/target/dspot/tmp_test_sources:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.antlr/antlr4/4.5.2/cf3ef1fe31e5128928e43015005ebb6ef371717e/antlr4-4.5.2.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.tika/tika-core/1.18/69556697de96cf0b22df846e970dafd29866eee0/tika-core-1.18.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/commons-fileupload/commons-fileupload/1.3.1/c621b54583719ac0310404463d6d99db27e1052c/commons-fileupload-1.3.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.5/6c6c702c89bfff3cd9e80b04d668c5e190d588c6/commons-lang3-3.5.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.7.9/a4c0b14c7dd85bdf4d25da074e90a10fa4b9b88b/jackson-databind-2.7.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.7.9/9b530cec4fd2eb841ab8e79f19fc7cf0ec487b2/jackson-core-2.7.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-annotations/2.7.9/eb356e825cb73da42f7c902a3fe0276fe32b26c8/jackson-annotations-2.7.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-joda/2.7.9/70dfb14af41377c83566c0a5512b1c021426a559/jackson-datatype-joda-2.7.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.7.9/7ff35069e48d134cd53fadf2fcb5ce2e5f09007e/jackson-datatype-jsr310-2.7.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.7.9/18b8f409e2a1c89a0498bbd9b3044bcd32fece83/jackson-datatype-jdk8-2.7.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/2.7.9/36a528abef27cb905e719901130e8e73ec440c08/jackson-jaxrs-base-2.7.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/2.7.9/c19f114d316031203e277f3cc2f6b9671c3e1dd6/jackson-jaxrs-json-provider-2.7.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.module/jackson-module-jaxb-annotations/2.7.9/f6f681a609a0dbc38f1984b47a92f8815a7f73e6/jackson-module-jaxb-annotations-2.7.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.dataformat/jackson-dataformat-cbor/2.7.9/11b3a0779272ed5b2c0815995d1bb2355495f5/jackson-dataformat-cbor-2.7.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.mysema.querydsl/querydsl-jpa/3.7.1/f0414a0cee1edd5bd72be526a21b52c867df6fdc/querydsl-jpa-3.7.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-data-jpa/1.3.3.RELEASE/c1f8f3102650e54259d69c519b45b64fbf5cd25b/spring-boot-starter-data-jpa-1.3.3.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.hibernate/hibernate-entitymanager/5.1.0.Final/30d9f676363010b0958c9b738abc197235766f9c/hibernate-entitymanager-5.1.0.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.hibernate/hibernate-core/5.1.0.Final/1b5ac619df76cfd67222ca7cddcee6b0a5db8d0c/hibernate-core-5.1.0.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-log4j2/1.3.3.RELEASE/15e198561b130fa82d98ef36775bcb61aeaac461/spring-boot-starter-log4j2-1.3.3.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-web/1.3.3.RELEASE/f1ee2657f50844d8682b30a1f40aebff3ad60cce/spring-boot-starter-web-1.3.3.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-web/2.7/6c6cec01d95913355ceb79e47573bd84bbfbf60e/log4j-web-2.7.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.hateoas/spring-hateoas/0.19.0.RELEASE/77b3b15c301d2517356b76304a2670df33ef2e2c/spring-hateoas-0.19.0.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.eclipse.jetty/jetty-servlets/9.2.14.v20151106/a75c78a0ee544073457ca5ee9db20fdc6ed55225/jetty-servlets-9.2.14.v20151106.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/io.springfox/springfox-spring-web/2.6.1/6478ed7e49755b652aac907d42a735349056a6a/springfox-spring-web-2.6.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/io.springfox/springfox-swagger2/2.6.1/73c3a70ec0b10b61c8eb9ef1659131cd78dbbd82/springfox-swagger2-2.6.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/io.springfox/springfox-swagger-ui/2.6.1/4c854c86c91ab36c86fc1a63571a0614c2ea9ab2/springfox-swagger-ui-2.6.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.graphql-java/graphql-java/3.0.0/654cd4914dd26f232596b5aa69d4308900ef20c0/graphql-java-3.0.0.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.16.16/245b50f714bf89ed7659266ace12f9e509d13551/lombok-1.16.16.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.zeroturnaround/zt-zip/1.11/add8fface4c1936787eb4bffe4ea944a13467d53/zt-zip-1.11.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.github.ben-manes.caffeine/caffeine/2.5.2/1c01cf2bbfe3bbd26512a0bb79f843ff705301c/caffeine-2.5.2.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-tomcat/1.3.3.RELEASE/541468d85cc2c94d2b538b0fa07c018847bb9b78/spring-boot-starter-tomcat-1.3.3.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.ow2.proactive_grid_cloud_portal/rest-client/8.2.0-rc1/e27e6967ab460430fffaa52ea513a0e29c0a7344/rest-client-8.2.0-rc1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.google.truth/truth/0.30/9d591b5a66eda81f0b88cf1c748ab8853d99b18b/truth-0.30.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/nl.jqno.equalsverifier/equalsverifier/1.7.7/a5cc3e303304cfdb69d178a31dfecc5003b0761c/equalsverifier-1.7.7.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-core/1.10.19/e8546f5bef4e061d8dd73895b4e8f40e3fe6effe/mockito-core-1.10.19.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.5/2852e6e05fbb95076fc091f6d1780f1f8fe35e0f/commons-io-2.5.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/joda-time/joda-time/2.8.2/d27c24204c5e507b16fec01006b3d0f1ec42aed4/joda-time-2.8.2.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.mysema.querydsl/querydsl-core/3.7.1/4dc982fd273c9a119c593761a27e30fd0a1db756/querydsl-core-3.7.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.21/139535a69a4239db087de9bab0bee568bf8e0b70/slf4j-api-1.7.21.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter/1.3.5.RELEASE/188c658fabbce0d1ccc1ae18a1cf58f566208c78/spring-boot-starter-1.3.5.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-aop/1.3.5.RELEASE/478a50b44faab2ada75583637b9f6e789809d069/spring-boot-starter-aop-1.3.5.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-starter-jdbc/1.3.5.RELEASE/b427aa14a4f3a2fba114bcbb60eae6f83ee86706/spring-boot-starter-jdbc-1.3.5.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/javax.transaction/javax.transaction-api/1.2/d81aff979d603edd90dcd8db2abc1f4ce6479e3e/javax.transaction-api-1.2.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.data/spring-data-jpa/1.9.4.RELEASE/80b83510e67aa085b7d91d2d096d90133ec995de/spring-data-jpa-1.9.4.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aspects/4.2.6.RELEASE/7ed7b15e95eedd551ac979bd8c295256d96cf2ff/spring-aspects-4.2.6.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.jboss.logging/jboss-logging/3.3.0.Final/3616bb87707910296e2c195dc016287080bba5af/jboss-logging-3.3.0.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/dom4j/dom4j/1.6.1/5d3ccc056b6f056dbf0dddfdf43894b9065a8f94/dom4j-1.6.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.hibernate.common/hibernate-commons-annotations/5.0.1.Final/71e1cff3fcb20d3b3af4f3363c3ddb24d33c6879/hibernate-commons-annotations-5.0.1.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.hibernate.javax.persistence/hibernate-jpa-2.1-api/1.0.0.Final/5e731d961297e5a07290bfaf3db1fbc8bbbf405a/hibernate-jpa-2.1-api-1.0.0.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.javassist/javassist/3.18.1-GA/d9a09f7732226af26bf99f19e2cffe0ae219db5b/javassist-3.18.1-GA.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1/aabab3165b8ea936b9360abbf448459c0d04a5a4/geronimo-jta_1.1_spec-1.1.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/antlr/antlr/2.7.7/83cd2cd674a217ade95a4bb83a8a14f351f48bd0/antlr-2.7.7.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.jboss/jandex/2.0.0.Final/3e899258936f94649c777193e1be846387ed54b3/jandex-2.0.0.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.4.1/1153bec315f388b2635c25cf97105ae9dce61b58/log4j-slf4j-impl-2.4.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.4.1/594e5643c9267ac1e91960a6b7315cf368c9ea02/log4j-api-2.4.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.4.1/a5334910f90944575147fd1c1aef9f407c24db99/log4j-core-2.4.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.slf4j/jcl-over-slf4j/1.7.21/331b564a3a42f002a0004b039c1c430da89062cd/jcl-over-slf4j-1.7.21.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.slf4j/jul-to-slf4j/1.7.21/2f22c882ffa479d1e9ff4eb0e8e2c29f2a0871ed/jul-to-slf4j-1.7.21.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-web/4.2.5.RELEASE/49cd2430884b77172aa81e3fc33ef668ea1dab30/spring-web-4.2.5.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-webmvc/4.2.6.RELEASE/7c7ea475d33287e0e3a92e98ccbe0ad6a0dbb9ca/spring-webmvc-4.2.6.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/4.2.6.RELEASE/5efbfccb19efda2956b8977561bf4da6b15b0d0e/spring-aop-4.2.6.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/4.2.6.RELEASE/d4a319fb4d949fb6313f45c929947b9b4e26283e/spring-beans-4.2.6.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/4.2.6.RELEASE/bbf3c8526fe37bb341507f28db17882d4348dbca/spring-context-4.2.6.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/4.2.6.RELEASE/a1c6ef01f18888f51fc5054c65ef4787b7cf0a1e/spring-core-4.2.6.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.eclipse.jetty/jetty-continuation/9.2.16.v20160414/323906b532d0c95fc1179f6a0e9261931f8964b/jetty-continuation-9.2.16.v20160414.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.eclipse.jetty/jetty-http/9.2.16.v20160414/5ce0c06170f0c75d1070b61fbe08a828b036bd9f/jetty-http-9.2.16.v20160414.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.eclipse.jetty/jetty-util/9.2.16.v20160414/e0accd393d4f2db45d39ebe14265301408b29fb6/jetty-util-9.2.16.v20160414.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.eclipse.jetty/jetty-io/9.2.16.v20160414/21b9bd4a4d9e497e5089d351e9256c885563888b/jetty-io-9.2.16.v20160414.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/21.0/3a3d111be1be1b745edfa7d91678a12d7ed38709/guava-21.0.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.plugin/spring-plugin-core/1.2.0.RELEASE/f380e7760032e7d929184f8ad8a33716b75c0657/spring-plugin-core-1.2.0.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.plugin/spring-plugin-metadata/1.2.0.RELEASE/97223fc496b6cab31602eedbd4202aa4fff0d44f/spring-plugin-metadata-1.2.0.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/io.springfox/springfox-spi/2.6.1/972ae720c6a9a5f31be2744972b435cc39166174/springfox-spi-2.6.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/io.swagger/swagger-annotations/1.5.13/72433c890a61a876d22063e269be421c810a1a8d/swagger-annotations-1.5.13.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/io.swagger/swagger-models/1.5.10/da29e4f4f7cff80b1ef134b0f3805013be443e58/swagger-models-1.5.10.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/io.springfox/springfox-schema/2.6.1/b4d837ed7dc726a59504d2e6587e162e071a8965/springfox-schema-2.6.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/io.springfox/springfox-swagger-common/2.6.1/47befb039a0a1f0cdaab74d2777fa9eb6b01f8db/springfox-swagger-common-2.6.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.mapstruct/mapstruct/1.0.0.Final/794bb2c7d3dd69211deb22857d92fb4c5361be3f/mapstruct-1.0.0.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.antlr/antlr4-runtime/4.5.1/7d7288bbe0599b32b844971f270ed001a661357/antlr4-runtime-4.5.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-core/8.0.33/4e7f547fbb2c364cb5e02a58790c5fb89e31efed/tomcat-embed-core-8.0.33.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-el/8.0.33/31423f2d493cf1f7cf5f0082c9f94640e93b8c1b/tomcat-embed-el-8.0.33.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-logging-juli/8.0.33/66bc309e0227c1ba2cf4417182d0b1583003d24b/tomcat-embed-logging-juli-8.0.33.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.tomcat.embed/tomcat-embed-websocket/8.0.33/be1f95e5d9ae00f9bc6138441d29cfe5c7c60256/tomcat-embed-websocket-8.0.33.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/log4j/log4j/1.2.17/5af35056b4d257e4b64b9e8069c0746e8b08629f/log4j-1.2.17.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/commons-cli/commons-cli/1.3.1/1303efbc4b181e5a58bf2e967dc156a3132b97c0/commons-cli-1.3.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/jline/jline/2.14.2/2c743e5de407be1d69b69849afeae49db635e0f6/jline-2.14.2.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpclient/4.5.3/d1577ae15f01ef5438c5afc62162457c00a34713/httpclient-4.5.3.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpmime/4.5.2/22b4c53dd9b6761024258de8f9240c3dce6ea368/httpmime-4.5.2.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.atmosphere/wasync/2.1.2/3086ec4e46b494a4cd60e7c57309ab3ea97f6f45/wasync-2.1.2.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.ow2.proactive/common-api/8.2.0-rc1/feb60c054b348d5af32ecde18397686a936db113/common-api-8.2.0-rc1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.ow2.proactive/common-http/8.2.0-rc1/eedc1d6d6289fb3cde63e865e79e8ca60b353dc/common-http-8.2.0-rc1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.ow2.proactive_grid_cloud_portal/rest-api/8.2.0-rc1/df8cbbc4e283bee26536e5cf9576b71d56b1a6d7/rest-api-8.2.0-rc1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.ow2.proactive/scheduler-api/8.2.0-rc1/356421b503a02ac5a9efe330b732c31f3501fbdd/scheduler-api-8.2.0-rc1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-log4j12/1.7.21/7238b064d1aba20da2ac03217d700d91e02460fa/slf4j-log4j12-1.7.21.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/xerces/xercesImpl/2.11.0/9bb329db1cfc4e22462c9d6b43a8432f5850e92c/xercesImpl-2.11.0.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.0.8/54e2d56cb157df08cbf183149bcf50c9f5151ed4/error_prone_annotations-2.0.8.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.objenesis/objenesis/2.1/87c0ea803b69252868d09308b4618f766f135a96/objenesis-2.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/1.3.9/40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf/jsr305-1.3.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.mysema.commons/mysema-commons-lang/0.2.4/d09c8489d54251a6c22fbce804bdd4a070557317/mysema-commons-lang-0.2.4.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.infradna.tool/bridge-method-annotation/1.13/18cdce50cde6f54ee5390d0907384f72183ff0fe/bridge-method-annotation-1.13.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot/1.3.5.RELEASE/b218ba5f3bd01e657fbde9b085722da1fafa4f8a/spring-boot-1.3.5.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.boot/spring-boot-autoconfigure/1.3.5.RELEASE/2bcfa86bb3afd95eff5252db6d78f2693b706997/spring-boot-autoconfigure-1.3.5.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.16/d64fb662c9e42789149f5078a62a22edda786c6a/snakeyaml-1.16.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.aspectj/aspectjweaver/1.8.9/db28774f477f07220eac18d5ec9c4e01f48589d7/aspectjweaver-1.8.9.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.tomcat/tomcat-jdbc/8.0.33/7f1b6d609f9c2e045e8d7759e96605841fffdf82/tomcat-jdbc-8.0.33.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jdbc/4.2.6.RELEASE/16075bfb0901a5b89c5be975365ff09b2df04abb/spring-jdbc-4.2.6.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework.data/spring-data-commons/1.11.4.RELEASE/c2b1fd4dbf7dff772d6124bb35892759e8bf088e/spring-data-commons-1.11.4.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-orm/4.2.6.RELEASE/2ef30e836028ebe4dbba0d8355929625a758ed8d/spring-orm-4.2.6.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-tx/4.2.6.RELEASE/ba7502c0644414748b1eeb65b4193b05d335a110/spring-tx-4.2.6.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.springframework/spring-expression/4.2.6.RELEASE/c0182d73f348ab11d51d45cbe29f3820c32d0ccc/spring-expression-4.2.6.RELEASE.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/aopalliance/aopalliance/1.0/235ba8b489512805ac13a8f9ea77a1ca5ebe3e8/aopalliance-1.0.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.1.1/5043bfebc3db072ed80fbd362e7caf00e885d8ae/commons-logging-1.1.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/io.springfox/springfox-core/2.6.1/5c502e6b9d50d34096077eacc384cd00f63710e1/springfox-core-2.6.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.4.4/b31526a230871fbe285fbcbe2813f9c0839ae9b0/httpcore-4.4.4.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.ning/async-http-client/1.9.20/35873163b7d5043ab8f921d3f5e66fdb98abdc43/async-http-client-1.9.20.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.objectweb.proactive/programming-annotation/8.2.0-rc1/cda9930119e92c49a645a29b36e4cba015c4a06f/programming-annotation-8.2.0-rc1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.objectweb.proactive/programming-util/8.2.0-rc1/640654b308f0721f17e386e0c7a813685a4c2a57/programming-util-8.2.0-rc1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.jboss.resteasy/resteasy-jackson-provider/3.0.17.Final/e655ed57f11291947da4afe3e68086884ec1f131/resteasy-jackson-provider-3.0.17.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.jboss.resteasy/resteasy-multipart-provider/3.0.17.Final/7aff5c8cbbb95b72c3b68d0b48cbdcb0dfa2f8b4/resteasy-multipart-provider-3.0.17.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.objectweb.proactive/programming-extension-dataspaces-common/8.2.0-rc1/d5cf50c4010afcecf67cab00850a0645fdbc5b82/programming-extension-dataspaces-common-8.2.0-rc1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/it.sauronsoftware.cron4j/cron4j/2.2.5/da0dd0edee48b570cd1e23895e0ac80e09eb272b/cron4j-2.2.5.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-collections4/4.0/da217367fd25e88df52ba79e47658d4cf928b0d1/commons-collections4-4.0.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/msv/isorelax/20050913/b21859c352bd959ea22d06b2fe8c93b2e24531b9/isorelax-20050913.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/msv/msv/20050913/3fc5ca9708a8e7a219001da0bc3870d0a2d51c2d/msv-20050913.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml.woodstox/woodstox-core/5.0.1/13a9863ea0153c8b3353dacecee37a139d80b649/woodstox-core-5.0.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/msv/relaxngDatatype/20050913/b117e0f9182c6cc094e833489bcdddadfd414090/relaxngDatatype-20050913.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/msv/xsdlib/20050913/836b85d70c54589aeef2ea810232ab192137ea84/xsdlib-20050913.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.tomcat/tomcat-juli/8.0.33/330aecfa895156cea91c576cb6609537152761f9/tomcat-juli-8.0.33.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/io.netty/netty/3.10.1.Final/ca63e69a44f86ce822c73fee02267de6526acb68/netty-3.10.1.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.codehaus.jackson/jackson-core-asl/1.9.12/ecfc6f73a841c4c3c653b59651a3f9d5f1286469/jackson-core-asl-1.9.12.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.codehaus.jackson/jackson-mapper-asl/1.9.12/8b290aae44213e2f6da00c07af59b0d442068f4d/jackson-mapper-asl-1.9.12.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.codehaus.jackson/jackson-jaxrs/1.9.12/8bc0bc2e095fd1b83af48b03f67f2ad16e829c01/jackson-jaxrs-1.9.12.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.codehaus.jackson/jackson-xc/1.9.12/2ec470401d7ac760481c84e95be8c66f19f92d2e/jackson-xc-1.9.12.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.jboss.resteasy/resteasy-jaxrs/3.0.17.Final/cddcf44126949f1da1675ef85ee4bcaecde5e524/resteasy-jaxrs-3.0.17.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.jboss.resteasy/resteasy-client/3.0.17.Final/118ed4ecca4994ed2df4d315d3ebaa19f5571cd9/resteasy-client-3.0.17.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.jboss.resteasy/resteasy-jaxb-provider/3.0.17.Final/897e60634f401548fd2d6289cc3cc3d10f80d08d/resteasy-jaxb-provider-3.0.17.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.sun.mail/javax.mail/1.5.5/ffcd34b5de820f35bcc9303649cf6ab2c65ad44e/javax.mail-1.5.5.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.james/apache-mime4j/0.6/945007627e8d12275d755081a9e609c018e1210d/apache-mime4j-0.6.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-vfs2/2.1.1744488.1/af8c7d2da3d7d04a42a59e746b6fcce17ea15988/commons-vfs2-2.1.1744488.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.codehaus.woodstox/stax2-api/3.1.4/ac19014b1e6a7c08aad07fe114af792676b685b7/stax2-api-3.1.4.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.jboss.spec.javax.ws.rs/jboss-jaxrs-api_2.0_spec/1.0.0.Final/dbf29e00dee135ef537b94167aa08b883f4d4cbf/jboss-jaxrs-api_2.0_spec-1.0.0.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/org.jboss.spec.javax.annotation/jboss-annotations-api_1.2_spec/1.0.0.Final/6d7ff02a645227876ed550900d32d618b8f0d556/jboss-annotations-api_1.2_spec-1.0.0.Final.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/javax.activation/activation/1.1.1/485de3a253e23f645037828c07f1d7f1af40763a/activation-1.1.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/net.jcip/jcip-annotations/1.0/afba4942caaeaf46aab0b976afd57cc7c181467e/jcip-annotations-1.0.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-impl/2.2.7/a29e53347934e694c9551981cecd242fad05022b/jaxb-impl-2.2.7.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind/jaxb-core/2.2.7/f327817188a7dce503ae3c667c5931077630b0a1/jaxb-core-2.2.7.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.sun.xml.fastinfoset/FastInfoset/1.2.12/e8c1c096162a146c2d84135c5036edf54c1b1d38/FastInfoset-1.2.12.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/javax.xml.bind/jaxb-api/2.2.7/2f51c4bb4724ea408096ee9100ff2827e07e5b7c/jaxb-api-2.2.7.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.sun.istack/istack-commons-runtime/2.16/927eb6fbb003f40d536efd96e7cbcb7ea4c1c2d0/istack-commons-runtime-2.16.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/javax.xml.bind/jsr173_api/1.0/c79b8431c3104315c0aeaed7bf23d0ab0edbaa09/jsr173_api-1.0.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/com.fasterxml/classmate/1.3.1/2ad2fd09dcf5607ca96f8ef432096a96986c40a/classmate-1.3.1.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.10/4b95f4897fa13f2cd904aee711aeafc0c5295cd8/commons-codec-1.10.jar:/home/bdanglot/.gradle/caches/modules-2/files-2.1/xml-apis/xml-apis/1.4.01/3789d9fada2d3d458c4ba2de349d48780f381ee3/xml-apis-1.4.01.jar:/home/bdanglot/workspace/catalog/build/classes/main/:/home/bdanglot/workspace/catalog/target/test-classes/:/home/bdanglot/workspace/catalog/target/dspot/dependencies/: -d /home/bdanglot/workspace/catalog/target/test-classes -1.8 -preserveAllLocals -noExit -enableJavadoc -proc:none /home/bdanglot/workspace/catalog/target/dspot/tmp_test_sources/org/ow2/proactive/catalog/service/AuthorizationServiceTest.java
[ERROR] 2018-12-05 10:39:02 TestCompiler - Error(s) during compilation:
[ERROR] 2018-12-05 10:39:02 TestCompiler - Pb(100) The method builder() is undefined for the type AuthorizationServiceTest
[ERROR] 2018-12-05 10:39:02 TestCompiler - Pb(100) The method builder() is undefined for the type AuthorizationServiceTest
[ERROR] 2018-12-05 10:39:02 TestCompiler - Pb(100) The method builder() is undefined for the type AuthorizationServiceTest
[ERROR] 2018-12-05 10:39:02 TestCompiler - Pb(100) The method builder() is undefined for the type AuthorizationServiceTest
[ERROR] 2018-12-05 10:39:02 TestCompiler - Pb(100) The method builder() is undefined for the type AuthorizationServiceTest
[ERROR] 2018-12-05 10:39:02 TestCompiler - Pb(100) The method builder() is undefined for the type AuthorizationServiceTest

What happens is that when DSpot prints the current java class, something bad happens (e.g. a field access disappear).

I think this problem is related to INRIA/Spoon#2780

I'm gonna investigate.

danglotb commented 5 years ago

I look closer to the errors.

It appears that Spoon does not support lombok annotation.

In the example of the previous message, the method builder() should be generated by the annotation @Builder, see this kind of class:

/*
 * ProActive Parallel Suite(TM):
 * The Open Source library for parallel and distributed
 * Workflows & Scheduling, Orchestration, Cloud Automation
 * and Big Data Analysis on Enterprise Grids & Clouds.
 *
 * Copyright (c) 2007 - 2017 ActiveEon
 * Contact: contact@activeeon.com
 *
 * This library is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Affero General Public License
 * as published by the Free Software Foundation: version 3 of
 * the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 *
 * If needed, contact us to obtain a release under GPL Version 2 or 3
 * or a different license than the AGPL.
 */
package org.ow2.proactive.catalog.graphql.bean.argument;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author ActiveEon Team
 * @since 12/06/2017
 */
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class CatalogObjectWhereArgs {

    @JsonProperty("AND")
    private List<CatalogObjectWhereArgs> andArg;

    @JsonProperty("OR")
    private List<CatalogObjectWhereArgs> orArg;

    private CatalogObjectMetadataArgs metadataArg;

    private CatalogObjectBucketNameWhereArgs bucketNameArg;

    private CatalogObjectKindWhereArgs kindArg;

    private CatalogObjectNameWhereArgs nameArg;

}

I'm gonna raise a new issue on Spoon's GitHub repository. Best.

danglotb commented 5 years ago

I found a workaround and opened #665.

However, I'm skeptical about this, since the amplified test methods won't use the imports and will be less readable.

@monperrus what do you think?

MaelAudren commented 5 years ago

Thanks a lot I manage to generate tests using the command line: java -jar dspot-1.2.1-jar-with-dependencies.jar --path-to-properties dspot.properties --automatic-builder GradleBuilder -t org.ow2.proactive.catalog.service.BucketServiceTest -m pitest.csv --verbose>trace.log

MaelAudren commented 5 years ago

@danglotb I manage to reproduce the spoon bug. The bug can easily reproduced by running the following command: java -jar dspot-1.2.1-jar-with-dependencies.jar --path-to-properties dspot.properties --automatic-builder GradleBuilder -t org.ow2.proactive.catalog.service.CatalogObjectServiceTest -m pitest.csv --verbose>trace.log I already have tested all the classes and it seems that only the class CatalogObjectServiceTest makes spoon crash. Here is the exception:

Exception in thread "main" spoon.SpoonException: Explicit modifier not found
    at spoon.support.compiler.jdt.PositionBuilder.setModifiersPosition(PositionBuilder.java:525)
    at spoon.support.compiler.jdt.PositionBuilder.buildPositionCtElement(PositionBuilder.java:283)
    at spoon.support.compiler.jdt.ContextBuilder.enter(ContextBuilder.java:98)
    at spoon.support.compiler.jdt.JDTTreeBuilderHelper.createType(JDTTreeBuilderHelper.java:624)
    at spoon.support.compiler.jdt.JDTTreeBuilder.visit(JDTTreeBuilder.java:1651)
    at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1349)
    at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(CompilationUnitDeclaration.java:783)
    at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(CompilationUnitDeclaration.java:744)
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildModel(JDTBasedSpoonCompiler.java:475)
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildUnitsAndModel(JDTBasedSpoonCompiler.java:390)
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildSources(JDTBasedSpoonCompiler.java:339)
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.build(JDTBasedSpoonCompiler.java:122)
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.build(JDTBasedSpoonCompiler.java:105)
    at spoon.Launcher.buildModel(Launcher.java:767)
    at eu.stamp_project.utils.compilation.TestCompiler.getNewModelCtClass(TestCompiler.java:199)
    at eu.stamp_project.utils.compilation.TestCompiler.compileAndDiscardUncompilableMethods(TestCompiler.java:151)
    at eu.stamp_project.utils.compilation.TestCompiler.compileAndDiscardUncompilableMethods(TestCompiler.java:119)
    at eu.stamp_project.utils.compilation.TestCompiler.compileAndRun(TestCompiler.java:92)
    at eu.stamp_project.utils.compilation.TestCompiler.compileRunAndDiscardUncompilableAndFailingTestMethods(TestCompiler.java:54)
    at eu.stamp_project.dspot.Amplification.amplification(Amplification.java:77)
    at eu.stamp_project.dspot.DSpot._amplify(DSpot.java:244)
    at eu.stamp_project.dspot.DSpot.lambda$amplifyTestClassesTestMethods$6(DSpot.java:223)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
    at eu.stamp_project.dspot.DSpot.amplifyTestClassesTestMethods(DSpot.java:224)
    at eu.stamp_project.Main.run(Main.java:70)
    at eu.stamp_project.Main.main(Main.java:41)

Here is the trace: trace.log

MaelAudren commented 5 years ago

@danglotb thanks a lot for the help. I'm able to generate tests now, I can continue my work.

danglotb commented 5 years ago

Thank you @MaelAudren

I'll have a look at this.

danglotb commented 5 years ago

I did find a compromise in #665.

I recall the problem. When DSpot ends the amplification, it outputs the amplified test class using imports, i.e. replaces all full qualified names with imports statement.

The problem is when you use generation of code, such as Lombok annotations, Spoon (the library that manipulates the java code in DSpot) is not able to find this code. For instance, the @Builder allows you to call a static method named builder(). This should be called as follow: MyClassWithBuilderAnnotation.builder();. Since Spoon, and so DSpot, cannot find the builder(), it just outputs builder().

The avoid the problem, we can disable the mode autoImports of Spoon, and then Spoon will output all the access using the qualified name and thus keeps MyClassWithBuilderAnnotation.builder();.

The problem is that, without imports, an amplified test class is (very) unreadable.

To workaround, here what I proposed:

  1. Outputs the amplified test class using imports.
  2. Compile it.
  3. If there is a problem, .e.g. it outputted builder(); instead of MyClassWithBuilderAnnotation.builder();, re-print it without imports

In this way, the "standard" output of DSpot uses imports, unless there is a problem.