How g-h-0-s-t/hulk works
HULK is a command-line HTTP load-testing tool. Its primary workflow parses target and request options, starts a bounded pool of goroutines, repeatedly constructs and sends GET or POST requests with randomized query data and headers, then reports outcomes and can stop in safe mode after a server error response. The Go implementation is concentrated in hulk.go; the Python port is a separate legacy implementation. The graph focuses on the documented Go runtime; the source does not expose separate domain modules or a persistent store.
Main entry points: hulk.go Options and launcher
Components 13
CLI and control
- Options and launcher
hulk.go
Request generation
- HTTP worker
hulk.go - Request builder
hulk.go - Random query and headers
hulk.go - HTTP client
hulk.go
Concurrency and reporting
- Goroutine pool
hulk.go - Outcome and stop logic
hulk.go - Progress output
hulk.go
Other components
- Operator
- Target server
- OS signals
- User-agent file
- Python port
hulk.py
Connections 13
- Operator → Options and launcher: sets options
- Options and launcher → User-agent file: reads agents
- Options and launcher → Goroutine pool: starts workers
- Goroutine pool → HTTP worker: launches
- HTTP worker → Request builder: builds requests
- Request builder → Random query and headers: uses values
- HTTP worker → HTTP client: sends request
- HTTP client → Target server: HTTP traffic
- HTTP client → Outcome and stop logic: reports result
- Outcome and stop logic → Goroutine pool: adjusts pool
- Outcome and stop logic → Progress output: reports progress
- Operator → OS signals: interrupts
- OS signals → Options and launcher: notifies