diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index eb9ca9548f38576f3679ebcec53a1cdd61d2202c..0000000000000000000000000000000000000000 --- a/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: java -jdk: - - oraclejdk8 -install: true -script: - - scripts/get-neo4j.sh - - ./gradlew inits build -x :trainbenchmark-generator-sql:test -x :trainbenchmark-tool-mysql:test -x :trainbenchmark-tool-rdf4j:test -x :trainbenchmark-tool-blazegraph:test --stacktrace -notifications: - slack: ftsrg:YMFDeJB1YkOli9BXOKvtoB1Y - email: false - on_success: change - on_failure: always -branches: - except: - - ingraph diff --git a/Dockerfile b/Dockerfile index a88d0b1b5914e4a78d5a600d913fc6feba549bba..026776b4e690f033131d57e418b3e47eb4c58153 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,9 +29,9 @@ RUN Rscript /trainbenchmark/trainbenchmark-reporting/install.R WORKDIR /trainbenchmark COPY trainbenchmark/ /trainbenchmark/ -RUN sudo chown -R user:user /trainbenchmark +RUN chown -R user:user /trainbenchmark COPY docker /trainbenchmark/docker -RUN sudo chown -R user:user /trainbenchmark/docker +RUN chown -R user:user /trainbenchmark/docker COPY docker/bashrc /home/user/.bashrc RUN ./gradlew --no-daemon preprocess diff --git a/README.md b/README.md index 2d4f99e7c88809255dccdcca4c16b04c2e994f16..835c6bc7012c2164a2d3b4e2fc30a29e7b65c367 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,27 @@ The following table shows the relation of the terminology used in the paper and ## The Grammar Extension Preprocessor `RelAst` +To transform the grammar extension we provide a preprocessor for JastAdd +This preprocessor including its source code is provided in the `preprocessor` subdirectory. + +Its usage is: +- Running the preprocessor `java -jar relast-compiler.jar` +Run preprocessor on train benchmark (output written to standard output): + + - `cat examples/TrainBenchmark.relast` + - `java -jar relast-compiler.jar examples/TrainBenchmark.relast` + +Run preprocessor and write output to files: + + `java -jar relast-compiler.jar examples/TrainBenchmark.relast --file` + `cat examples/TrainBenchmarkGen.ast` + `cat examples/TrainBenchmarkGen.jadd` + +Run preprocessor and write output to files (with a different list class): + + `java -jar relast-compiler.jar examples/TrainBenchmark.relast --listClass=MyListClass --file` + `cat examples/TrainBenchmarkGen.ast` + `cat examples/TrainBenchmarkGen.jadd` ## The Train Benchmark @@ -117,9 +138,47 @@ However, since there are some software requirements imposed by the benchmark, pa #### Running the Benchmark with Docker +##### Loading the Docker Image -#### Running the Benchmark directly +- Variant 1 (recommended): Load the provided docker image + - Prerequisites: An installation of Docker in the `PATH` + - Steps: + - Unpack the provided archive and open a terminal in the extracted directory + - `docker load --input trainbenchmark-docker.tar` +- Variant 2: Build the docker image from the provided Dockerfile + - Prerequisites: An installation of Docker in the `PATH` + - Steps: + - Unpack the provided archive and open a terminal in the extracted directory + - `docker build -t trainbenchmark .` + - `docker run -it trainbenchmark` +##### Running the Docker Image +- `docker run -it trainbenchmark` + To make the results available outside the container, run + `docker run -it -v "$PWD"/docker-results:/trainbenchmark/results:Z -v "$PWD"/docker-diagrams:/trainbenchmark/diagrams:Z trainbenchmark` +- A command prompt is opened and some information is displayed +- Follow the instructions below +#### Running the Benchmark directly +- For running a standard run, + - `./run_small` + - `./run_medium` + - `./run_full` +- For running a custom run, + - run `./gradlew preprocess` to generate the + - run `./gradlew build shadowJar -x test` + - run `./gradlew initScripts` + - configure the scripts either by running `./scripts/configure.sh 1 <MAXSIZE> <TIMEOUT in s> <REPETITIONS>` + Where MAXSIZE is one of 2,4,8,16,32,64,128,256,512,1024. The larger sizes use **a lot of** disk space! + - *Alternatively*, run `` + - run `./gradlew initScripts` + - run `./gradlew generate` + - run the benchmark + - run `./gradlew individualInjectBenchmark` for the *inject* scenarios + - run `./gradlew individualRepairBenchmark` for the *repair* scenarios + - Plot the diagrams for the current run: `./gradlew plotIndividual` + +- The resulting data are in the `results` and the `diagrams` folder + - When running with docker, the data are also in `docker-results` and `docker-diagrams` on the host machine.