Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
61662c2
Initial commit for thesis_lg
Jul 12, 2022
afce274
Merge pull request #1 from VariantSync/main
guethilu Jul 12, 2022
b5a66e8
Added EdgeTypedTree infrastructure
guethilu Aug 24, 2022
ade2837
Changed output directory
guethilu Sep 14, 2022
1cfcd81
Added multiple edge type tree
guethilu Sep 14, 2022
435437e
Added Nesting edge Type to EdgeTypedTreeDiff
guethilu Sep 14, 2022
655280d
Renamed EdgeTypedTreeDiff to EdgeTypedDiff
guethilu Oct 4, 2022
920abd9
Complexity eval and optimizations
guethilu Oct 19, 2022
68baac3
Added EdgeTypedDiff LineGraphExport, renamed PatternValidationTask to…
guethilu Oct 27, 2022
39c78af
Correct Prefix for Edge Typed Line Graphs
guethilu Oct 27, 2022
e943c6c
Eval Run Changes
guethilu Nov 3, 2022
c8575eb
Merge branch 'develop' into thesis_lg
guethilu Nov 4, 2022
ab14276
Merged develop into thesis_lg + adaptions
guethilu Nov 4, 2022
608ce04
Added Patch Detail recording
guethilu Nov 10, 2022
87cb75f
Added node counts to Patch Detail recording
guethilu Nov 10, 2022
4575f83
Final implementation for the thesis
guethilu Dec 6, 2022
571147b
More information export + fixed wrong commit counts
guethilu Mar 1, 2023
e0392bd
Merge pull request #3 from VariantSync/main
guethilu Mar 15, 2023
6b52be2
Merge pull request #4 from guethilu/main
guethilu Mar 15, 2023
4cf7996
Paper Ready Artefact
guethilu Jun 8, 2023
604d460
Paper Ready Artefact
guethilu Jun 8, 2023
74d934a
Added Docker build environment for replication
guethilu Jun 8, 2023
b05aba0
Added Documentation for reproducible artifact
guethilu Jun 8, 2023
b207b88
Update README.md
guethilu Jun 8, 2023
40a68d0
Update README.md
guethilu Jun 8, 2023
0628eca
Update README.md
guethilu Jun 9, 2023
f02a717
Update README.md
guethilu Jun 9, 2023
e1b423f
Update README.md
guethilu Dec 1, 2023
3791a7b
Merge branch 'thesis_lg' into splc23-explanations
guethilu Dec 6, 2023
dab27e0
Merge pull request #6 from guethilu/splc23-explanations
guethilu Dec 6, 2023
d6ac9f6
Artifact ready for VaMoS
guethilu Dec 6, 2023
0e24c06
Artifact ready for VaMoS
guethilu Dec 6, 2023
eefccd1
Updated INSTALL.md
guethilu Dec 6, 2023
5ba8781
added DOI in README.md
guethilu Dec 6, 2023
07f44e9
Update README.md
guethilu Dec 6, 2023
8e4ea89
Update README.md
guethilu Dec 6, 2023
d3fb4e4
Update README.md
guethilu Dec 6, 2023
ccbc284
Update README.md
guethilu Dec 6, 2023
738361e
Delete STATUS.md
guethilu Dec 6, 2023
336a21d
Update INSTALL.md
guethilu Dec 6, 2023
0720333
Update README.md
guethilu Dec 6, 2023
28fa2f2
Update README.md
guethilu Dec 6, 2023
63860ab
added appendix for vamos paper
guethilu Dec 7, 2023
542c998
appendix without review
guethilu Dec 7, 2023
4fa51fb
Update README.md
guethilu Dec 7, 2023
2a449c7
Changed verification dataset
guethilu Dec 7, 2023
cbec68b
update appendix
guethilu Dec 7, 2023
c69cdc4
Delete fse appendix.pdf
guethilu Dec 7, 2023
b1b8527
Update INSTALL.md
guethilu Dec 7, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 24 additions & 72 deletions INSTALL.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
# Installation
## Installation Instructions
In the following, we describe how to replicate the validation from our paper (Section 5) step-by-step.
In the following, we describe how to replicate the evaluation from our paper step-by-step.
The instructions explain how to build the Docker image and run the validation in a Docker container.

### 1. Install Docker (if required)
How to install Docker depends on your operating system:
### 1. Start Docker

