+++ /dev/null
-package yamux
-
-import (
- "testing"
-)
-
-func BenchmarkPing(b *testing.B) {
- client, server := testClientServer()
- defer client.Close()
- defer server.Close()
-
- for i := 0; i < b.N; i++ {
- rtt, err := client.Ping()
- if err != nil {
- b.Fatalf("err: %v", err)
- }
- if rtt == 0 {
- b.Fatalf("bad: %v", rtt)
- }
- }
-}
-
-func BenchmarkAccept(b *testing.B) {
- client, server := testClientServer()
- defer client.Close()
- defer server.Close()
-
- go func() {
- for i := 0; i < b.N; i++ {
- stream, err := server.AcceptStream()
- if err != nil {
- return
- }
- stream.Close()
- }
- }()
-
- for i := 0; i < b.N; i++ {
- stream, err := client.Open()
- if err != nil {
- b.Fatalf("err: %v", err)
- }
- stream.Close()
- }
-}
-
-func BenchmarkSendRecv(b *testing.B) {
- client, server := testClientServer()
- defer client.Close()
- defer server.Close()
-
- sendBuf := make([]byte, 512)
- recvBuf := make([]byte, 512)
-
- doneCh := make(chan struct{})
- go func() {
- stream, err := server.AcceptStream()
- if err != nil {
- return
- }
- defer stream.Close()
- for i := 0; i < b.N; i++ {
- if _, err := stream.Read(recvBuf); err != nil {
- b.Fatalf("err: %v", err)
- }
- }
- close(doneCh)
- }()
-
- stream, err := client.Open()
- if err != nil {
- b.Fatalf("err: %v", err)
- }
- defer stream.Close()
- for i := 0; i < b.N; i++ {
- if _, err := stream.Write(sendBuf); err != nil {
- b.Fatalf("err: %v", err)
- }
- }
- <-doneCh
-}
-
-func BenchmarkSendRecvLarge(b *testing.B) {
- client, server := testClientServer()
- defer client.Close()
- defer server.Close()
- const sendSize = 512 * 1024 * 1024
- const recvSize = 4 * 1024
-
- sendBuf := make([]byte, sendSize)
- recvBuf := make([]byte, recvSize)
-
- b.ResetTimer()
- recvDone := make(chan struct{})
-
- go func() {
- stream, err := server.AcceptStream()
- if err != nil {
- return
- }
- defer stream.Close()
- for i := 0; i < b.N; i++ {
- for j := 0; j < sendSize/recvSize; j++ {
- if _, err := stream.Read(recvBuf); err != nil {
- b.Fatalf("err: %v", err)
- }
- }
- }
- close(recvDone)
- }()
-
- stream, err := client.Open()
- if err != nil {
- b.Fatalf("err: %v", err)
- }
- defer stream.Close()
- for i := 0; i < b.N; i++ {
- if _, err := stream.Write(sendBuf); err != nil {
- b.Fatalf("err: %v", err)
- }
- }
- <-recvDone
-}