OSDN Git Service

add ipfs package
[bytom/vapor.git] / vendor / github.com / ipfs / go-ipfs-api / tests / main.go
1 package main
2
3 import (
4         "fmt"
5         "io"
6         "math/rand"
7         "time"
8
9         "github.com/ipfs/go-ipfs-api"
10
11         u "github.com/ipfs/go-ipfs-util"
12 )
13
14 var sh *shell.Shell
15 var ncalls int
16
17 var _ = time.ANSIC
18
19 func sleep() {
20         ncalls++
21         //time.Sleep(time.Millisecond * 5)
22 }
23
24 func randString() string {
25         alpha := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
26         l := rand.Intn(10) + 2
27
28         var s string
29         for i := 0; i < l; i++ {
30                 s += string([]byte{alpha[rand.Intn(len(alpha))]})
31         }
32         return s
33 }
34
35 func makeRandomObject() (string, error) {
36         // do some math to make a size
37         x := rand.Intn(120) + 1
38         y := rand.Intn(120) + 1
39         z := rand.Intn(120) + 1
40         size := x * y * z
41
42         r := io.LimitReader(u.NewTimeSeededRand(), int64(size))
43         sleep()
44         return sh.Add(r)
45 }
46
47 func makeRandomDir(depth int) (string, error) {
48         if depth <= 0 {
49                 return makeRandomObject()
50         }
51         sleep()
52         empty, err := sh.NewObject("unixfs-dir")
53         if err != nil {
54                 return "", err
55         }
56
57         curdir := empty
58         for i := 0; i < rand.Intn(8)+2; i++ {
59                 var obj string
60                 if rand.Intn(2) == 1 {
61                         obj, err = makeRandomObject()
62                         if err != nil {
63                                 return "", err
64                         }
65                 } else {
66                         obj, err = makeRandomDir(depth - 1)
67                         if err != nil {
68                                 return "", err
69                         }
70                 }
71
72                 name := randString()
73                 sleep()
74                 nobj, err := sh.PatchLink(curdir, name, obj, true)
75                 if err != nil {
76                         return "", err
77                 }
78                 curdir = nobj
79         }
80
81         return curdir, nil
82 }
83
84 func main() {
85         sh = shell.NewShell("localhost:5001")
86         for i := 0; i < 200; i++ {
87                 _, err := makeRandomObject()
88                 if err != nil {
89                         fmt.Println("err: ", err)
90                         return
91                 }
92         }
93         fmt.Println("we're okay")
94
95         out, err := makeRandomDir(10)
96         fmt.Printf("%d calls\n", ncalls)
97         if err != nil {
98                 fmt.Println(err)
99                 return
100         }
101
102         fmt.Println(out)
103         for {
104                 time.Sleep(time.Second * 1000)
105         }
106 }