From f1d292203e014404b3d0d8a689a45f184d6996bc Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 13 Sep 2017 00:58:54 +1000 Subject: [PATCH] mse: Add a read/write benchmark --- mse/mse_test.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/mse/mse_test.go b/mse/mse_test.go index 6c279954..8c283e56 100644 --- a/mse/mse_test.go +++ b/mse/mse_test.go @@ -3,6 +3,7 @@ package mse import ( "bytes" "crypto/rand" + "crypto/rc4" "io" "io/ioutil" "net" @@ -125,3 +126,41 @@ func TestReceiveRandomData(t *testing.T) { // synchronizing. require.EqualValues(t, 96+532, tr.n) } + +func BenchmarkPipe(t *testing.B) { + key := make([]byte, 20) + n, _ := rand.Read(key) + require.Equal(t, len(key), n) + var buf bytes.Buffer + c, err := rc4.NewCipher(key) + require.NoError(t, err) + r := cipherReader{ + c: c, + r: &buf, + } + c, err = rc4.NewCipher(key) + require.NoError(t, err) + w := cipherWriter{ + c: c, + w: &buf, + } + a := make([]byte, 0x1000) + n, _ = io.ReadFull(rand.Reader, a) + require.Equal(t, len(a), n) + b := make([]byte, len(a)) + t.SetBytes(int64(len(a))) + t.ResetTimer() + for range iter.N(t.N) { + n, _ = w.Write(a) + if n != len(a) { + t.FailNow() + } + n, _ = r.Read(b) + if n != len(b) { + t.FailNow() + } + if !bytes.Equal(a, b) { + t.FailNow() + } + } +} -- 2.48.1