Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit 03289a4

Browse files
committed
Add benchmark for pipe roundtrip
Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
1 parent d6b0ffa commit 03289a4

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

inmem_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,5 +361,39 @@ func SpawnPipeTestRoutines(t *testing.T, s SendTestRoutine, r ReceiveTestRoutine
361361
t.Fatal("Timeout")
362362
}
363363
}
364+
}
365+
366+
type BenchMessage struct {
367+
I int
368+
}
364369

370+
func BenchmarkRoundTrip(b *testing.B) {
371+
r1, s1 := Pipe()
372+
r2, s2 := Pipe()
373+
go func() {
374+
var m BenchMessage
375+
for {
376+
if err := r1.Receive(&m); err != nil {
377+
b.Fatalf("Error receiving BenchMessage: %s", err)
378+
}
379+
if err := s2.Send(&m); err != nil {
380+
b.Fatalf("Error sending BenchMessage: %s", err)
381+
}
382+
}
383+
}()
384+
385+
var sm BenchMessage
386+
var rm BenchMessage
387+
for i := 0; i < b.N; i++ {
388+
sm.I = i
389+
if err := s1.Send(&sm); err != nil {
390+
b.Fatalf("Error sending bench message: %s", err)
391+
}
392+
if err := r2.Receive(&rm); err != nil {
393+
b.Fatalf("Error receiving bench message: %s", err)
394+
}
395+
if rm.I != sm.I {
396+
b.Errorf("Wrong int received: %d, expecting: %d", rm.I, sm.I)
397+
}
398+
}
365399
}

0 commit comments

Comments
 (0)