@cryptotaxi247 / kubo / commits / cb22b62a9

util: remove broken rand

Juan Batiz-Benet committed Oct 30, 2014 at 04:14 UTC cb22b62a9b6cbc31e8bc7ccde504ea6beae34120
4 files changed +15 -22
pin/pin_test.go
+1 -1
@@ -12,7 +12,7 @@ import (
12 func randNode() (*mdag.Node, util.Key) {
13 nd := new(mdag.Node)
14 nd.Data = make([]byte, 32)
15 - util.NewFastRand().Read(nd.Data)
15 + util.NewTimeSeededRand().Read(nd.Data)
16 k, _ := nd.Key()
17 return nd, k
18 }
unixfs/io/dagmodifier_test.go
+4 -4
@@ -28,7 +28,7 @@ func getMockDagServ(t *testing.T) mdag.DAGService {
28 func getNode(t *testing.T, dserv mdag.DAGService, size int64) ([]byte, *mdag.Node) {
29 dw := NewDagWriter(dserv, &chunk.SizeSplitter{500})
30
31 - n, err := io.CopyN(dw, u.NewFastRand(), size)
31 + n, err := io.CopyN(dw, u.NewTimeSeededRand(), size)
32 if err != nil {
33 t.Fatal(err)
34 }
@@ -58,7 +58,7 @@ func getNode(t *testing.T, dserv mdag.DAGService, size int64) ([]byte, *mdag.Nod
58
59 func testModWrite(t *testing.T, beg, size uint64, orig []byte, dm *DagModifier) []byte {
60 newdata := make([]byte, size)
61 - r := u.NewFastRand()
61 + r := u.NewTimeSeededRand()
62 r.Read(newdata)
63
64 if size+beg > uint64(len(orig)) {
@@ -160,7 +160,7 @@ func TestMultiWrite(t *testing.T) {
160 }
161
162 data := make([]byte, 4000)
163 - u.NewFastRand().Read(data)
163 + u.NewTimeSeededRand().Read(data)
164
165 for i := 0; i < len(data); i++ {
166 n, err := dagmod.WriteAt(data[i:i+1], uint64(i))
@@ -201,7 +201,7 @@ func TestMultiWriteCoal(t *testing.T) {
201 }
202
203 data := make([]byte, 4000)
204 - u.NewFastRand().Read(data)
204 + u.NewTimeSeededRand().Read(data)
205
206 for i := 0; i < len(data); i++ {
207 n, err := dagmod.WriteAt(data[:i+1], 0)
util/util.go
+9 -16
@@ -97,28 +97,21 @@ func (bcr *byteChanReader) Read(b []byte) (int, error) {
97 }
98
99 type randGen struct {
100 - src rand.Source
100 + rand.Rand
101 }
102
103 -func NewFastRand() io.Reader {
104 - return &randGen{rand.NewSource(time.Now().UnixNano())}
103 +func NewTimeSeededRand() io.Reader {
104 + src := rand.NewSource(time.Now().UnixNano())
105 + return &randGen{
106 + Rand: *rand.New(src),
107 + }
108 }
109
110 func (r *randGen) Read(p []byte) (n int, err error) {
108 - todo := len(p)
109 - offset := 0
110 - for {
111 - val := int64(r.src.Int63())
112 - for i := 0; i < 8; i++ {
113 - p[offset] = byte(val & 0xff)
114 - todo--
115 - if todo == 0 {
116 - return len(p), nil
117 - }
118 - offset++
119 - val >>= 8
120 - }
111 + for i := 0; i < len(p); i++ {
112 + p[i] = byte(r.Rand.Intn(255))
113 }
114 + return len(p), nil
115 }
116
117 // GetenvBool is the way to check an env var as a boolean
util/util_test.go
+1 -1
@@ -31,7 +31,7 @@ func TestKey(t *testing.T) {
31
32 func TestByteChanReader(t *testing.T) {
33 data := make([]byte, 1024*1024)
34 - r := NewFastRand()
34 + r := NewTimeSeededRand()
35 r.Read(data)
36 dch := make(chan []byte, 8)
37