Simplify random ordering code

This commit is contained in:
Tomás Senart
2013-08-16 19:38:57 +02:00
parent e296881ac2
commit 7d13447b64
2 changed files with 9 additions and 12 deletions

View File

@@ -4,7 +4,6 @@ import (
"flag" "flag"
"io" "io"
"log" "log"
"math/rand"
"net/http" "net/http"
"os" "os"
"runtime" "runtime"
@@ -42,7 +41,7 @@ func main() {
switch *ordering { switch *ordering {
case "random": case "random":
rand.Seed(time.Now().UnixNano()) targets.Shuffle(time.Now().UnixNano())
case "sequential": case "sequential":
break break
default: default:
@@ -92,8 +91,8 @@ func attack(targets Targets, ordering string, rate uint, duration time.Duration,
defer close(responses) defer close(responses)
client := NewClient(rate) client := NewClient(rate)
go client.Drill(hits, responses) // Attack! go client.Drill(hits, responses) // Attack!
for i, idxs := 0, targets.Iter(ordering); i < cap(hits); i++ { for i := 0; i < cap(hits); i++ {
hits <- targets[idxs[i%len(idxs)]] hits <- targets[i%len(targets)]
} }
// Wait for all requests to finish // Wait for all requests to finish
for i := 0; i < cap(responses); i++ { for i := 0; i < cap(responses); i++ {

View File

@@ -49,13 +49,11 @@ func NewTargets(source io.Reader) (Targets, error) {
return targets, nil return targets, nil
} }
func (t Targets) Iter(ordering string) []int { func (t Targets) Shuffle(seed int64) {
if ordering == "random" { rand.Seed(seed)
return rand.Perm(len(t)) 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
} }