本文整理匯總了Golang中camlistore/org/pkg/test.Fetcher.Fetch方法的典型用法代碼示例。如果您正苦於以下問題:Golang Fetcher.Fetch方法的具體用法?Golang Fetcher.Fetch怎麽用?Golang Fetcher.Fetch使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類camlistore/org/pkg/test.Fetcher
的用法示例。
在下文中一共展示了Fetcher.Fetch方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: TestReaderForeachChunk
func TestReaderForeachChunk(t *testing.T) {
fileSize := 4 << 20
if testing.Short() {
fileSize = 1 << 20
}
bigFile := make([]byte, fileSize)
rnd := rand.New(rand.NewSource(1))
for i := range bigFile {
bigFile[i] = byte(rnd.Intn(256))
}
sto := new(test.Fetcher) // in-memory blob storage
fileMap := NewFileMap("testfile")
fileref, err := WriteFileMap(sto, fileMap, bytes.NewReader(bigFile))
if err != nil {
t.Fatalf("WriteFileMap: %v", err)
}
fr, err := NewFileReader(sto, fileref)
if err != nil {
t.Fatal(err)
}
var back bytes.Buffer
var totSize uint64
err = fr.ForeachChunk(func(sref []blob.Ref, p BytesPart) error {
if len(sref) < 1 {
t.Fatal("expected at least one schemaPath blob")
}
for i, br := range sref {
if !br.Valid() {
t.Fatalf("invalid schema blob in path index %d", i)
}
}
if p.BytesRef.Valid() {
t.Fatal("should never see a valid BytesRef")
}
if !p.BlobRef.Valid() {
t.Fatal("saw part with invalid blobref")
}
rc, size, err := sto.Fetch(p.BlobRef)
if err != nil {
return fmt.Errorf("Error fetching blobref of chunk %+v: %v", p, err)
}
defer rc.Close()
totSize += p.Size
if uint64(size) != p.Size {
return fmt.Errorf("fetched size %d doesn't match expected for chunk %+v", size, p)
}
n, err := io.Copy(&back, rc)
if err != nil {
return err
}
if n != int64(size) {
return fmt.Errorf("Copied unexpected %d bytes of chunk %+v", n, p)
}
return nil
})
if err != nil {
t.Fatalf("ForeachChunk = %v", err)
}
if back.Len() != fileSize {
t.Fatalf("Read file is %d bytes; want %d", back.Len(), fileSize)
}
if totSize != uint64(fileSize) {
t.Errorf("sum of parts = %d; want %d", totSize, fileSize)
}
if !bytes.Equal(back.Bytes(), bigFile) {
t.Errorf("file read mismatch")
}
}