Coder Social home page Coder Social logo

jepsen-xenon's Introduction

jepsen.xenon

This folder contains Jepsen tests for Xenon and Xenon Clojure client to help write Jepsen tests.

Jepsen is a framework for distributed systems verification, with fault injection, written by Kyle Kingsbury. It fuzzes the system with random operations while injecting network partitions. The results of operation history is analyzed to see if the system violates any of the consistency properties it claims to have. It generates graphs of performance and availability, helping user characterize how a system responds to different faults.

We ran a Jepsen test, as part of our Xenon testing, to determine if any consistency issues could be uncovered. In our testing of Read, Write and CAS (Compare-And-Set) operations, we found them to be linearizable, and Xenon gracefully recovered from partitions without introducing any consistency issues.

Refer following repos for more details on Xenon and Jepsen.

Requirements

  • docker
  • docker-compose

Testing Xenon

Simply run following commands to start a cluster of five docker nodes for jepsen testing.

cd docker
./up.sh

On completion of above command you will get following message.

jepsen-control | Welcome to Jepsen on Docker
jepsen-control | ===========================
jepsen-control |
jepsen-control | Please run `docker exec -it jepsen-control bash` in another terminal to proceed.

After running docker exec -it jepsen-control bash on another terminal, run following command to start the tests. This command runs the test which first installs the Xenon host on the five docker nodes and one cluster and then starts jepsen testing on them.

lein run test --time-limit 60 --concurrency 10

Testing Xenon Clojure Client library

Following command will run client library test to verify the xenon clojure client library.

lein test :only jepsen.xenonclient-test

TODO

  • Add checker for eventual consistency on queries
  • Add clock related tests
  • Add tests that break the system

Credits

Thanks to Kyle for Jepsen framework and example code that has been used in this folder. Kyle Kingsbury: https://github.com/aphyr

jepsen-xenon's People

Watchers

Touseef Liaqat 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.