tag1consulting / goose

Load testing framework, inspired by Locust
https://tag1.com/goose
Apache License 2.0
797 stars 70 forks source link

Create a UI to control the loadtest manager from remote #233

Open LionsAd opened 3 years ago

LionsAd commented 3 years ago
jeremyandrews commented 3 years ago

My intent is to implement the UI in a different library. So for example, you could build a CLI load test with a dependency on goose, or a UI-controlled load test with a dependency on gooseui (or something more specifically named, such as gooseactix).

slashrsm commented 2 years ago

The idea is to try https://yew.rs/ for UI. This is mostly a note to self :)

slashrsm commented 2 years ago

Did a bit of research and here is my plan:

Ideally we will need a new command for the console, that will instruct Goose to periodically send updated metrics (or diffs ideally).

I was thinking to create an MVP without graphs at the beginning (starting, stopping, ...) and add graphs after that.

slashrsm commented 2 years ago

Work is going on in https://github.com/tag1consulting/goose-ui

owlmaniac commented 2 years ago

Hi I'm new here and to rust in general but heavily investing in writing most of my backend in rust. So I was looking for load testing in rust and found this. IMO how about we use Tauri for this and build a UI in react or vue to make a proper cross-platform app? I'm a Vue guy and I can contribute if someone's ready to help a little with my rust :)

jeremyandrews commented 2 years ago

The goal is that it's possible to have any number of UI's.

One such example is a work in progress in https://github.com/tag1consulting/goose-ui -- but it intentionally is external from the main Goose repo to allow for different UI solutions to be developed as well.

It is expected that the UI will control the load test through the web sockets: https://book.goose.rs/controller/websocket.html

Goose currently only supports the following commands (more will certainly need to be added as the UI evolves): https://docs.rs/goose/latest/goose/controller/enum.ControllerCommand.html

Requests are formatted as follows: https://docs.rs/goose/latest/goose/controller/struct.ControllerWebSocketRequest.html

And replies are formatted similarly: https://docs.rs/goose/latest/goose/controller/struct.ControllerWebSocketResponse.html

owlmaniac commented 2 years ago

@jeremyandrews That's interesting. I'll try working with this soon :) Thanks