lbeurerkellner / RoundTripMigrations

Supplementary Material for the paper Towards Versioned Service APIs and Round-Trip Migration of Data Model Instances

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Supplementary Material for the paper Managing Data Model Evolution in the Context of Web APIs

The catalog of round-trip migration scenarios can be found as an anonymized techincal report here:

Requirements

You need the following software to be installed on your machine:

Please note that N4JS >0.28.2 no longer supports N4IDL.

Micro-Benchmarking

To run the micro-benchmarking of the translation layers implemented in the catalog, see the migrations/scenario-catalogue/ directory.

To measure execution time, run the evaluation script:

bash run-eval.sh

For aggregation of the the raw measurement output, see migrations/scenario.catalogue/summarise-data.ipynb.

Additional Tool Support

Please note that the tool support is only available in the old version of the Eclipse-based N4JS IDE.

Additionally you may install the plugins found in the folder "roundtrip-runner" on the update-site branch. They provide a designated runner for round-trip migration scenarios and a view for showing corresponding object diagrams. This is explained in the appendix of the thesis mentioned above.

After launching the Eclipse IDE, go to Help/Install New Software.

Help/Install New Software

Enter a new update site:

https://jevopi.de/updatesite/com.enfore.n4js.n4idl.roundtrip.site/

Note: Make sure to uncheck 'Group items by category' to see the update site contents.

Select the Round-Trip Runner and install it.

Select Runner

Import Projects

Go to File / Import ... and select "Projects from Git" and "Clone URI". Use this repository, i.e. use

https://github.com/jpilgrim/RoundTripMigrations.git

as the URI.

Select the master branch and select all projects on the "Import Projects" wizard page.

Select Projects

Run Tests

The scenario catalogue is given as a set of N4IDL declarations and corresponding test suites, asserting the discussed migration properties.

Install missing dependencies

After importing the projects, you will get compiler errors due to missing dependencies. In order to resolve all dependencies, open a package.json file with errors and choose quickfix "Run 'npm/yarn install' in all projects" (by hovering over the error message of any dependency). Alternatively you can run the tool "Install missing dependencies" (button with two gears found in the toolbar).

Select Projects

Run the Scenario Tests

In order to run all tests of the catalog, right-click the project “scenario.catalog” and select “Run As / Test in Node.js”.

Run Tests

You will then see a JUnit-like view presenting test report.

Scenario Test Results

Use the Round-Trip Viewer

If you installed the additional round-trip migration tooling, you can also visualise round-trip migrations. In order to view the object graph including the traces and migrations, go to Window / Show View / Other and select the RoundTip Runner / Full Round Trip Object Graph.

Open RT Viewer

For any test in the scenario.catalogue project (i.e., an N4IDL file which file name as a suffix "Test"), use the context menu (right-click on the file) and select "Run As / Launch with N4IDL Roundtrip runner".

Run with RT Viewer

You will then see the object graph in the viewer.

View Graph

For a better viewing experience, try re-arranging graph elements by dragging or adjust the viewport by panning and zooming using the mouse wheel.

Redistributed Packages

This repository also includes redistributed versions of the packages n4js-runtime and org.eclipse.n4js.mangelhaft.assert with a small fix each. These packages are made available under their respective licenses (EPL 1.0).

License

The content found in this project is made available under the Eclipse Public License 2.0.

About

Supplementary Material for the paper Towards Versioned Service APIs and Round-Trip Migration of Data Model Instances

License:Eclipse Public License 2.0


Languages

Language:Jupyter Notebook 43.9%Language:JavaScript 38.2%Language:Python 8.7%Language:HTML 6.8%Language:Dockerfile 2.3%Language:Shell 0.1%