# Philip Maddox - Testing a Distributed System (Highlights)

## Metadata
**Review**:: [readwise.io](https://readwise.io/bookreview/24923637)
**Source**:: #from/readwise
**Zettel**:: #zettel/fleeting
**Status**:: #x
**Authors**:: [[Philip Maddox]]
**Full Title**:: Testing a Distributed System
**Category**:: #articles #readwise/articles
**Category Icon**:: 📰
**URL**:: [readwise.io](https://readwise.io/reader/document_raw_content/37519179)
**Host**:: [[readwise.io]]
**Highlighted**:: [[2023-03-03]]
**Created**:: [[2023-03-04]]
## Highlights
### End-to-End Testing
- A good way of addressing this problem is to make all the components of the system configurable so they can be run locally. If all of the components of a system can run on the same box, local end-to-end tests are effective. ([View Highlight](https://read.readwise.io/read/01gtjr7a5xqzdzcbqv4ah74t5a)) ^485246865
### Distributed Data Systems
### Asynchronous Data Delivery
- A solution that maintains normal system functionality is to add artificial delays to the test suite after each successful set of inputs to the primary node. This gives the data time to propagate and increases the chances the data will be on all of the proper nodes by the time an attempt is made to pull it. ([View Highlight](https://read.readwise.io/read/01gtjse8zzrztamvmpmk4zeqdr)) ^485250390
- A “hybrid” solution may work well for you—group your tests into small sets, then run the sets sequentially, doing as much of each set in parallel as possible. ([View Highlight](https://read.readwise.io/read/01gtjsgqqg47b832ave5h94dw5)) ^485250551
- The best way to counteract the impact of this bloating is to run as many tests in parallel as possible. ([View Highlight](https://read.readwise.io/read/01gtjsfya5r4axwtg0ekrqchc6)) ^485250525
- I find system delays after each successful input to a primary node, combined with high levels of parallel test running, to be the best solution because it most accurately mimics a system actually running in production, without introducing synchronous messages that do not match what the system is doing in production. ([View Highlight](https://read.readwise.io/read/01gtjsjd2vsyty7qkrg7myg3fp)) ^485250647
- Just confirm you are making choices based on what approach best tests your system, not what is easiest for you. ([View Highlight](https://read.readwise.io/read/01gtjsk4rhwks44favdpjd6qx0)) ^485250688
### Node Failure in a Distributed Data Store
- The ability to verify data storage on individual nodes is essential, even if the standard use case is to provide the freshest data. ([View Highlight](https://read.readwise.io/read/01gtjsnry56tvt528qaqj5dgt1)) ^485250864