From 15112d6936d27dce00869d931ed0dbddae92ac61 Mon Sep 17 00:00:00 2001 From: Josh MacDonald Date: Mon, 12 Oct 2015 22:05:13 -0700 Subject: Test runs (slowly), still does not pass --- xdelta3/go/src/xdelta/test.go | 92 +++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 42 deletions(-) (limited to 'xdelta3/go/src/xdelta') diff --git a/xdelta3/go/src/xdelta/test.go b/xdelta3/go/src/xdelta/test.go index 50ddeae..9eb47f6 100644 --- a/xdelta3/go/src/xdelta/test.go +++ b/xdelta3/go/src/xdelta/test.go @@ -43,8 +43,8 @@ type Run struct { } func (t *TestGroup) Panic(err error) { - t.WaitGroup.Done() // For the caller - t.WaitGroup.Wait() + t.Done() // For the caller + t.Wait() panic(err) } @@ -52,23 +52,25 @@ func NewTestGroup() *TestGroup { return &TestGroup{} } -func (t *TestGroup) Drain(f io.ReadCloser) <-chan []byte { +func (t *TestGroup) Drain(f io.ReadCloser, desc string) <-chan []byte { c := make(chan []byte) go func() { - t.WaitGroup.Add(1) + t.Add(1) + //fmt.Println("Draining", desc) if b, err := ioutil.ReadAll(f); err != nil { t.Panic(err) } else { + //fmt.Println("Draining", desc, "--got it") c <- b } - t.WaitGroup.Done() + t.Done() }() return c } func (t *TestGroup) Empty(f io.ReadCloser, desc string) { go func() { - t.WaitGroup.Add(1) + t.Add(1) s := bufio.NewScanner(f) for s.Scan() { os.Stderr.Write([]byte(fmt.Sprint(desc, ": ", s.Text(), "\n"))) @@ -76,61 +78,67 @@ func (t *TestGroup) Empty(f io.ReadCloser, desc string) { if err := s.Err(); err != nil { t.Panic(err) } - t.WaitGroup.Done() + t.Done() }() } func (t *TestGroup) Write(what string, f io.WriteCloser, b []byte) { + //fmt.Println("Write (", what, ") ", len(b), "bytes") if _, err := f.Write(b); err != nil { t.Panic(errors.New(fmt.Sprint(what, ":", err))) } + //fmt.Println("Write (", what, ") closing") if err := f.Close(); err != nil { t.Panic(errors.New(fmt.Sprint(what, ":", err))) } } func (t *TestGroup) CopyStreams(r io.ReadCloser, w io.WriteCloser) { - t.Add(1) - _, err := io.Copy(w, r) - if err != nil { - t.Panic(err) - } - err = r.Close() - if err != nil { - t.Panic(err) - } - err = w.Close() - if err != nil { - t.Panic(err) - } - t.Done() -} - -func (t *TestGroup) CompareStreams(r1 io.ReadCloser, r2 io.ReadCloser, length int64) { - t.Add(1) - b1 := make([]byte, blocksize) - b2 := make([]byte, blocksize) - var idx int64 - for length > 0 { - c := blocksize - if length < blocksize { - c = int(length) + go func() { + t.Add(1) + _, err := io.Copy(w, r) + if err != nil { + t.Panic(err) } - if _, err := io.ReadFull(r1, b1[0:c]); err != nil { + err = r.Close() + if err != nil { t.Panic(err) } - if _, err := io.ReadFull(r2, b2[0:c]); err != nil { + err = w.Close() + if err != nil { t.Panic(err) } - if bytes.Compare(b1[0:c], b2[0:c]) != 0 { - fmt.Println("B1 is", string(b1[0:c])) - fmt.Println("B2 is", string(b2[0:c])) - t.Panic(errors.New(fmt.Sprint("Bytes do not compare at ", idx))) + t.Done() + }() +} + +func (t *TestGroup) CompareStreams(r1 io.ReadCloser, r2 io.ReadCloser, length int64) { + go func() { + t.Add(1) + b1 := make([]byte, blocksize) + b2 := make([]byte, blocksize) + var idx int64 + for length > 0 { + c := blocksize + if length < blocksize { + c = int(length) + } + if _, err := io.ReadFull(r1, b1[0:c]); err != nil { + t.Panic(err) + } + if _, err := io.ReadFull(r2, b2[0:c]); err != nil { + t.Panic(err) + } + if bytes.Compare(b1[0:c], b2[0:c]) != 0 { + fmt.Println("B1 is", string(b1[0:c])) + fmt.Println("B2 is", string(b2[0:c])) + t.Panic(errors.New(fmt.Sprint("Bytes do not compare at ", idx))) + } + length -= int64(c) + idx += int64(c) } - length -= int64(c) - idx += int64(c) - } - t.Done() + t.Done() + }() } func NewRunner() (*Runner, error) { -- cgit v1.2.3