Skip to content

Latest commit

 

History

History
81 lines (74 loc) · 3.66 KB

TODO.md

File metadata and controls

81 lines (74 loc) · 3.66 KB

Project Goose

Goose is a Rust load testing tool, inspired by Locust.

In progress

  • web UI
  • alternative HTTP clients

Future

Completed Column ✓

  • --list TaskSets and Tasks
  • --log-level to increase debugging verbosity to log file
  • --log-file to specify path and name of log file
  • --verbose to increase debugging verbosity to stdout
  • --print-stats to show statistics at end of load test
  • --clients to specify number of concurrent clients to simulate
  • --run-time to control how long load test runs
  • weighting of TaskSets and Tasks
  • spawn clients in threads
  • move counters into a per-request HashMap instead of a per-Task Vector (currently limited to including only one request per task for accurate statistics)
    • remove per-Task atomic counters (rely instead on per-request statistics)
  • --reset-stats to optionally reset stats after all threads have hatched
  • GET request method helper
    • properly identify method in stats
  • optionally track fine-grained per-request response codes (ie, GET /index.html: 5 200, 2 500)
  • provide useful statistics at end of load-test
    • merge statistics from client threads into parent
    • response time calculations: min, max, average, median
    • show total and per-second success and fail counts
    • include aggregated totals for all tasks/requests
    • break down percentage of requests within listed times for all tasks/requests
    • optionally provide running statistics
    • only sync client threads to parent when needing to display statistics
    • don't collect response time and other statistics if not displaying them
    • catch ctrl-c and exit gracefully, displaying statistics if enabled
  • host configuration
    • -H --host cli option
    • host attribute
  • wait_time attribute, configurable pause after each Task runs
  • HEAD request method helper
  • PUT request method helper
  • PATCH request method helper
  • DELETE request method helper
  • TaskSequence
    • add special-case 'on-start' that is always first in TaskSet
    • allow weighting of tasks to always run in a given order
    • add special-case 'on-stop' that is always last in TaskSet
  • POST request method helper
  • turn Goose into a library, create a loadtest by creating an app with Cargo
    • compare the pros/cons of this w/ going the dynamic library approach
    • upload to crates.io
  • optimize statistics
    • round and group response times
    • maintain running min/max/average
    • offload to parent process as much as possible
  • add polling to sleeping clients to exit quicker
  • automated testing of Goose logic
  • documentation
  • gaggle support (distributed Geese)
    • 1:n manager:worker processes
    • make gaggle mode optional (adds cmake requirement)
    • load test checksum, warn/err if workers are running different tests
    • code cleanup, better code re-use
  • metaprogramming, implement goose_codegen macros to simplify goosefile creation
  • async clients
    • use Reqwest async client
    • audit code for additional places to use async
  • request logging