diff --git a/client.go b/client.go index 46f5533..53ccb4e 100644 --- a/client.go +++ b/client.go @@ -11,7 +11,7 @@ import ( // TODO: Add timeouts type Client struct { http.Client - rate uint + rate uint64 } // Response represents the metrics we want out of an http.Response @@ -25,12 +25,12 @@ type Response struct { } // NewClient returns an initialized Client -func NewClient(rate uint) *Client { +func NewClient(rate uint64) *Client { return &Client{http.Client{}, rate} } // Drill loops over the passed reqs channel and executes each request. -// It is throttled to the qps specified in the initializer +// It is throttled to the rate specified in the initializer func (c *Client) Drill(reqs chan *http.Request, res chan *Response) { throttle := time.Tick(time.Duration(1e9 / c.rate)) for req := range reqs { diff --git a/main.go b/main.go index 876e11a..0b89248 100644 --- a/main.go +++ b/main.go @@ -16,7 +16,7 @@ func init() { func main() { var ( - rate = flag.Uint("rate", 50, "Requests per second") + rate = flag.Uint64("rate", 50, "Requests per second") targetsf = flag.String("targets", "targets.txt", "Targets file") ordering = flag.String("ordering", "random", "Attack ordering [sequential, random]") duration = flag.Duration("duration", 10*time.Second, "Duration of the test") @@ -84,8 +84,8 @@ func main() { } } -func attack(targets Targets, ordering string, rate uint, duration time.Duration, rep Reporter) { - hits := make(chan *http.Request, rate*uint((duration).Seconds())) +func attack(targets Targets, ordering string, rate uint64, duration time.Duration, rep Reporter) { + hits := make(chan *http.Request, rate*uint64((duration).Seconds())) defer close(hits) responses := make(chan *Response, cap(hits)) defer close(responses)