func BenchmarkDataTransfer(b *testing.B) { duplexa := pipes.NewDuplex(16) duplexb := pipes.NewDuplex(16) go bindDuplexWithCopy(duplexa, duplexb) done := make(chan struct{}) go func() { for _ = range duplexa.In { // Throw it all away, // all of your hopes and dreams // piped out to /dev/null... done <- struct{}{} } }() data := make([]byte, 1024*512) util.NewTimeSeededRand().Read(data) // Begin actual benchmarking b.ResetTimer() for i := 0; i < b.N; i++ { b.SetBytes(int64(len(data))) duplexb.Out <- data <-done } }
func randNode() (*mdag.Node, util.Key) { nd := new(mdag.Node) nd.Data = make([]byte, 32) util.NewTimeSeededRand().Read(nd.Data) k, _ := nd.Key() return nd, k }
func TestBuilderConsistency(t *testing.T) { nbytes := 100000 buf := new(bytes.Buffer) io.CopyN(buf, u.NewTimeSeededRand(), int64(nbytes)) should := dup(buf.Bytes()) dagserv := testutil.GetDAGServ(t) nd, err := BuildDagFromReader(buf, dagserv, nil, chunk.DefaultSplitter) if err != nil { t.Fatal(err) } r, err := uio.NewDagReader(nd, dagserv) if err != nil { t.Fatal(err) } out, err := ioutil.ReadAll(r) if err != nil { t.Fatal(err) } err = arrComp(out, should) if err != nil { t.Fatal(err) } }
func runEncryptBenchmark(b *testing.B) { pstore := peer.NewPeerstore() ctx := context.TODO() bufsize := 1024 * 1024 pa := getPeer(b) pb := getPeer(b) duplexa := pipes.NewDuplex(16) duplexb := pipes.NewDuplex(16) go bindDuplexNoCopy(duplexa, duplexb) var spb *SecurePipe done := make(chan struct{}) go func() { var err error spb, err = NewSecurePipe(ctx, bufsize, pb, pstore, duplexb) if err != nil { b.Fatal(err) } done <- struct{}{} }() spa, err := NewSecurePipe(ctx, bufsize, pa, pstore, duplexa) if err != nil { b.Fatal(err) } <-done go func() { for _ = range spa.In { // Throw it all away, // all of your hopes and dreams // piped out to /dev/null... done <- struct{}{} } }() data := make([]byte, 1024*512) util.NewTimeSeededRand().Read(data) // Begin actual benchmarking b.ResetTimer() for i := 0; i < b.N; i++ { b.SetBytes(int64(len(data))) spb.Out <- data <-done } }
func getNode(t *testing.T, dserv mdag.DAGService, size int64) ([]byte, *mdag.Node) { in := io.LimitReader(u.NewTimeSeededRand(), size) node, err := imp.BuildDagFromReader(in, dserv, nil, &chunk.SizeSplitter{500}) if err != nil { t.Fatal(err) } dr, err := NewDagReader(node, dserv) if err != nil { t.Fatal(err) } b, err := ioutil.ReadAll(dr) if err != nil { t.Fatal(err) } return b, node }
func testModWrite(t *testing.T, beg, size uint64, orig []byte, dm *DagModifier) []byte { newdata := make([]byte, size) r := u.NewTimeSeededRand() r.Read(newdata) if size+beg > uint64(len(orig)) { orig = append(orig, make([]byte, (size+beg)-uint64(len(orig)))...) } copy(orig[beg:], newdata) nmod, err := dm.WriteAt(newdata, uint64(beg)) if err != nil { t.Fatal(err) } if nmod != int(size) { t.Fatalf("Mod length not correct! %d != %d", nmod, size) } nd, err := dm.GetNode() if err != nil { t.Fatal(err) } rd, err := NewDagReader(nd, dm.dagserv) if err != nil { t.Fatal(err) } after, err := ioutil.ReadAll(rd) if err != nil { t.Fatal(err) } err = arrComp(after, orig) if err != nil { t.Fatal(err) } return orig }
func TestMultiWriteCoal(t *testing.T) { dserv := getMockDagServ(t) _, n := getNode(t, dserv, 0) dagmod, err := NewDagModifier(n, dserv, &chunk.SizeSplitter{Size: 512}) if err != nil { t.Fatal(err) } data := make([]byte, 4000) u.NewTimeSeededRand().Read(data) for i := 0; i < len(data); i++ { n, err := dagmod.WriteAt(data[:i+1], 0) if err != nil { t.Fatal(err) } if n != i+1 { t.Fatal("Somehow wrote the wrong number of bytes! (n != 1)") } } nd, err := dagmod.GetNode() if err != nil { t.Fatal(err) } read, err := NewDagReader(nd, dserv) if err != nil { t.Fatal(err) } rbuf, err := ioutil.ReadAll(read) if err != nil { t.Fatal(err) } err = arrComp(rbuf, data) if err != nil { t.Fatal(err) } }