Skip to content
This repository has been archived by the owner on Dec 13, 2021. It is now read-only.

Commit

Permalink
Release v0.1.2
Browse files Browse the repository at this point in the history
 * New feature: Branch Analyzer (for Java)
 * Reproduced ZooKeeper bug #2080
 * Found etcd bug #3517 (fixed in #3530)
  • Loading branch information
AkihiroSuda committed Oct 1, 2015
1 parent eed3212 commit 9c70026
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 31 deletions.
21 changes: 9 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
# Earthquake: Dynamic Model Checker for Distributed Systems

[![Release](http://github-release-version.herokuapp.com/github/osrg/earthquake/release.svg?style=flat)](https://github.com/osrg/earthquake/releases/latest)
[![Join the chat at https://gitter.im/osrg/earthquake](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/osrg/earthquake?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Circle CI](https://circleci.com/gh/osrg/earthquake.svg?style=svg)](https://circleci.com/gh/osrg/earthquake)

Earthquake is a dynamic model checker (DMCK) for real implementations of distributed system (such as ZooKeeper).

[http://osrg.github.io/earthquake/](http://osrg.github.io/earthquake/)
Blog: [http://osrg.github.io/earthquake/](http://osrg.github.io/earthquake/)

Earthquakes permutes C/Java function calls, Ethernet packets, and injected fault events in various orders so as to find implementation-level bugs of the distributed system.
When Earthquake finds a bug, Earthquake automatically records [the event history](example/zk-found-2212.ryu) and helps you to analyze which permutation of events triggers the bug.
Expand All @@ -14,21 +15,16 @@ Basically, Earthquake permutes events in a random order, but you can write your

## Found/Reproduced Bugs
* ZooKeeper:
* Found [ZOOKEEPER-2212](https://issues.apache.org/jira/browse/ZOOKEEPER-2212)
* Reproduced [ZOOKEEPER-2080](https://issues.apache.org/jira/browse/ZOOKEEPER-2080)
* Found [ZOOKEEPER-2212](https://issues.apache.org/jira/browse/ZOOKEEPER-2212): [blog article](http://osrg.github.io/earthquake/post/zookeeper-2212/) ([repro code](example/zk-found-2212.ryu))
* Reproduced [ZOOKEEPER-2080](https://issues.apache.org/jira/browse/ZOOKEEPER-2080): ([repro code](example/zk-repro-2080.nfqhook))
* etcd:
* Found [#3517](https://github.com/coreos/etcd/issues/3517), fixed in [#3530](https://github.com/coreos/etcd/pull/3530)

Please see [example/README.md](example/README.md).
* Found [#3517](https://github.com/coreos/etcd/issues/3517), fixed in [#3530](https://github.com/coreos/etcd/pull/3530): ([repro code](example/etcd/3517-reproduce))

## Quick Start
NOTE: [v0.1.1](https://github.com/osrg/earthquake/releases/tag/v0.1.1) might be stabler than the master branch.

* How to set up the environment: [doc/how-to-setup-env.md](doc/how-to-setup-env.md)
* Example: Finding a distributed race condition bug of ZooKeeper([ZOOKEEPER-2212](https://issues.apache.org/jira/browse/ZOOKEEPER-2212)): [example/zk-found-2212.ryu](example/zk-found-2212.ryu)
* How to set up the environment: [GettingStarted](http://osrg.github.io/earthquake/gettingStarted/) ([some extra info](doc/how-to-setup-env.md))
* Example: Finding a distributed race condition bug of ZooKeeper([ZOOKEEPER-2212](https://issues.apache.org/jira/browse/ZOOKEEPER-2212)): [blog article](http://osrg.github.io/earthquake/post/zookeeper-2212/) ([repro code](example/zk-found-2212.ryu))

## Archtecture
Please see [doc/arch.md](doc/arch.md).
NOTE: [the latest release](https://github.com/osrg/earthquake/releases/latest) might be stabler than the master branch.

## Talks
* Earthquake was presented at the poster session of [ACM Symposium on Cloud Computing (SoCC)](http://acmsocc.github.io/2015/). (August 27-29, 2015, Hawaii)
Expand All @@ -39,4 +35,5 @@ Please feel free to send your pull requests on github!

## Copyright
Copyright (C) 2015 [Nippon Telegraph and Telephone Corporation](http://www.ntt.co.jp/index_e.html).

Released under [Apache License 2.0](LICENSE).
8 changes: 3 additions & 5 deletions analyzer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@ Just finding bugs is not enough for improving quality of the target software.

The quality gets improved only after identifying the root cause of bugs, and fixing them.

Earthquake provides event history storage for estimating bug causes.

We are also planning to add support for analyzing branch-coverage data (e.g. using JaCoCo) so as to pick up suspicious branch patterns.
Earthquake provides the branch-coverage data analyzer so as to pick up suspicious branch patterns.


Supported languages:

* Java, Scala (JaCoCo)
* Go (go cover)
* JVM languages (JaCoCo)
* planned: Go (go cover)
2 changes: 1 addition & 1 deletion analyzer/java/base/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>net.osrg</groupId>
<artifactId>earthquake</artifactId>
<version>0.1.1</version>
<version>0.1.2</version>
<packaging>jar</packaging>

<name>Earthquake Analyzer (Java)</name>
Expand Down
7 changes: 0 additions & 7 deletions example/README.md

This file was deleted.

2 changes: 0 additions & 2 deletions example/etcd/3517-reproduce/materials/init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
set -e # exit on an error
. ${EQ_MATERIALS_DIR}/lib.sh

export ETCD_GIT_COMMIT=c645ac23c0093e2b0a93fa5f07a947344d7ef779

CHECK_PREREQUISITES
FETCH_ETCD
BUILD_DOCKER_IMAGE
Expand Down
2 changes: 1 addition & 1 deletion example/etcd/3517-reproduce/materials/lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## CONFIG
# EQ_DISABLE=1 # set to disable earthquake
ETCD_GIT_COMMIT=${ETCD_GIT_COMMIT:-master}
ETCD_GIT_COMMIT=${ETCD_GIT_COMMIT:-c645ac23c0093e2b0a93fa5f07a947344d7ef779}
DOCKER_IMAGE_NAME=${DOCKER_IMAGE_NAME:-etcd_testbed}

ETCD_START_WAIT_SECS=${ETCD_START_WAIT_SECS:-10}
Expand Down
4 changes: 3 additions & 1 deletion hugo/content/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ but we believe that one of the most important reasons is lacking of a good debug
* Reproduced [ZOOKEEPER-2080](https://issues.apache.org/jira/browse/ZOOKEEPER-2080): TBD

* Etcd:
* Found [#3518](https://github.com/coreos/etcd/pulls/3518): TBD
* [#3517](https://github.com/coreos/etcd/issues/3517), fixed in [#3530](https://github.com/coreos/etcd/pull/3530): TBD

The repro codes are located on [earthquake/example](https://github.com/osrg/earthquake/tree/master/example).

# How to use?
Please refer to [Getting Started]({{< relref "gettingStarted.md" >}}).
Expand Down
2 changes: 1 addition & 1 deletion inspector/java/base/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>net.osrg</groupId>
<artifactId>earthquake</artifactId>
<version>0.1.1</version>
<version>0.1.2</version>
<packaging>jar</packaging>

<name>Earthquake Inspector (Java)</name>
Expand Down
2 changes: 1 addition & 1 deletion libearthquake/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
)

func main() {
c := cli.NewCLI("earthquake", "0.1.1")
c := cli.NewCLI("earthquake", "0.1.2")
c.Args = os.Args[1:]
c.Commands = map[string]cli.CommandFactory{
"tools": toolsCommandFactory,
Expand Down

0 comments on commit 9c70026

Please sign in to comment.