Evaluation framework and reference solution for the TTC 2020 "Round-Trip Migration of Object-Oriented Data Model Instances" case.
To use the provided plotting scripts, make sure your Python environment provides the dependencies listed in requirements.txt
.
To plot the runtime results of the reference solution using the plotting script, execute the following command. Make sure to execute the corresponding AllJavaPerformanceTests
JUnit test beforehand, which creates the results.csv
file.
python plot.py Reference=de.hub.mse.ttc2020.solution/results.csv
The resulting plot will be saved to the file ./runtime.pdf
.
- The EMFSyncer solution can be found at solutions/emfsyncer.
- The original benchmark framework available here has been modified. Please use this de.hub.mse.ttc2020.benchmark.
- The modified reference solution can be found at de.hub.mse.ttc2020.solution.
- Download Eclipse IDE for Java and DSL Developers. If you use a standard Modelling install, you will need to install support from Xtend as well from your main update site.
- Install EMF Compare 3.3 from the update site
https://download.eclipse.org/modeling/emf/compare/updates/releases/3.3/
and restart Eclipse. - Install AJDT for Eclipse 4.10, from the update site
http://download.eclipse.org/tools/ajdt/410/dev/update
and restart Eclipse.
- Clone this Git repository, containing the EMFSyncer solution, using EGit.
- From the EGit repository view, select the two
de.hub.mse.ttc2020.*
folders and thesolutions/emfsyncer
folder and clickImport projects
, then selectImport existing Eclipse projects (3 selected)
and clickFinished
. - Go to the Java perspective, select the project
ttc2020.emfsyncer
. Then click onProject > Clean...
. - Task solutions can be found here
- To run functional tests use this launch configuration (right click >
Run As
>AllJavaFunctionalTests
) - To run performance tests use this launch configuration (right click >
Run As
>AllJavaPerformanceTests
)
- As a prerequisite, you need to have the Java 8 SDK or higher installed on your system.
- Download and install a recent version of the Eclipse Modeling Tools distribution, for example, version 2020-3. If you already have a version installed and you are able to complete the installation instructions for Henshin below, you should be able to use the solution as well.
- In Eclipse, install the Henshin plugin.
- Do Help -> Install New Software...
- Under Work with... enter the Nightly update site: http://download.eclipse.org/modeling/emft/henshin/updates/nightly
- After the installation, restart Eclipse.
- Use the Git perspective to duplicate this repository to your local system, and to import the contained projects into your Eclipse workspace. The projects should compile automatically without errors.
The solution artifacts are contained in the soltuions/henshin
folder.
- To reproduce the functionality and performance tests, use the classes AllHenshinFunctionalTests and AllHenshinPerformanceTests in the package nl.ru.cs.ttc2020.solution of the project of the same name. Right-click -> "Run as JUnit Test" (and not as JUnit Plug-In Test, which generally takes much longer) worked on the example system.
- To inspect the transformation specifications, open the .henshin_diagram files in the folder rules.
- To inspect the glue code, inspect the classes HenshinTaskFactory and HenshinTask in the source folder src.
The NMF solution is already precompiled in the repository. In order to run it, you need to have the .NET Core 3.1 runtime installed. Please visit [https://dotnet.microsoft.com/download] for instructions how to do that.
In order to run the solution, you may either run the specific or the generic solution executable. Both of them require the same commandline arguments and are started similarly.
For Windows, simply execute
solutions\nmf\GenericSolution\bin\Release\netcoreapp3.1\publish\TTC2020.Roundtrip.GenericNMFSolution.exe
solutions\nmf\SpecificSolution\bin\Release\netcoreapp3.1\publish\TTC2020.Roundtrip.NMFSolution.exe
This will give you an overview on the verbs that are supported by this solution. Each verb will execute one of the scenarios either forward (meaning that a V1 instance is migrated to V2 and back again) or backward (meaning that a V2 instance is migrated to V1 and back again). Each verb requires two arguments that specify which instance should be loaded and where the output should be written to.
Please note that we had to adjust the namespace URI for the NMF solution such that each metamodel has its own namespace URI because NMF does not support different metamodels with the same namespace in the same process. The namespaces already had the version moniker (V1, V2) in them and we simply added the scenario moniker.
For Linux, you cannot directly run the exe but instead, you have to run it using dotnet
, passing the dll as argument, followed by the selected verb and file paths.
A Dockerfile
is available for this solution. To use it, run the solutions/nmf/01-build-docker.sh
script. Once it has been built, you can run the image by running the solutions/nmf/02-run-docker.sh
script. The built applications are available in /app
, and de.hub.mse.ttc2020.benchmark/data
will be mounted in /data
.
This solution is packaged as a Docker image. To run the solution, run the run-fulib.sh
shell script.
Once the script is done, you will find the results.csv
file in the solutions/fulib
folder.