|
| 1 | +# Installation |
| 2 | +## Installation Instructions |
| 3 | +In the following, we describe how to build the Docker image and run the experiments in Docker containers. |
| 4 | + |
| 5 | +### Install Docker (if required) |
| 6 | +How you can install Docker depends on your OS. |
| 7 | +#### Windows or Mac |
| 8 | +You can find download and installation instructions [here](https://www.docker.com/get-started). |
| 9 | +#### Linux Distributions |
| 10 | +How you can install Docker on your system, depends on your distribution. However, the chances are high that Docker is part of your distributions package database. |
| 11 | +Docker's [documentation](https://docs.docker.com/engine/install/) contains instructions for common distributions. |
| 12 | + |
| 13 | +### Open a suitable terminal |
| 14 | +``` |
| 15 | +# Windows Command Prompt: |
| 16 | + - Press 'Windows Key + R' on your keyboard |
| 17 | + - Type in 'cmd' |
| 18 | + - Click 'OK' or press 'Enter' on your keyboard |
| 19 | + |
| 20 | +# Windows PowerShell: |
| 21 | + - Open the search bar (Default: 'Windows Key') and search for 'PowerShell' |
| 22 | + - Start the PowerShell |
| 23 | + |
| 24 | +# Linux: |
| 25 | + - Press 'ctrl + alt + T' on your keyboard |
| 26 | +``` |
| 27 | +### Build the Docker container |
| 28 | +To build the Docker container you can run the build script corresponding to your OS |
| 29 | +``` |
| 30 | +# Windows: |
| 31 | + .\build.bat |
| 32 | +# Linux/Mac (bash): |
| 33 | + ./build.sh |
| 34 | +``` |
| 35 | + |
| 36 | +### Validation & expected output |
| 37 | + |
| 38 | +#### Running the validation |
| 39 | +To run the validation you can run the script corresponding to your OS with `validation` as first argument |
| 40 | +``` |
| 41 | +# Windows: |
| 42 | + .\execute.bat validation |
| 43 | +# Linux/Mac (bash): |
| 44 | + ./execute.sh validation |
| 45 | +``` |
| 46 | +The results of the validation are stored in the [results](results) directory. |
| 47 | + |
| 48 | +#### Expected output of the validation |
| 49 | +The aggregated results of the validation can be found in the following files. |
| 50 | + |
| 51 | +- The [speed statistics](results/difftrees/speedstatistics.txt) contain information about the total runtime, median runtime, mean runtime, and more: |
| 52 | + ``` |
| 53 | + #Commits: 14527 |
| 54 | + Total commit process time is: 12.427866666666667min |
| 55 | + Fastest commit process time is: df4a1fa9c5cc5d54a9347a2bf4843cae87a942f1___xorg-server___0ms |
| 56 | + Slowest commit process time is: 9838b7032ea9792bec21af424c53c07078636d21___xorg-server___14578ms |
| 57 | + Median commit process time is: 6dc71f6b2c7ff49adb504426b4cd206e4745e1e3___xorg-server___19ms |
| 58 | + Average commit process time is: 51.330075032697735ms |
| 59 | + ``` |
| 60 | +- The [classification results](results/difftrees/ultimateresult.metadata.txt) contain information about how often each pattern was found, and more. |
| 61 | + ``` |
| 62 | + repository: <NONE> |
| 63 | + total commits: 18046 |
| 64 | + filtered commits: 593 |
| 65 | + failed commits: 0 |
| 66 | + empty commits: 2926 |
| 67 | + processed commits: 14527 |
| 68 | + tree diffs: 55008 |
| 69 | + fastestCommit: df4a1fa9c5cc5d54a9347a2bf4843cae87a942f1___xorg-server___0ms |
| 70 | + slowestCommit: 9838b7032ea9792bec21af424c53c07078636d21___xorg-server___14578ms |
| 71 | + runtime in seconds: 747.5400000000001 |
| 72 | + runtime with multithreading in seconds: 137.22 |
| 73 | + treeformat: diff.difftree.serialize.treeformat.CommitDiffDiffTreeLabelFormat |
| 74 | + nodeformat: mining.formats.ReleaseMiningDiffNodeFormat |
| 75 | + edgeformat: mining.formats.DirectedEdgeLabelFormat with mining.formats.ReleaseMiningDiffNodeFormat |
| 76 | + analysis: mining.strategies.PatternValidation |
| 77 | + #NON nodes: 0 |
| 78 | + #ADD nodes: 0 |
| 79 | + #REM nodes: 0 |
| 80 | + filtered because not (is not empty): 132 |
| 81 | + AddToPC: { total = 260536; commits = 12703 } |
| 82 | + AddWithMapping: { total = 27720; commits = 1447 } |
| 83 | + RemFromPC: { total = 235017; commits = 11830 } |
| 84 | + RemWithMapping: { total = 15381; commits = 1361 } |
| 85 | + Specialization: { total = 4662; commits = 624 } |
| 86 | + Generalization: { total = 7397; commits = 564 } |
| 87 | + Reconfiguration: { total = 2231; commits = 258 } |
| 88 | + Refactoring: { total = 5769; commits = 921 } |
| 89 | + Untouched: { total = 0; commits = 0 } |
| 90 | + #Error[#else after #else]: 2 |
| 91 | + #Error[#endif without #if]: 8 |
| 92 | + #Error[#else or #elif without #if]: 9 |
| 93 | + #Error[not all annotations closed]: 6 |
| 94 | + ``` |
| 95 | + |
| 96 | +- The [runtime histogram](results/runtime_histogram.png) of each processed commit. |
| 97 | + |
| 98 | + |
| 99 | + |
| 100 | +## Troubleshooting |
| 101 | + |
| 102 | +### Got permission denied while trying to connect to the Docker daemon socket |
| 103 | +`Problem:` This is a common problem under Linux, if the user trying to execute Docker commands does not have the permissions to do so. |
| 104 | + |
| 105 | +`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`) |
| 106 | + |
| 107 | +### Unable to find image 'replication-package:latest' locally |
| 108 | +`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. |
| 109 | + |
| 110 | +`Fix:` Build the Docker container. |
| 111 | + |
0 commit comments