本文整理汇总了Golang中github.com/dustin/randbo.New函数的典型用法代码示例。如果您正苦于以下问题:Golang New函数的具体用法?Golang New怎么用?Golang New使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了New函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestCallbacksWork
func TestCallbacksWork(t *testing.T) {
fake := new(FakeStream)
var sent int64
var recv int64
sentCB := func(n int64, proto protocol.ID, p peer.ID) {
sent += n
}
recvCB := func(n int64, proto protocol.ID, p peer.ID) {
recv += n
}
ms := newMeteredStream(fake, protocol.ID("TEST"), peer.ID("PEER"), recvCB, sentCB)
toWrite := int64(100000)
toRead := int64(100000)
fake.ReadBuf = io.LimitReader(randbo.New(), toRead)
writeData := io.LimitReader(randbo.New(), toWrite)
n, err := io.Copy(ms, writeData)
if err != nil {
t.Fatal(err)
}
if n != toWrite {
t.Fatal("incorrect write amount")
}
if toWrite != sent {
t.Fatal("incorrectly reported writes", toWrite, sent)
}
n, err = io.Copy(ioutil.Discard, ms)
if err != nil {
t.Fatal(err)
}
if n != toRead {
t.Fatal("incorrect read amount")
}
if toRead != recv {
t.Fatal("incorrectly reported reads")
}
}
示例2: main
func main() {
log.SetPrefix("prandom: ")
_, err := io.Copy(os.Stdout, randbo.New())
if err != nil {
log.Fatal(err)
}
}
示例3: BenchmarkBlockRewrites
func BenchmarkBlockRewrites(n *core.IpfsNode, cfg *BenchCfg) error {
buf := make([]byte, cfg.Blocksize)
randbo.New().Read(buf)
blk := blocks.NewBlock(buf)
// write the block first, before starting the benchmark.
// we're just looking at the time it takes to write a block thats already
// been written
k, err := n.Blocks.AddBlock(blk)
if err != nil {
return err
}
f := func(b *testing.B) {
for i := 0; i < b.N; i++ {
_, err := n.Blocks.AddBlock(blk)
if err != nil {
b.Fatal(err)
}
}
}
br := testing.Benchmark(f)
fmt.Printf("BlockRewrites:\t\t%s\n", br)
// clean up
err = n.Blocks.DeleteBlock(k)
if err != nil {
return err
}
return nil
}
示例4: BenchmarkConsecutivePut
func BenchmarkConsecutivePut(b *testing.B) {
r := rand.New()
var blocks [][]byte
var keys []datastore.Key
for i := 0; i < b.N; i++ {
blk := make([]byte, 256*1024)
r.Read(blk)
blocks = append(blocks, blk)
key := base32.StdEncoding.EncodeToString(blk[:8])
keys = append(keys, datastore.NewKey(key))
}
temp, cleanup := tempdir(b)
defer cleanup()
fs, err := flatfs.New(temp, 2)
if err != nil {
b.Fatalf("New fail: %v\n", err)
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
err := fs.Put(keys[i], blocks[i])
if err != nil {
b.Fatal(err)
}
}
}
示例5: benchAddSize
func benchAddSize(n *core.IpfsNode, cfg *BenchCfg, size int64) error {
f := func(b *testing.B) {
b.SetBytes(size)
for i := 0; i < b.N; i++ {
r := io.LimitReader(randbo.New(), size)
spl := chunk.NewSizeSplitter(r, cfg.Blocksize)
_, err := importer.BuildDagFromReader(n.DAG, spl, nil)
if err != nil {
fmt.Printf("ERRROR: ", err)
b.Fatal(err)
}
}
}
br := testing.Benchmark(f)
bs := humanize.IBytes(uint64(size))
fmt.Printf("Add File (%s):\t%s\n", bs, br)
err := cr.GarbageCollect(n, context.Background())
if err != nil {
return err
}
return nil
}
示例6: BenchmarkRandomBlockWrites
func BenchmarkRandomBlockWrites(n *core.IpfsNode, cfg *BenchCfg) error {
buf := make([]byte, cfg.Blocksize)
read := randbo.New()
var keys []key.Key
f := func(b *testing.B) {
b.SetBytes(cfg.Blocksize)
for i := 0; i < b.N; i++ {
read.Read(buf)
blk := blocks.NewBlock(buf)
k, err := n.Blocks.AddBlock(blk)
if err != nil {
b.Fatal(err)
}
keys = append(keys, k)
}
}
br := testing.Benchmark(f)
fmt.Printf("RandomBlockWrites:\t%s\n", br)
// clean up
for _, k := range keys {
err := n.Blocks.DeleteBlock(k)
if err != nil {
return err
}
}
return nil
}
示例7: main
func main() {
list := flag.Bool("l", false, "listen on the given address")
spew := flag.Bool("spew", false, "spew random data on the connection")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: %s [-l] <host> <port>\n", os.Args[0])
}
flag.Parse()
c := make(chan os.Signal)
signal.Notify(c, os.Interrupt)
if len(flag.Args()) < 2 {
flag.Usage()
os.Exit(1)
}
addr := fmt.Sprintf("%s:%s", flag.Arg(0), flag.Arg(1))
var con io.ReadWriteCloser
if *list {
sock, err := utp.NewSocket("udp", addr)
if err != nil {
fmt.Fprintf(os.Stderr, "create socket failed: %s\n", err)
os.Exit(1)
}
defer sock.Close()
utpcon, err := sock.Accept()
if err != nil {
fmt.Fprintf(os.Stderr, "accept failed: %s\n", err)
os.Exit(1)
}
con = utpcon
} else {
utpcon, err := utp.Dial(addr)
if err != nil {
fmt.Fprintf(os.Stderr, "dial failed: %s\n", err)
os.Exit(1)
}
con = utpcon
}
var in io.Reader = os.Stdin
if *spew {
in = rand.New()
}
go func() {
<-c
con.Close()
}()
beNetcat(con, in)
}
示例8: createRandomDataFile
func createRandomDataFile(b *testing.B, length int) string {
f, err := os.Create("/tmp/test")
if err != nil {
b.Fatalf("couldn't create file: %v\n", err)
}
rand := randbo.New()
io.CopyN(f, rand, int64(length))
f.Close()
return "/tmp/test"
}
示例9: newID
// newID returns a pseudo-random, URL-encoded, base64
// string used for connection identifiers.
func newID() string {
buf := make([]byte, 15)
n, err := randbo.New().Read(buf)
if err != nil {
glog.Fatal(err)
}
if n != len(buf) {
glog.Fatal("short read")
}
return base64.URLEncoding.EncodeToString(buf)
}
示例10: newsparkyServer
// newsparkyServer creates a sparkyServer object and pre-fills some random data
func newsparkyServer() sparkyServer {
ss := sparkyServer{}
// Make a 10MB byte slice
ss.randomData = make([]byte, 1024*1024*10)
// Fill our 10MB byte slice with random data
_, err := randbo.New().Read(ss.randomData)
if err != nil {
log.Fatalln("error generating random data:", err)
}
return ss
}
示例11: main
func main() {
if len(os.Args) < 2 {
fmt.Println("need to specify size!")
os.Exit(1)
}
n, err := strconv.Atoi(os.Args[1])
if err != nil {
fmt.Println(err)
os.Exit(1)
}
r := randbo.New()
io.CopyN(os.Stdout, r, int64(n))
}
示例12: RunBatchTest
func RunBatchTest(t *testing.T, ds dstore.Batching) {
batch, err := ds.Batch()
if err != nil {
t.Fatal(err)
}
r := rand.New()
var blocks [][]byte
var keys []dstore.Key
for i := 0; i < 20; i++ {
blk := make([]byte, 256*1024)
r.Read(blk)
blocks = append(blocks, blk)
key := dstore.NewKey(base32.StdEncoding.EncodeToString(blk[:8]))
keys = append(keys, key)
err := batch.Put(key, blk)
if err != nil {
t.Fatal(err)
}
}
// Ensure they are not in the datastore before comitting
for _, k := range keys {
_, err := ds.Get(k)
if err == nil {
t.Fatal("should not have found this block")
}
}
// commit, write them to the datastore
err = batch.Commit()
if err != nil {
t.Fatal(err)
}
for i, k := range keys {
blk, err := ds.Get(k)
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(blk.([]byte), blocks[i]) {
t.Fatal("blocks not correct!")
}
}
}
示例13: newsparkyClient
// NewsparkyClient creates a new sparkyClient object
func newsparkyClient() *sparkyClient {
m := sparkyClient{}
// Make a 10MB byte slice to hold our random data blob
m.randomData = make([]byte, 1024*1024*10)
// Use a randbo Reader to fill our big slice with random data
_, err := randbo.New().Read(m.randomData)
if err != nil {
log.Fatalln("error generating random data:", err)
}
// Create a bytes.Reader over this byte slice
m.randReader = bytes.NewReader(m.randomData)
return &m
}
示例14: MeteredCopy
// MeteredCopy copies to or from a net.Conn, keeping count of the data it passes
func (ss *sparkyServer) MeteredCopy() {
var err error
var timer *time.Timer
// Set a timer that we'll use to stop the test. If we're running an inbound test,
// we extend the timer by two seconds to allow the client to finish its sending.
if ss.testType == inbound {
timer = time.NewTimer(time.Second * time.Duration(testLength+2))
} else if ss.testType == outbound {
timer = time.NewTimer(time.Second * time.Duration(testLength))
}
// Create a new randbo Reader
rnd := randbo.New()
for {
select {
case <-timer.C:
if *debug {
log.Println(testLength, "seconds have elapsed.")
}
return
default:
// Copy our random data from randbo to our ResponseWriter, 100KB at a time
switch ss.testType {
case outbound:
_, err = io.CopyN(ss.client, rnd, 1024*blockSize)
case inbound:
_, err = io.CopyN(ioutil.Discard, ss.client, 1024*blockSize)
}
// io.EOF is normal when a client drops off after the test
if err != nil {
if err != io.EOF {
log.Println("Error copying:", err)
}
return
}
// // With each 100K copied, we send a message on our blockTicker channel
ss.blockTicker <- true
}
}
}
示例15: TestEcho
func TestEcho(t *testing.T) {
a, b := net.Pipe()
mpa := NewMultiplex(a, false)
mpb := NewMultiplex(b, true)
mes := make([]byte, 40960)
rand.New().Read(mes)
go func() {
s, err := mpb.Accept()
if err != nil {
t.Fatal(err)
}
defer s.Close()
io.Copy(s, s)
}()
s := mpa.NewStream()
_, err := s.Write(mes)
if err != nil {
t.Fatal(err)
}
buf := make([]byte, len(mes))
n, err := io.ReadFull(s, buf)
if err != nil {
t.Fatal(err)
}
if n != len(mes) {
t.Fatal("read wrong amount")
}
if err := arrComp(buf, mes); err != nil {
t.Fatal(err)
}
s.Close()
mpa.Close()
mpb.Close()
}