- _Windows or Mac_: You can find download and installation instructions [here](https://www.docker.com/get-started).
- _Linux Distributions_: How to install Docker on your system, depends on your distribution. The chances are high that Docker is part of your distributions package database.
Docker's [documentation](https://docs.docker.com/engine/install/) contains instructions for common distributions.

Then, start the docker deamon.
Start the docker daemon.

### 2. Open a Suitable Terminal
```
Expand All @@ -31,10 +26,18 @@ Clone this repository to a directory of your choice using git:
```shell
git clone https://github.com/VariantSync/DiffDetective.git
```
Then, navigate to the root of your local clone of this repository:
Then, navigate to the root of your local clone of this repository
```shell
cd DiffDetective
```
and checkout the branch of the replication:
```shell
git checkout vamos24_explanations
```
Finally, navigate to the replication directory
```shell
cd replication/VaMoS24-explanations
```

### 3. Build the Docker Container
To build the Docker container you can run the `build` script corresponding to your operating system:
Expand All @@ -45,9 +48,9 @@ To build the Docker container you can run the `build` script corresponding to yo
./build.sh
```

## 4. Verification & Replication
## 4. Replication

### Running the Replication or Verification
### Running the Replication
To execute the replication you can run the `execute` script corresponding to your operating system with `replication` as first argument.

#### Windows:
Expand All @@ -57,10 +60,9 @@ To execute the replication you can run the `execute` script corresponding to you

> WARNING!
> The replication will at least require an hour and might require up to a day depending on your system.
> Therefore, we offer a short verification (5-10 minutes) which runs DiffDetective on only four of the datasets.
> You can run it by providing "verification" as argument instead of "replication" (i.e., `.\execute.bat verification`, `./execute.sh verification`).
> If you want to stop the execution, you can call the provided script for stopping the container in a separate terminal.
> When restarted, the execution will continue processing by restarting at the last unfinished repository.
> If you want to replicate parts of the evaluation on a subset of the datasets, run the replication on a custom dataset (see below for instructions).
> #### Windows:
> `.\stop-execution.bat`
> #### Linux/Mac (bash):
Expand All @@ -69,61 +71,11 @@ To execute the replication you can run the `execute` script corresponding to you
You might see warnings or errors reported from SLF4J like `Failed to load class "org.slf4j.impl.StaticLoggerBinder"` which you can safely ignore.
Further troubleshooting advice can be found at the bottom of this file.

The results of the verification will be stored in the [results](results) directory.
The results of the verification will be stored in the [results](../../results) directory.

### Expected Output of the Verification
The aggregated results of the verification/replication can be found in the following files.
The example file content shown below should match your results when running the _verification_.
(Note that the links below only have a target _after_ running the replication or verification.)

- The [speed statistics](results/validation/current/speedstatistics.txt) contain information about the total runtime, median runtime, mean runtime, and more:
```
#Commits: 24701
Total commit process time is: 14.065916666666668min
Fastest commit process time is: d86e352859e797f6792d6013054435ae0538ef6d___xfig___0ms
Slowest commit process time is: 9838b7032ea9792bec21af424c53c07078636d21___xorg-server___7996ms
Median commit process time is: f77ffeb9b26f49ef66f77929848f2ac9486f1081___tcl___13ms
Average commit process time is: 34.166835350795516ms
```
- The [classification results](results/validation/current/ultimateresult.metadata.txt) contain information about how often each pattern was matched, and more.
```
repository: <NONE>
total commits: 42323
filtered commits: 7425
failed commits: 0
empty commits: 10197
processed commits: 24701
tree diffs: 80751
fastestCommit: 518e205b06d0dc7a0cd35fbc2c6a4376f2959020___xorg-server___0ms
slowestCommit: 9838b7032ea9792bec21af424c53c07078636d21___xorg-server___7996ms
runtime in seconds: 853.9739999999999
runtime with multithreading in seconds: 144.549
treeformat: org.variantsync.diffdetective.diff.difftree.serialize.treeformat.CommitDiffDiffTreeLabelFormat
nodeformat: org.variantsync.diffdetective.mining.formats.ReleaseMiningDiffNodeFormat
edgeformat: org.variantsync.diffdetective.mining.formats.DirectedEdgeLabelFormat with org.variantsync.diffdetective.mining.formats.ReleaseMiningDiffNodeFormat
analysis: org.variantsync.diffdetective.validation.PatternValidationTask
#NON nodes: 0
#ADD nodes: 0
#REM nodes: 0
filtered because not (is not empty): 212
AddToPC: { total = 443451; commits = 22470 }
AddWithMapping: { total = 51036; commits = 2971 }
RemFromPC: { total = 406809; commits = 21384 }
RemWithMapping: { total = 36622; commits = 2373 }
Specialization: { total = 7949; commits = 1251 }
Generalization: { total = 11057; commits = 955 }
Reconfiguration: { total = 3186; commits = 381 }
Refactoring: { total = 4862; commits = 504 }
Untouched: { total = 0; commits = 0 }
#Error[conditional macro without expression]: 2
#Error[#else after #else]: 2
#Error[#else or #elif without #if]: 11
#Error[#endif without #if]: 12
#Error[not all annotations closed]: 8
```

Moreover, the results comprise the (LaTeX) tables that are part of our paper and appendix.
The processing times might deviate because performance depends on your hardware.

The [results](../../results) directory contains a folder relationshipEdges. This folder contains the statistics for every repository, i.e., total run time, run times per commit, fastest/slowest commit, and statistics about the constructed edge-typed variation diffs, and all analysed variation diffs in linegraph format.

### (Optional) Running DiffDetective on Custom Datasets
You can also run DiffDetective on other datasets by providing the path to the dataset file as first argument to the execution script:
Expand All @@ -133,27 +85,27 @@ You can also run DiffDetective on other datasets by providing the path to the da
#### Linux/Mac (bash):
`./execute.sh path/to/custom/dataset.md`

The input file must have the same format as the other dataset files (i.e., repositories are listed in a Markdown table). You can find [dataset files](docs/datasets.md) in the [docs](docs) folder.
The input file must have the same format as the other dataset files (i.e., repositories are listed in a Markdown table). You can find [dataset files](../../docs/datasets/all.md) in the [docs/datasets](../../docs/datasets) folder.

## Troubleshooting

### 'Got permission denied while trying to connect to the Docker daemon socket'
`Problem:` This is a common problem under Linux, if the user trying to execute Docker commands does not have the permissions to do so.
`Problem:` This is a common problem under Linux, if the user trying to execute Docker commands does not have the permissions to do so.

`Fix:` You can fix this problem by either following the [post-installation instructions](https://docs.docker.com/engine/install/linux-postinstall/), or by executing the scripts in the replication package with elevated permissions (i.e., `sudo`).

### 'Unable to find image 'replication-package:latest' locally'
`Problem:` The Docker container could not be found. This either means that the name of the container that was built does not fit the name of the container that is being executed (this only happens if you changed the provided scripts), or that the Docker container was not built yet.
`Problem:` The Docker container could not be found. This either means that the name of the container that was built does not fit the name of the container that is being executed (this only happens if you changed the provided scripts), or that the Docker container was not built yet.

`Fix:` Follow the instructions described above in the section `Build the Docker Container`.

### No results after verification, or 'cannot create directory '../results/validation/current': Permission denied'
`Problem:` This problem can occur due to how permissions are managed inside the Docker container. More specifically, it will appear, if Docker is executed with elevated permissions (i.e., `sudo`) and if there is no [results](results) directory because it was deleted manually. In this case, Docker will create the directory with elevated permissions, and the Docker user has no permissions to access the directory.
`Problem:` This problem can occur due to how permissions are managed inside the Docker container. More specifically, it will appear, if Docker is executed with elevated permissions (i.e., `sudo`) and if there is no [results](../../results) directory because it was deleted manually. In this case, Docker will create the directory with elevated permissions, and the Docker user has no permissions to access the directory.

`Fix:` If there is a _results_ directory, delete it with elevated permission (e.g., `sudo rm -r results`).
`Fix:` If there is a _results_ directory, delete it with elevated permission (e.g., `sudo rm -r results`).
Then, create a new _results_ directory without elevated permissions, or execute `git restore .` to restore the deleted directory.

### Failed to load class "org.slf4j.impl.StaticLoggerBinder"
`Problem:` An operation within the initialization phase of the logger library we use (tinylog) failed.

`Fix:` Please ignore this warning. Tinylog will fall back onto a default implementation (`Defaulting to no-operation (NOP) logger implementation`) and logging will work as expected.
`Fix:` Please ignore this warning. Tinylog will fall back onto a default implementation (`Defaulting to no-operation (NOP) logger implementation`) and logging will work as expected.
Loading