Commit cb22b62a authored by Juan Batiz-Benet's avatar Juan Batiz-Benet

util: remove broken rand

parent 37ce1863
...@@ -12,7 +12,7 @@ import ( ...@@ -12,7 +12,7 @@ import (
func randNode() (*mdag.Node, util.Key) { func randNode() (*mdag.Node, util.Key) {
nd := new(mdag.Node) nd := new(mdag.Node)
nd.Data = make([]byte, 32) nd.Data = make([]byte, 32)
util.NewFastRand().Read(nd.Data) util.NewTimeSeededRand().Read(nd.Data)
k, _ := nd.Key() k, _ := nd.Key()
return nd, k return nd, k
} }
......
...@@ -28,7 +28,7 @@ func getMockDagServ(t *testing.T) mdag.DAGService { ...@@ -28,7 +28,7 @@ func getMockDagServ(t *testing.T) mdag.DAGService {
func getNode(t *testing.T, dserv mdag.DAGService, size int64) ([]byte, *mdag.Node) { func getNode(t *testing.T, dserv mdag.DAGService, size int64) ([]byte, *mdag.Node) {
dw := NewDagWriter(dserv, &chunk.SizeSplitter{500}) dw := NewDagWriter(dserv, &chunk.SizeSplitter{500})
n, err := io.CopyN(dw, u.NewFastRand(), size) n, err := io.CopyN(dw, u.NewTimeSeededRand(), size)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
...@@ -58,7 +58,7 @@ func getNode(t *testing.T, dserv mdag.DAGService, size int64) ([]byte, *mdag.Nod ...@@ -58,7 +58,7 @@ func getNode(t *testing.T, dserv mdag.DAGService, size int64) ([]byte, *mdag.Nod
func testModWrite(t *testing.T, beg, size uint64, orig []byte, dm *DagModifier) []byte { func testModWrite(t *testing.T, beg, size uint64, orig []byte, dm *DagModifier) []byte {
newdata := make([]byte, size) newdata := make([]byte, size)
r := u.NewFastRand() r := u.NewTimeSeededRand()
r.Read(newdata) r.Read(newdata)
if size+beg > uint64(len(orig)) { if size+beg > uint64(len(orig)) {
...@@ -160,7 +160,7 @@ func TestMultiWrite(t *testing.T) { ...@@ -160,7 +160,7 @@ func TestMultiWrite(t *testing.T) {
} }
data := make([]byte, 4000) data := make([]byte, 4000)
u.NewFastRand().Read(data) u.NewTimeSeededRand().Read(data)
for i := 0; i < len(data); i++ { for i := 0; i < len(data); i++ {
n, err := dagmod.WriteAt(data[i:i+1], uint64(i)) n, err := dagmod.WriteAt(data[i:i+1], uint64(i))
...@@ -201,7 +201,7 @@ func TestMultiWriteCoal(t *testing.T) { ...@@ -201,7 +201,7 @@ func TestMultiWriteCoal(t *testing.T) {
} }
data := make([]byte, 4000) data := make([]byte, 4000)
u.NewFastRand().Read(data) u.NewTimeSeededRand().Read(data)
for i := 0; i < len(data); i++ { for i := 0; i < len(data); i++ {
n, err := dagmod.WriteAt(data[:i+1], 0) n, err := dagmod.WriteAt(data[:i+1], 0)
......
...@@ -97,28 +97,21 @@ func (bcr *byteChanReader) Read(b []byte) (int, error) { ...@@ -97,28 +97,21 @@ func (bcr *byteChanReader) Read(b []byte) (int, error) {
} }
type randGen struct { type randGen struct {
src rand.Source rand.Rand
} }
func NewFastRand() io.Reader { func NewTimeSeededRand() io.Reader {
return &randGen{rand.NewSource(time.Now().UnixNano())} src := rand.NewSource(time.Now().UnixNano())
return &randGen{
Rand: *rand.New(src),
}
} }
func (r *randGen) Read(p []byte) (n int, err error) { func (r *randGen) Read(p []byte) (n int, err error) {
todo := len(p) for i := 0; i < len(p); i++ {
offset := 0 p[i] = byte(r.Rand.Intn(255))
for {
val := int64(r.src.Int63())
for i := 0; i < 8; i++ {
p[offset] = byte(val & 0xff)
todo--
if todo == 0 {
return len(p), nil
}
offset++
val >>= 8
}
} }
return len(p), nil
} }
// GetenvBool is the way to check an env var as a boolean // GetenvBool is the way to check an env var as a boolean
......
...@@ -31,7 +31,7 @@ func TestKey(t *testing.T) { ...@@ -31,7 +31,7 @@ func TestKey(t *testing.T) {
func TestByteChanReader(t *testing.T) { func TestByteChanReader(t *testing.T) {
data := make([]byte, 1024*1024) data := make([]byte, 1024*1024)
r := NewFastRand() r := NewTimeSeededRand()
r.Read(data) r.Read(data)
dch := make(chan []byte, 8) dch := make(chan []byte, 8)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment