@@ -117,16 +117,42 @@ func (w *nullWriter) WriteAt(p []byte, off int64) (n int, err error) {
117117 return len (p ), nil
118118}
119119
120- func getRandReader () io.Reader {
121- return rand .New (rand .NewSource (time .Now ().UnixNano ()))
120+ var (
121+ randBuffer [1024 ]byte
122+ )
123+
124+ func init () {
125+ for i := range randBuffer {
126+ randBuffer [i ] = byte (rand .Intn (256 ))
127+ }
128+ }
129+
130+ type randReader struct {
131+ }
132+
133+ func newRandReader () io.Reader {
134+ return & randReader {}
135+ }
136+
137+ func (r * randReader ) Read (p []byte ) (n int , err error ) {
138+ offset := 0
139+ for offset < len (p ) {
140+ readLen := len (randBuffer )
141+ if readLen > len (p )- offset {
142+ readLen = len (p ) - offset
143+ }
144+ copy (p [offset :], randBuffer [:readLen ])
145+ offset += readLen
146+ }
147+ return offset , nil
122148}
123149
124150func ProbeBucketStats (ctx context.Context , bucket cloudprovider.ICloudBucket , testKey string , sizeBytes int64 ) (* api.BucketProbeResult , error ) {
125151 result := & api.BucketProbeResult {}
126152 start := time .Now ()
127153
128154 // force upload object in one shot
129- err := cloudprovider .UploadObject (ctx , bucket , testKey , sizeBytes * 2 , getRandReader (), sizeBytes , cloudprovider .ACLPrivate , "" , nil , false )
155+ err := cloudprovider .UploadObject (ctx , bucket , testKey , sizeBytes * 2 , newRandReader (), sizeBytes , cloudprovider .ACLPrivate , "" , nil , false )
130156 if err != nil {
131157 return nil , errors .Wrap (err , "cloudprovider.UploadObject" )
132158 }
0 commit comments