filibuster-testing / filibuster-java-instrumentation

Filibuster instrumentation for the JVM.
http://filibuster.cloud
Apache License 2.0
15 stars 4 forks source link
chaos-engineering fault-injection microservices

Filibuster Java Instrumentation

Javadoc

Filibuster: The development-first approach to resilience.

Introduction

Filibuster is built to empower developers with the capability to assess the fault tolerance and resilience of their microservice application by injecting faults. It integrates with popular testing frameworks like JUnit and JaCoCo, allowing developers to reuse existing tests and incorporate resilience testing into their CI/CD pipelines.

Filibuster supports injecting faults in inter-service communication over HTTP and gRPC, as well as in a range of SQL and NoSQL databases. The supported databases include Redis (Lettuce), DynamoDB, CockroachDB, Cassandra, and PostgreSQL.

Start testing for reliability early and often by synthesizing tests from the tests your developers are already writing.

In three steps to more resilient microservice applications:

  1. Developers write standard integration and functional tests

  2. Filibuster automatically synthesizes test variations where faults are injected into the application

  3. Developers update tests to assert the correct behavior under fault

Getting Started

Filibuster in action on a Java application written in Armeria with JUnit. IMAGE ALT TEXT

Demonstration of the Filibuster JUnit/IntelliJ integration for visual fault injection debugging. IMAGE ALT TEXT

Using Filibuster to inject faults in database clients. IMAGE ALT TEXT

Learn about the peer-reviewed research behind the Filibuster fault injection technique. IMAGE ALT TEXT

Research Papers

  1. Christopher S. Meiklejohn, Andrea Estrada, Yiwen Song, Heather Miller, and Rohan Padhye. 2021. Service-Level Fault Injection Testing. In Proceedings of the ACM Symposium on Cloud Computing (SoCC '21). Association for Computing Machinery, New York, NY, USA, 388–402. https://doi.org/10.1145/3472883.3487005
  2. Christopher Meiklejohn, Lydia Stark, Cesare Celozzi, Matt Ranney, and Heather Miller. 2022. Method overloading the circuit. In Proceedings of the 13th Symposium on Cloud Computing (SoCC '22). Association for Computing Machinery, New York, NY, USA, 273–288. https://doi.org/10.1145/3542929.3563466
  3. Christopher Meiklejohn, Rohan Padhye, and Heather Miller. 2022. Distributed Execution Indexing (Version 1). arXiv. https://doi.org/10.48550/ARXIV.2209.08740

Learn more about Filibuster: http://filibuster.cloud

License

Licensed under the Apache License, Version 2.0. (rt/LICENSE or https://www.apache.org/licenses/LICENSE-2.0).