]> Cypherpunks repositories - gostls13.git/commitdiff
net/rpc: use RunParallel in benchmarks
authorDmitriy Vyukov <dvyukov@google.com>
Mon, 24 Feb 2014 16:23:35 +0000 (20:23 +0400)
committerDmitriy Vyukov <dvyukov@google.com>
Mon, 24 Feb 2014 16:23:35 +0000 (20:23 +0400)
LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/68040044

src/pkg/net/rpc/server_test.go

index 3b9a88380cfa25f1d032e771c04464d9dcb0cc73..0dc4ddc2de01cb0e130b0f569e13f16e1c21646f 100644 (file)
@@ -594,7 +594,6 @@ func TestErrorAfterClientClose(t *testing.T) {
 }
 
 func benchmarkEndToEnd(dial func() (*Client, error), b *testing.B) {
-       b.StopTimer()
        once.Do(startServer)
        client, err := dial()
        if err != nil {
@@ -604,33 +603,24 @@ func benchmarkEndToEnd(dial func() (*Client, error), b *testing.B) {
 
        // Synchronous calls
        args := &Args{7, 8}
-       procs := runtime.GOMAXPROCS(-1)
-       N := int32(b.N)
-       var wg sync.WaitGroup
-       wg.Add(procs)
-       b.StartTimer()
-
-       for p := 0; p < procs; p++ {
-               go func() {
-                       reply := new(Reply)
-                       for atomic.AddInt32(&N, -1) >= 0 {
-                               err := client.Call("Arith.Add", args, reply)
-                               if err != nil {
-                                       b.Fatalf("rpc error: Add: expected no error but got string %q", err.Error())
-                               }
-                               if reply.C != args.A+args.B {
-                                       b.Fatalf("rpc error: Add: expected %d got %d", reply.C, args.A+args.B)
-                               }
+       b.ResetTimer()
+
+       b.RunParallel(func(pb *testing.PB) {
+               reply := new(Reply)
+               for pb.Next() {
+                       err := client.Call("Arith.Add", args, reply)
+                       if err != nil {
+                               b.Fatalf("rpc error: Add: expected no error but got string %q", err.Error())
                        }
-                       wg.Done()
-               }()
-       }
-       wg.Wait()
+                       if reply.C != args.A+args.B {
+                               b.Fatalf("rpc error: Add: expected %d got %d", reply.C, args.A+args.B)
+                       }
+               }
+       })
 }
 
 func benchmarkEndToEndAsync(dial func() (*Client, error), b *testing.B) {
        const MaxConcurrentCalls = 100
-       b.StopTimer()
        once.Do(startServer)
        client, err := dial()
        if err != nil {
@@ -647,7 +637,7 @@ func benchmarkEndToEndAsync(dial func() (*Client, error), b *testing.B) {
        wg.Add(procs)
        gate := make(chan bool, MaxConcurrentCalls)
        res := make(chan *Call, MaxConcurrentCalls)
-       b.StartTimer()
+       b.ResetTimer()
 
        for p := 0; p < procs; p++ {
                go func() {