numbleroot / nemo

Nemo debugs Distributed Systems by analyzing provenance graphs obtained during fault injection.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Nemo

Nemo debugs Distributed Systems by analyzing provenance graphs obtained during fault injection.

Protocol Case Studies

Here we provide the Dedalus code for the six case studies we performed as part of the evaluation of our CIDR 2019 paper.

Running Nemo

We require two things for running Nemo: a Go and a Docker installation. Preferably, both come from your system's package manager, if available. Make sure to start the Docker daemon afterwards.

Once, these two dependencies are installed and properly configured, run:

user@system $  git clone git@github.com:numbleroot/nemo.git ${GOPATH}/src/github.com/numbleroot/nemo

To build and run auxiliary components, execute the following commands:

user@system $  cd ${GOPATH}/src/github.com/numbleroot/nemo
user@system $  sudo docker-compose -f docker-compose.yml build
user@system $  sudo docker-compose -f docker-compose.yml up -d
user@system $  make build

This should take care of preparing the environment and building the Nemo executable. Verify via sudo docker-compose -f docker-compose.yml ps that the Neo4J container defined in docker-compose.yml is running correctly.

Finally, having run Molly (see below) on the target distributed system prior to the following action and Molly successfully identifying a bug, run Nemo as follows:

user@system $  ./nemo -faultInjOut <PATH TO EXISTING MOLLY EXECUTION>

Nemo should debug the Molly execution now. If all goes well, you will be referred to a prepared webpage report to open in your browser.

Integrating with Molly

In case you rely on Molly for finding bugs (as we did in our CIDR paper), we require a slightly modified set of output files and format. Please check out the following fork: Molly fork (Kamala's fork of Molly set to latest commit on branch graphing).

About

Nemo debugs Distributed Systems by analyzing provenance graphs obtained during fault injection.

License:GNU General Public License v3.0


Languages

Language:Go 79.2%Language:HTML 20.3%Language:Makefile 0.3%Language:Dockerfile 0.2%