|
@@ -10,11 +10,11 @@ import (
|
|
|
|
|
|
func TestBytesPipeRead(t *testing.T) {
|
|
|
buf := NewBytesPipe()
|
|
|
- buf.Write([]byte("12"))
|
|
|
- buf.Write([]byte("34"))
|
|
|
- buf.Write([]byte("56"))
|
|
|
- buf.Write([]byte("78"))
|
|
|
- buf.Write([]byte("90"))
|
|
|
+ _, _ = buf.Write([]byte("12"))
|
|
|
+ _, _ = buf.Write([]byte("34"))
|
|
|
+ _, _ = buf.Write([]byte("56"))
|
|
|
+ _, _ = buf.Write([]byte("78"))
|
|
|
+ _, _ = buf.Write([]byte("90"))
|
|
|
rd := make([]byte, 4)
|
|
|
n, err := buf.Read(rd)
|
|
|
if err != nil {
|
|
@@ -50,11 +50,11 @@ func TestBytesPipeRead(t *testing.T) {
|
|
|
|
|
|
func TestBytesPipeWrite(t *testing.T) {
|
|
|
buf := NewBytesPipe()
|
|
|
- buf.Write([]byte("12"))
|
|
|
- buf.Write([]byte("34"))
|
|
|
- buf.Write([]byte("56"))
|
|
|
- buf.Write([]byte("78"))
|
|
|
- buf.Write([]byte("90"))
|
|
|
+ _, _ = buf.Write([]byte("12"))
|
|
|
+ _, _ = buf.Write([]byte("34"))
|
|
|
+ _, _ = buf.Write([]byte("56"))
|
|
|
+ _, _ = buf.Write([]byte("78"))
|
|
|
+ _, _ = buf.Write([]byte("90"))
|
|
|
if buf.buf[0].String() != "1234567890" {
|
|
|
t.Fatalf("Buffer %q, must be %q", buf.buf[0].String(), "1234567890")
|
|
|
}
|
|
@@ -121,12 +121,12 @@ func TestBytesPipeDeadlock(t *testing.T) {
|
|
|
|
|
|
// Write and read in different speeds/chunk sizes and check valid data is read.
|
|
|
func TestBytesPipeWriteRandomChunks(t *testing.T) {
|
|
|
- cases := []struct{ iterations, writesPerLoop, readsPerLoop int }{
|
|
|
- {100, 10, 1},
|
|
|
- {1000, 10, 5},
|
|
|
- {1000, 100, 0},
|
|
|
- {1000, 5, 6},
|
|
|
- {10000, 50, 25},
|
|
|
+ tests := []struct{ iterations, writesPerLoop, readsPerLoop int }{
|
|
|
+ {iterations: 100, writesPerLoop: 10, readsPerLoop: 1},
|
|
|
+ {iterations: 1000, writesPerLoop: 10, readsPerLoop: 5},
|
|
|
+ {iterations: 1000, writesPerLoop: 100},
|
|
|
+ {iterations: 1000, writesPerLoop: 5, readsPerLoop: 6},
|
|
|
+ {iterations: 10000, writesPerLoop: 50, readsPerLoop: 25},
|
|
|
}
|
|
|
|
|
|
testMessage := []byte("this is a random string for testing")
|
|
@@ -134,10 +134,10 @@ func TestBytesPipeWriteRandomChunks(t *testing.T) {
|
|
|
writeChunks := []int{25, 35, 15, 20}
|
|
|
readChunks := []int{5, 45, 20, 25}
|
|
|
|
|
|
- for _, c := range cases {
|
|
|
+ for _, tc := range tests {
|
|
|
// first pass: write directly to hash
|
|
|
hash := sha256.New()
|
|
|
- for i := 0; i < c.iterations*c.writesPerLoop; i++ {
|
|
|
+ for i := 0; i < tc.iterations*tc.writesPerLoop; i++ {
|
|
|
if _, err := hash.Write(testMessage[:writeChunks[i%len(writeChunks)]]); err != nil {
|
|
|
t.Fatal(err)
|
|
|
}
|
|
@@ -154,7 +154,7 @@ func TestBytesPipeWriteRandomChunks(t *testing.T) {
|
|
|
// random delay before read starts
|
|
|
<-time.After(time.Duration(rand.Intn(10)) * time.Millisecond)
|
|
|
for i := 0; ; i++ {
|
|
|
- p := make([]byte, readChunks[(c.iterations*c.readsPerLoop+i)%len(readChunks)])
|
|
|
+ p := make([]byte, readChunks[(tc.iterations*tc.readsPerLoop+i)%len(readChunks)])
|
|
|
n, _ := buf.Read(p)
|
|
|
if n == 0 {
|
|
|
break
|
|
@@ -165,12 +165,12 @@ func TestBytesPipeWriteRandomChunks(t *testing.T) {
|
|
|
close(done)
|
|
|
}()
|
|
|
|
|
|
- for i := 0; i < c.iterations; i++ {
|
|
|
- for w := 0; w < c.writesPerLoop; w++ {
|
|
|
- buf.Write(testMessage[:writeChunks[(i*c.writesPerLoop+w)%len(writeChunks)]])
|
|
|
+ for i := 0; i < tc.iterations; i++ {
|
|
|
+ for w := 0; w < tc.writesPerLoop; w++ {
|
|
|
+ buf.Write(testMessage[:writeChunks[(i*tc.writesPerLoop+w)%len(writeChunks)]])
|
|
|
}
|
|
|
}
|
|
|
- buf.Close()
|
|
|
+ _ = buf.Close()
|
|
|
<-done
|
|
|
|
|
|
actual := hex.EncodeToString(hash.Sum(nil))
|
|
@@ -182,6 +182,7 @@ func TestBytesPipeWriteRandomChunks(t *testing.T) {
|
|
|
}
|
|
|
|
|
|
func BenchmarkBytesPipeWrite(b *testing.B) {
|
|
|
+ b.ReportAllocs()
|
|
|
testData := []byte("pretty short line, because why not?")
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
readBuf := make([]byte, 1024)
|
|
@@ -193,19 +194,20 @@ func BenchmarkBytesPipeWrite(b *testing.B) {
|
|
|
}
|
|
|
}()
|
|
|
for j := 0; j < 1000; j++ {
|
|
|
- buf.Write(testData)
|
|
|
+ _, _ = buf.Write(testData)
|
|
|
}
|
|
|
- buf.Close()
|
|
|
+ _ = buf.Close()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
func BenchmarkBytesPipeRead(b *testing.B) {
|
|
|
+ b.ReportAllocs()
|
|
|
rd := make([]byte, 512)
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
b.StopTimer()
|
|
|
buf := NewBytesPipe()
|
|
|
for j := 0; j < 500; j++ {
|
|
|
- buf.Write(make([]byte, 1024))
|
|
|
+ _, _ = buf.Write(make([]byte, 1024))
|
|
|
}
|
|
|
b.StartTimer()
|
|
|
for j := 0; j < 1000; j++ {
|