summaryrefslogtreecommitdiff
path: root/xdelta3/go/src/xdelta/rstream.go
diff options
context:
space:
mode:
Diffstat (limited to 'xdelta3/go/src/xdelta/rstream.go')
-rw-r--r--xdelta3/go/src/xdelta/rstream.go23
1 files changed, 14 insertions, 9 deletions
diff --git a/xdelta3/go/src/xdelta/rstream.go b/xdelta3/go/src/xdelta/rstream.go
index 3e7265f..3f520d7 100644
--- a/xdelta3/go/src/xdelta/rstream.go
+++ b/xdelta3/go/src/xdelta/rstream.go
@@ -11,25 +11,30 @@ const (
11) 11)
12 12
13func WriteRstreams(t *TestGroup, seed, offset, len int64, 13func WriteRstreams(t *TestGroup, seed, offset, len int64,
14 first, second io.WriteCloser) { 14 src, tgt io.WriteCloser) {
15 go writeOne(t, seed, 0, len, first) 15 t.Go("src", func (g Goroutine) {
16 go writeOne(t, seed, offset, len, second) 16 go writeOne(g, seed, 0, len, src)
17 })
18 t.Go("tgt", func (g Goroutine) {
19 go writeOne(g, seed, offset, len, tgt)
20 })
17} 21}
18 22
19func writeOne(t *TestGroup, seed, offset, len int64, stream io.WriteCloser) error { 23func writeOne(g Goroutine, seed, offset, len int64, stream io.WriteCloser) {
20 t.WaitGroup.Add(1)
21 if offset != 0 { 24 if offset != 0 {
22 // Fill with other random data until the offset 25 // Fill with other random data until the offset
23 if err := writeRand(rand.New(rand.NewSource(^seed)), offset, stream); err != nil { 26 if err := writeRand(rand.New(rand.NewSource(^seed)), offset, stream); err != nil {
24 return err 27 g.Panic(err)
25 } 28 }
26 } 29 }
27 if err := writeRand(rand.New(rand.NewSource(seed)), 30 if err := writeRand(rand.New(rand.NewSource(seed)),
28 len - offset, stream); err != nil { 31 len - offset, stream); err != nil {
29 return err 32 g.Panic(err)
33 }
34 if err := stream.Close(); err != nil {
35 g.Panic(err)
30 } 36 }
31 t.WaitGroup.Done() 37 g.OK()
32 return stream.Close()
33} 38}
34 39
35func writeRand(r *rand.Rand, len int64, s io.Writer) error { 40func writeRand(r *rand.Rand, len int64, s io.Writer) error {