From 7d13447b64506ea07c912691b1ed1624c52f87ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Senart?= Date: Fri, 16 Aug 2013 19:38:57 +0200 Subject: [PATCH] Simplify random ordering code --- main.go | 7 +++---- targets.go | 14 ++++++-------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/main.go b/main.go index 51fc45e..876e11a 100644 --- a/main.go +++ b/main.go @@ -4,7 +4,6 @@ import ( "flag" "io" "log" - "math/rand" "net/http" "os" "runtime" @@ -42,7 +41,7 @@ func main() { switch *ordering { case "random": - rand.Seed(time.Now().UnixNano()) + targets.Shuffle(time.Now().UnixNano()) case "sequential": break default: @@ -92,8 +91,8 @@ func attack(targets Targets, ordering string, rate uint, duration time.Duration, defer close(responses) client := NewClient(rate) go client.Drill(hits, responses) // Attack! - for i, idxs := 0, targets.Iter(ordering); i < cap(hits); i++ { - hits <- targets[idxs[i%len(idxs)]] + for i := 0; i < cap(hits); i++ { + hits <- targets[i%len(targets)] } // Wait for all requests to finish for i := 0; i < cap(responses); i++ { diff --git a/targets.go b/targets.go index 07d219e..f97cec9 100644 --- a/targets.go +++ b/targets.go @@ -49,13 +49,11 @@ func NewTargets(source io.Reader) (Targets, error) { return targets, nil } -func (t Targets) Iter(ordering string) []int { - if ordering == "random" { - return rand.Perm(len(t)) +func (t Targets) Shuffle(seed int64) { + rand.Seed(seed) + for i, rnd := range rand.Perm(len(t)) { + tmp := t[i] + t[i] = t[rnd] + t[rnd] = tmp } - iter := make([]int, len(t)) - for i := 0; i < len(t); i++ { - iter[i] = i - } - return iter }