All Projects → asatarin → Testing Distributed Systems

asatarin / Testing Distributed Systems

Licence: cc0-1.0
Curated list of resources on testing distributed systems

Projects that are alternatives of or similar to Testing Distributed Systems

Erlamsa
Erlang port of famous radamsa fuzzzer.
Stars: ✭ 56 (-95.28%)
Mutual labels:  fuzzing
Scada.js
Industrial distributed SCADA and MRP library for web, desktop and mobile
Stars: ✭ 66 (-94.44%)
Mutual labels:  distributed-systems
Randomjson
Provides a Kotlin/Java library to create a random json string
Stars: ✭ 70 (-94.1%)
Mutual labels:  fuzzing
Distributedsystem Series
📚 深入浅出分布式基础架构,Linux 与操作系统篇 | 分布式系统篇 | 分布式计算篇 | 数据库篇 | 网络篇 | 虚拟化与编排篇 | 大数据与云计算篇
Stars: ✭ 1,092 (-8%)
Mutual labels:  distributed-systems
Knightking
A general-purpose, distributed graph random walk engine.
Stars: ✭ 66 (-94.44%)
Mutual labels:  distributed-systems
Elmyr
A utility to make Kotlin/Java tests random yet reproducible
Stars: ✭ 68 (-94.27%)
Mutual labels:  fuzzing
Rfsec Toolkit
RFSec-ToolKit is a collection of Radio Frequency Communication Protocol Hacktools.无线通信协议相关的工具集,可借助SDR硬件+相关工具对无线通信进行研究。Collect with ♥ by HackSmith
Stars: ✭ 1,085 (-8.59%)
Mutual labels:  fuzzing
Boofuzz
A fork and successor of the Sulley Fuzzing Framework
Stars: ✭ 1,180 (-0.59%)
Mutual labels:  fuzzing
Book
📖 Guides and tutorials on how to fuzz Rust code
Stars: ✭ 67 (-94.36%)
Mutual labels:  fuzzing
Crail
[Archived] A Fast Multi-tiered Distributed Storage System based on User-Level I/O
Stars: ✭ 69 (-94.19%)
Mutual labels:  distributed-systems
Skale Network
Elastic sidechains
Stars: ✭ 58 (-95.11%)
Mutual labels:  distributed-systems
Honeybee
An experimental high performance, fuzzing oriented Intel Processor Trace capture and analysis suite
Stars: ✭ 63 (-94.69%)
Mutual labels:  fuzzing
Distkv
A light weight distributed key-value database system with table concept.
Stars: ✭ 69 (-94.19%)
Mutual labels:  distributed-systems
Assassin
Assassin is a decentralized database that uses background threads to kill slow JavaScript.
Stars: ✭ 57 (-95.2%)
Mutual labels:  distributed-systems
Cause
An EDN-like CRDT (Causal Tree) for Clojure & ClojureScript that automatically tracks history and resolves conflicts.
Stars: ✭ 68 (-94.27%)
Mutual labels:  distributed-systems
Xene
A distributed workflow runner focusing on performance and simplicity.
Stars: ✭ 56 (-95.28%)
Mutual labels:  distributed-systems
Distributedsystems
My Distributed Systems references
Stars: ✭ 67 (-94.36%)
Mutual labels:  distributed-systems
Awesome System For Machine Learning
A curated list of research in machine learning system. I also summarize some papers if I think they are really interesting.
Stars: ✭ 1,185 (-0.17%)
Mutual labels:  distributed-systems
Gnes
GNES is Generic Neural Elastic Search, a cloud-native semantic search system based on deep neural network.
Stars: ✭ 1,178 (-0.76%)
Mutual labels:  distributed-systems
Objstore
A Multi-Master Distributed Caching Layer for Amazon S3.
Stars: ✭ 69 (-94.19%)
Mutual labels:  distributed-systems

List of resources on testing distributed systems curated by Andrey Satarin (@asatarin). If you are interested in my other stuff, checkout talks page. For any questions or suggestions you can reach out to me on Twitter (@asatarin) or LinkedIn.

Contents

Overview of testing approaches

Research Papers

