Giter Club home page Giter Club logo

atomix-jepsen's Introduction

atomix-jepsen

Atomix Jepsen tests.

Overview

atomix-jepsen is a suite of Jepsen based tests for Atomix including:

  • Linearizable CAS

The tests are run against various nemeses including:

  • Partition with random halves
  • Partition a random isolated node
  • Partition in half with a bridge node
  • Crash a random set of nodes
  • Randomize the clock on all nodes

Setup

To run atomix-jepsen you'll need to setup a Jepsen test environment. If you don't already have one, you can create one using Docker. First, clone atomix-jepsen:

git clone https://github.com/atomix/atomix-jepsen.git

Then create a jepsen Docker container, sharing your atomix-jepsen directory into the container:

cd atomix-jepsen
docker run --privileged --name jepsen -it -v $(pwd):/atomix-jepsen jhalterman/jepsen

This jepsen container will include 5 docker-in-docker sub-containers in which Atomix will be deployed.

Usage

To run the atomix-jepsen tests, from your atomix-jepsen directory, run:

lein test

To run a single test (ex):

lein test :only atomix-jepsen.dvalue-test/bridge

Notes

Shared Repository

To cut down on test setup time and disk usage, you can share your local ~/.m2 directory with your Jepsen environment by including the following in your docker run command:

-v $HOME/.m2:/root/.m2

Development Mode

To run your local atomix-jepsen source on your Jepsen nodes instead of pulling and building it from Github, build and install the atomix-jepsen replica to your local .m2 repo:

lein uberjar
lein localrepo install target/atomix-replica.jar io.atomix.atomix-jepsen/replica 0.1.0

Then declare DEV=true when running atomix-jepsen tests:

DEV=true lein test

Orphaned Processes

If you break out of a running test, the java processes that maintain SSH sessions to your jepsen nodes may be left running, as well as the atomix server processes on those nodes. To kill these, run pkill java from your jepsen container.

License

Copyright © 2015-2016 Jonathan Halterman and contributors

Distributed under the Eclipse Public License version 1.0

atomix-jepsen's People

Contributors

jhalterman avatar kuujo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.