From: Matt Joiner Date: Tue, 12 Sep 2017 14:58:54 +0000 (+1000) Subject: mse: Add a read/write benchmark X-Git-Tag: v1.0.0~404 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=f1d292203e014404b3d0d8a689a45f184d6996bc;p=btrtrc.git mse: Add a read/write benchmark --- 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() + } + } +}