7 releases

0.1.6 Mar 20, 2021
0.1.5 Mar 17, 2021

#2618 in Database interfaces

Download history 1123/week @ 2024-07-21 1505/week @ 2024-07-28 1330/week @ 2024-08-04 1423/week @ 2024-08-11 1555/week @ 2024-08-18 1180/week @ 2024-08-25 1397/week @ 2024-09-01 1244/week @ 2024-09-08 1275/week @ 2024-09-15 1489/week @ 2024-09-22 1114/week @ 2024-09-29 1296/week @ 2024-10-06 1346/week @ 2024-10-13 2029/week @ 2024-10-20 1425/week @ 2024-10-27 1471/week @ 2024-11-03

6,299 downloads per month

MIT license

29KB
391 lines

Toxiproxy - Rust client

Build Status Crates.io

Rust client for Toxiproxy.

Usage

Populating proxies:

let proxies = TOXIPROXY.populate(vec![
  Proxy::new(
    "socket_service".into(),
    "localhost:2001".into(),
    "localhost:2000".into(),
  ),
  Proxy::new(
    "redis".into(),
    "localhost:6000".into(),
    "localhost:6379".into(),
  )
])?;

Testing with an unavailable connection:

TOXIPROXY.find_and_reset_proxy("redis")?.with_down(|| {
  // Calling the desired service...
})?;

Testing with toxics (for full documentation on available toxics see the original docs):

TOXIPROXY.find_and_reset_proxy("redis")?.with_latency("downstream".into(), 2000, 0, 1.0).apply(|| {
  // Calling the desired service...
})?;

Or without a safe lambda (that takes care of resetting a proxy):

TOXIPROXY.find_proxy("redis")?.with_latency("downstream".into(), 2000, 0, 1.0)
// Calling the desired service...

TOXIPROXY.find_proxy("redis")?.disable();
// Test unavailability.
TOXIPROXY.find_proxy("redis")?.enable();

Supported toxics:

Using a custom address for Toxiproxy server:

let toxiclient: Client = toxiproxy_rust::Client::new("1.2.3.4:5678");

Development

Tests:

$> cargo test -- --test-threads 1

Dependencies

~4–16MB
~214K SLoC