]> Sergey Matveev's repositories - btrtrc.git/commitdiff
mse: Add a read/write benchmark
authorMatt Joiner <anacrolix@gmail.com>
Tue, 12 Sep 2017 14:58:54 +0000 (00:58 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 12 Sep 2017 14:58:54 +0000 (00:58 +1000)
mse/mse_test.go

index 6c2799542e79f02966e9d353940beaca1bf115b3..8c283e568f9e27bc43cb5512fb5752998a931424 100644 (file)
@@ -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()
+               }
+       }
+}