diff --git a/README.md b/README.md index 51030b4..ac6923b 100644 --- a/README.md +++ b/README.md @@ -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. @@ -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) @@ -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). diff --git a/analyzer/README.md b/analyzer/README.md index 6f4ec13..84db14c 100644 --- a/analyzer/README.md +++ b/analyzer/README.md @@ -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) diff --git a/analyzer/java/base/pom.xml b/analyzer/java/base/pom.xml index fbe247f..9a90135 100644 --- a/analyzer/java/base/pom.xml +++ b/analyzer/java/base/pom.xml @@ -4,7 +4,7 @@ net.osrg earthquake - 0.1.1 + 0.1.2 jar Earthquake Analyzer (Java) diff --git a/example/README.md b/example/README.md deleted file mode 100644 index cc91974..0000000 --- a/example/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Examples - * ZooKeeper: - * Found [ZOOKEEPER-2212](https://issues.apache.org/jira/browse/ZOOKEEPER-2212): [zk-found-2212.ryu](./zk-found-2212.ryu) - * Reproduced [ZOOKEEPER-2080](https://issues.apache.org/jira/browse/ZOOKEEPER-2080): [zk-repro-2080.nfqhook](./zk-repro-2080.nfqhook) - - * Etcd: - * Found [#3518](https://github.com/coreos/etcd/pulls/3518): TBD diff --git a/example/etcd/3517-reproduce/materials/init.sh b/example/etcd/3517-reproduce/materials/init.sh index fa62fef..b3f27d1 100755 --- a/example/etcd/3517-reproduce/materials/init.sh +++ b/example/etcd/3517-reproduce/materials/init.sh @@ -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 diff --git a/example/etcd/3517-reproduce/materials/lib.sh b/example/etcd/3517-reproduce/materials/lib.sh index 33101c0..1b5e004 100644 --- a/example/etcd/3517-reproduce/materials/lib.sh +++ b/example/etcd/3517-reproduce/materials/lib.sh @@ -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} diff --git a/hugo/content/_index.md b/hugo/content/_index.md index 0739740..bccc1fd 100644 --- a/hugo/content/_index.md +++ b/hugo/content/_index.md @@ -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" >}}). diff --git a/inspector/java/base/pom.xml b/inspector/java/base/pom.xml index dd78b7a..30ea99b 100644 --- a/inspector/java/base/pom.xml +++ b/inspector/java/base/pom.xml @@ -4,7 +4,7 @@ net.osrg earthquake - 0.1.1 + 0.1.2 jar Earthquake Inspector (Java) diff --git a/libearthquake/main.go b/libearthquake/main.go index 9733972..7450ac7 100644 --- a/libearthquake/main.go +++ b/libearthquake/main.go @@ -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,