[ARVADOS] updated: 519ab4c83aeb44ce91da941ecc191d00b6c6c72b
Git user
git at public.curoverse.com
Wed Feb 1 16:31:27 EST 2017
Summary of changes:
sdk/go/keepclient/collectionreader_test.go | 50 +++++++++++++++++++++++++++---
1 file changed, 46 insertions(+), 4 deletions(-)
via 519ab4c83aeb44ce91da941ecc191d00b6c6c72b (commit)
via 1bba7f8fb361186ad040b521d168a73abd8fdd65 (commit)
from f927cd24852edcd7a8389533e96a16cf6877e58f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 519ab4c83aeb44ce91da941ecc191d00b6c6c72b
Merge: f927cd2 1bba7f8
Author: Tom Clegg <tom at curoverse.com>
Date: Wed Feb 1 16:31:06 2017 -0500
Merge branch '10990-keep-web-ranges'
closes #10990
commit 1bba7f8fb361186ad040b521d168a73abd8fdd65
Author: Tom Clegg <tom at curoverse.com>
Date: Wed Feb 1 16:29:16 2017 -0500
10990: Add Seek tests.
diff --git a/sdk/go/keepclient/collectionreader_test.go b/sdk/go/keepclient/collectionreader_test.go
index 6f49c59..7b2e94e 100644
--- a/sdk/go/keepclient/collectionreader_test.go
+++ b/sdk/go/keepclient/collectionreader_test.go
@@ -2,10 +2,10 @@ package keepclient
import (
"crypto/md5"
- "crypto/rand"
"fmt"
"io"
"io/ioutil"
+ "math/rand"
"net/http"
"os"
"strconv"
@@ -161,28 +161,70 @@ func (s *CollectionReaderUnit) TestCollectionReaderContent(c *check.C) {
func (s *CollectionReaderUnit) TestCollectionReaderManyBlocks(c *check.C) {
h := md5.New()
+ var testdata []byte
buf := make([]byte, 4096)
locs := make([]string, len(buf))
filesize := 0
for i := 0; i < len(locs); i++ {
- _, err := io.ReadFull(rand.Reader, buf[:i])
- c.Assert(err, check.IsNil)
+ _, err := rand.Read(buf[:i])
h.Write(buf[:i])
locs[i], _, err = s.kc.PutB(buf[:i])
c.Assert(err, check.IsNil)
filesize += i
+ testdata = append(testdata, buf[:i]...)
}
manifest := "./random " + strings.Join(locs, " ") + " 0:" + strconv.Itoa(filesize) + ":bytes.bin\n"
dataMD5 := h.Sum(nil)
checkMD5 := md5.New()
rdr, err := s.kc.CollectionFileReader(map[string]interface{}{"manifest_text": manifest}, "random/bytes.bin")
- c.Check(err, check.IsNil)
+ c.Assert(err, check.IsNil)
+ defer rdr.Close()
+
_, err = io.Copy(checkMD5, rdr)
c.Check(err, check.IsNil)
_, err = rdr.Read(make([]byte, 1))
c.Check(err, check.Equals, io.EOF)
c.Check(checkMD5.Sum(nil), check.DeepEquals, dataMD5)
+
+ size, err := rdr.Seek(0, io.SeekEnd)
+ c.Check(err, check.IsNil)
+ buf = make([]byte, len(testdata))
+ copy(buf, testdata)
+ curPos := size
+ for i := 0; i < 16; i++ {
+ offset := rand.Intn(len(buf) - 1)
+ count := rand.Intn(len(buf) - offset)
+ if rand.Intn(2) == 0 {
+ curPos, err = rdr.Seek(int64(offset)-curPos, io.SeekCurrent)
+ } else {
+ curPos, err = rdr.Seek(int64(offset), io.SeekStart)
+ }
+ c.Check(curPos, check.Equals, int64(offset))
+ for count > 0 {
+ n, err := rdr.Read(buf[offset : offset+count])
+ c.Assert(err, check.IsNil)
+ c.Assert(n > 0, check.Equals, true)
+ offset += n
+ count -= n
+ }
+ curPos, err = rdr.Seek(0, io.SeekCurrent)
+ c.Check(curPos, check.Equals, int64(offset))
+ }
+ c.Check(md5.Sum(buf), check.DeepEquals, md5.Sum(testdata))
+ c.Check(buf[:1000], check.DeepEquals, testdata[:1000])
+
+ curPos, err = rdr.Seek(size+12345, io.SeekCurrent)
+ c.Check(err, check.IsNil)
+ c.Check(curPos, check.Equals, size)
+
+ curPos, err = rdr.Seek(8-size, io.SeekCurrent)
+ c.Check(err, check.IsNil)
+ c.Check(curPos, check.Equals, int64(8))
+
+ curPos, err = rdr.Seek(-9, io.SeekCurrent)
+ c.Check(err, check.NotNil)
+ c.Check(curPos, check.Equals, int64(8))
}
func (s *CollectionReaderUnit) TestCollectionReaderCloseEarly(c *check.C) {
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list