Git Product home page Git Product logo

noxious's People

Contributors

cbgbt avatar oguzbilgener avatar semantic-release-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

cbgbt

noxious's Issues

Consider binary package releases of `noxious-server` on crates.io

This is really cool, thanks for writing this!

Is your feature request related to a problem? Please describe.
I'm trying to test some client software that currently work son Linux, but I'd like to support Windows. We currently use toxiproxy docker containers to run our integration tests on Linux; however, this won't work on our Github Actions-based CI for Windows, since it doesn't support Linux containers, and getting a toxiproxy windows container seems like a tall order.

Describe the solution you'd like
It would be great if we could cargo install noxious-server in our CI, since this should create a windows-compatible build, and our CI already uses Rust-based infrastructure for most everything else.

Describe alternatives you've considered
We could clone the repo in our CI and perform the build then.

Additional context
I haven't tested noxious on Windows, so I suppose I'm not totally confident that this will be a silver bullet. I'm happy to try it though.

HTTP-layer toxics

Is your feature request related to a problem? Please describe.
In my integration tests, I'd like to produce chaos at the TCP layer, but also at the HTTP layer.

Describe the solution you'd like
I'm wondering how you would feel about introducing the concept of HTTP toxics, possibly under a feature flag. I haven't looked too closely at your architecture/implementation yet, but possibly these could consume the entire input stream to a buffer and attempt to parse them as an http::Request.

Describe alternatives you've considered
To solve right now this I've written a very small axum proxy server with middleware that randomly returns early with 503 errors, and we chain this with noxious to produce the desired result.

Additional context
This idea may be a nonstarter, since I think it doesn't play very nicely at all with the directionality approach currently present.

Seems like there's a similar issue in the toxiproxy repo: Shopify/toxiproxy#50

Add Reset Peer Toxic

Looks like the Toxiproxy project is alive and actively maintained again! They recently added a new type of toxic, reset peer. It would be great to implement it in noxious too.

noxious-server as a library

Is your feature request related to a problem? Please describe.
I'm currently invoking noxious-server via std::process::Command in a Rust module in my CI. This mostly works great!

I did have some issues though when debugging timing of the process coming up and successfully binding to a port, then also ensuring it is reliably killed.

Describe the solution you'd like
It might be nice to make the noxious-server package both a library and a binary, where the binary is a thin wrapper. I'm thinking that in CI, I'd have a choice to something something tokio::spawn(noxious_server.serve(...))

Describe alternatives you've considered
This isn't strictly required, and it does increase API surface of the package.

Create Toxics at startup

Is your feature request related to a problem? Please describe.
It's slightly inconvenient to configure toxics after-the-fact with the client when proxies can be configured using a config file.

Describe the solution you'd like
This would be a clear departure from toxiproxy, but I wonder if it would make sense to allow creation of toxics via configuration as well.

Describe alternatives you've considered
None. The status quo works well.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.