Armin Balalaie created GEODE-6610:
-------------------------------------
Summary: Using Failify for e2e testing of Geode
Key: GEODE-6610
URL: https://issues.apache.org/jira/browse/GEODE-6610
Project: Geode
Issue Type: Test
Reporter: Armin Balalaie
Hi,
I am the author of Failify, a test framework for end-to-end testing of
distributed systems. Failify can be used to deterministically inject failures
during a normal test case execution. Currently, node failure, network
partition, network delay, network packet loss, and clock drift is supported.
For a few supported languages (right now, Java and Scala), it is possible to
enforce a specific order between nodes in order to reproduce a specific
time-sensitive scenario and inject failures before or after a specific method
is called when a specific stack trace is present. You can find more information
in [https://failify.io|https://failify.io/].
My reasons for Failify being useful to Geode are:
* It is Docker-based and less messy and you can run the test cases in a single
node and in parallel (there are plans for implementing the ability of deploying
the same test case on a K8S or a Swarm cluster).
* It is Docker-based so you can easily have test cases that run on different
OSes. Also, you can define the services you depend on as another node in your
deployment definition.
* You can inject fault including network partition, clock drift, node failure,
network delay and loss in your regular JUnit test cases by just calling a method
* There will be more control over when a failure should be introduced in a
test case.
* You can write your test cases in Java or Scala or any other language that
can be run on JVM and can use Java libraries.
* It can be easily integrated into your build pipeline as you will be writing
your regular JUnit test cases.
* The API is compact and intuitive and there is a good documentation for the
tool
Please let me know if you want to give it a try.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)