From f943991bc0d17b353a682f2083d6ffd82fc474ea Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Fri, 23 Jun 2023 18:32:13 +0200 Subject: [PATCH] yamux bench test: open sub conn --- net/transport/yamux/yamux_test.go | 61 ++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/net/transport/yamux/yamux_test.go b/net/transport/yamux/yamux_test.go index b71f15a9..9b209054 100644 --- a/net/transport/yamux/yamux_test.go +++ b/net/transport/yamux/yamux_test.go @@ -73,11 +73,11 @@ func TestYamuxTransport_Dial(t *testing.T) { // no deadline - 69100 rps // common write deadline - 66700 rps // subconn write deadline - 67100 rps -func TestWriteBench(t *testing.T) { +func TestWriteBenchReuse(t *testing.T) { t.Skip() var ( numSubConn = 10 - numWrites = 100000 + numWrites = 10000 ) fxS := newFixture(t) @@ -128,6 +128,63 @@ func TestWriteBench(t *testing.T) { t.Logf("%.2f req per sec", float64(numWrites*numSubConn)/dur.Seconds()) } +func TestWriteBenchNew(t *testing.T) { + t.Skip() + var ( + numSubConn = 10 + numWrites = 10000 + ) + + fxS := newFixture(t) + defer fxS.finish(t) + fxC := newFixture(t) + defer fxC.finish(t) + + mcC, err := fxC.Dial(ctx, fxS.addr) + require.NoError(t, err) + mcS := <-fxS.accepter.mcs + + go func() { + for i := 0; i < numSubConn; i++ { + require.NoError(t, err) + go func() { + var b = make([]byte, 1024) + for { + conn, _ := mcS.Accept() + n, _ := conn.Read(b) + if n > 0 { + conn.Write(b[:n]) + } else { + _ = conn.Close() + break + } + conn.Close() + } + }() + } + }() + + var wg sync.WaitGroup + wg.Add(numSubConn) + st := time.Now() + for i := 0; i < numSubConn; i++ { + go func() { + defer wg.Done() + for j := 0; j < numWrites; j++ { + sc, err := mcC.Open(ctx) + require.NoError(t, err) + var b = []byte("some data some data some data some data some data some data some data some data some data") + sc.Write(b) + sc.Read(b) + sc.Close() + } + }() + } + wg.Wait() + dur := time.Since(st) + t.Logf("%.2f req per sec", float64(numWrites*numSubConn)/dur.Seconds()) +} + type fixture struct { *yamuxTransport a *app.App