github.com/aarzilli/tools@v0.0.0-20151123112009-0d27094f75e0/distrib/test/t4_test.go (about) 1 // +build p4 2 // go test -tags=p4 3 4 package test 5 6 import ( 7 "fmt" 8 "math/rand" 9 "testing" 10 "time" 11 12 "github.com/pbberlin/tools/distrib" 13 ) 14 15 var opt = distrib.NewDefaultOptions() 16 17 type MyWorker struct { 18 Inp, Res int 19 } 20 21 func (m *MyWorker) Work() { 22 m.Res = 500 + m.Inp 23 time.Sleep(time.Millisecond * time.Duration(rand.Intn(20))) 24 } 25 26 func Test4(t *testing.T) { 27 opt.CollectRemainder = true 28 do(t, 3) 29 30 } 31 32 func Test5(t *testing.T) { 33 // opt.CollectRemainder = false 34 // do(t, 3) 35 } 36 37 func Test6(t *testing.T) { 38 opt.CollectRemainder = true 39 opt.Want = 4 40 do(t, 20) 41 } 42 43 func Test7(t *testing.T) { 44 opt.CollectRemainder = false 45 opt.Want = 4 46 do(t, 20) 47 } 48 49 func do(t *testing.T, precreatedPackets int) { 50 51 rand.Seed(time.Now().UnixNano()) 52 53 fmt.Printf("\n--------------------\n") 54 55 jobs := make([]distrib.Worker, 0, precreatedPackets) 56 for i := 0; i < precreatedPackets; i++ { 57 job := distrib.Worker(&MyWorker{Inp: i}) 58 jobs = append(jobs, job) 59 } 60 61 ret, msg := distrib.Distrib(jobs, opt) 62 fmt.Print(msg.String()) 63 64 if len(ret) != precreatedPackets { 65 // t.Errorf("wnt %v got %v", precreatedPackets, len(ret)) 66 } 67 68 for k, v := range ret { 69 v1, _ := v.Worker.(*MyWorker) 70 fmt.Printf(" %2v %2v => %v\n", k, v1.Inp, v1.Res) 71 if v1.Inp != v1.Res-500 { 72 t.Errorf("%v %v", v1.Inp, v1.Res) 73 } 74 } 75 76 }