goose icon indicating copy to clipboard operation
goose copied to clipboard

Create a UI to control the loadtest manager from remote

Open LionsAd opened this issue 4 years ago • 7 comments

  • Starting and stopping the load test
  • changing the number of users/test plan
  • real time metrics (current number of users, current average response time, ...)
  • real time graphs (same graphs as on the report file, except that they are updated in the real time)

LionsAd avatar Nov 12 '20 10:11 LionsAd

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).

jeremyandrews avatar Nov 16 '20 06:11 jeremyandrews

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

slashrsm avatar May 05 '22 16:05 slashrsm

Did a bit of research and here is my plan:

  • Yew to build the web app
  • reqwasm for websocket connection (https://blog.devgenius.io/lets-build-a-websockets-project-with-rust-and-yew-0-19-60720367399f)
  • echarts setOption() to dynamically update the graph (https://echarts.apache.org/examples/en/editor.html?c=dynamic-data&reset=1&edit=1)

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 avatar May 09 '22 09:05 slashrsm

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

slashrsm avatar Jun 16 '22 16:06 slashrsm

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 :)

owlmaniac avatar Sep 18 '22 13:09 owlmaniac

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

jeremyandrews avatar Sep 19 '22 10:09 jeremyandrews

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

owlmaniac avatar Sep 19 '22 11:09 owlmaniac