Technologies for Testing Distributed Systems by Colin Scott

Colin Scott shares his viewpoint from academia on testing distributed systems, specifically regression testing for correctness and performance bugs.

Testing in a Distributed World by Ines Sombra (RICON 2014)

Great overview of techniques for testing distributed systems from practitioner, the video did age well and still extremely good overview of the landscape. Additional materials could be found in this Github repo

Resilience In Complex Adaptive Systems

These materials are not directly related to testing distributed systems, but they greatly contribute to general understanding of such systems.

Jepsen

State of the art approach to testing stateful distributed systems.

Elle transactional consistency checker for black-box databases:

Some notable Jepsen analyses:

Jepsen is used by CockroachDB, VoltDB, Cassandra, ScyllaDB and others.

Formal Methods

Companies using TLA+ to verify correctness of algorithms:

Lineage-driven Fault Injection

Netflix adopted lineage-driven fault injection techniques for testing microservices.

Chaos Engineering

Netflix pioneered chaos engineering discipline.

Fuzzing

There are two flavors of fuzzing. First, randomized concurrency testing, where the ordering of messages is fuzzed:

And input fuzzing, where message contents or user inputs are fuzzed:

Microservices

Amazing and comprehensive overview of different strategies to test systems built with microservices by Cindy Sridharan.

Series of blog posts specifically on testing in production — best practices, pitfaults, etc:

Game Days

Performance and Benchmarking

See also benchmarking tools.

Test Case Reduction

Misc

Specific approaches in different distributed systems

Amazon Web Services

See also formal methods section.

Netflix

Automated failure injection (see also Lineage-driven Fault Injection):

Random/manual failure injection testing:

See also Chaos Engineering.

Twitter

Datastax (Cassandra)

ScyllaDB

They published series of blog posts on testing ScyllaDB:

VoltDB

Series of post on testing at VoltDB:

Additional resources:

MemSQL

CockroachLabs (CockroachDB)

PingCap (TiDB)

See also formal methods section.

MongoDB

See also formal methods section.

Cloudera

FoundationDB

Wallaroo Labs

There is also talk from Sean T. Allen on testing stream processing system at Wallaroo Labs (ex. Sendence)

Google

Microsoft

See also formal methods section.

Dropbox

  • Mysteries of Dropbox Property-Based Testing of a Distributed Synchronization Service — example of how to use QuickCheck to test synchronisation in Dropbox and similar tools (Google Drive). John Hughes gave a talk on this. See also QuickCheck.
  • Data Checking at Dropbox — If you have lots of data, you have to verify that is doesn't bit rot and protect it against rare bugs (e.g. race conditions) to guarantee long term durability. This talks explains intricacies of building data consistency checker(s) at Dropbox scale.
  • Dropbox's Exabyte Storage System (aka Magic Pocket) talk by James Cowling — describes number of strategies to achieve exteremely high durability. This includes:
    • guard against faulty disks,
    • guard against software defects,
    • guard against black swan events,
    • operational safeguards to reduce blast radius,
    • safeguards against deletes with multi stage soft-delete,
    • comprehensive testing strategy in-depth with increased scale,
    • redundancy across varios axis in software and hardware stacks,
    • continuous data integrity validation on many levels,
    • etc
  • Testing sync at Dropbox — comprehensive overview of two test frameworks at Dropbox for new sync engine implementation. CanopyCheck — single threaded and fully deterministic randomized testing framework with minimization for synchronization planner component of the engine. The other framework Trinity focuses on concurrency and larger surface area of componenents. Great discussion on tradeoffs between determinism, strengh of test oracles vs width of coverage and size of the system under test.

Atomix Copycat

Onyx

LinkedIn

Druid.io

Salesforce

SQLite

SQLite is not a distributed system by any stretch of the imagination, but provides good example of comprehensive testing of database implementation.

InfluxDB

Shopify

Confluent (Kafka)

See also formal methods section.

Elastic (Elastic Search)

YugaByte DB

FaunaDB

Hazelcast

Basho (Riak)

CoreOS (etcd)

Tools

Network Simulation

QuickCheck

Benchmarking

Linkbench

YCSB

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].