@@ -18,11 +18,10 @@ import (
1818 "archive/tar"
1919 "bytes"
2020 "crypto"
21- "crypto/rand"
2221 "encoding/hex"
2322 "fmt"
2423 "io"
25- mrand "math/rand"
24+ "math/rand"
2625 "time"
2726
2827 v1 "github.com/google/go-containerregistry/pkg/v1"
@@ -57,10 +56,10 @@ func (ul *uncompressedLayer) MediaType() (types.MediaType, error) {
5756var _ partial.UncompressedLayer = (* uncompressedLayer )(nil )
5857
5958// Image returns a pseudo-randomly generated Image.
60- func Image (byteSize , layers int64 ) (v1.Image , error ) {
59+ func Image (byteSize , layers int64 , options ... Option ) (v1.Image , error ) {
6160 adds := make ([]mutate.Addendum , 0 , 5 )
6261 for i := int64 (0 ); i < layers ; i ++ {
63- layer , err := Layer (byteSize , types .DockerLayer )
62+ layer , err := Layer (byteSize , types .DockerLayer , options ... )
6463 if err != nil {
6564 return nil , err
6665 }
@@ -79,8 +78,11 @@ func Image(byteSize, layers int64) (v1.Image, error) {
7978}
8079
8180// Layer returns a layer with pseudo-randomly generated content.
82- func Layer (byteSize int64 , mt types.MediaType ) (v1.Layer , error ) {
83- fileName := fmt .Sprintf ("random_file_%d.txt" , mrand .Int ()) //nolint: gosec
81+ func Layer (byteSize int64 , mt types.MediaType , options ... Option ) (v1.Layer , error ) {
82+ o := getOptions (options )
83+ rng := rand .New (o .source ) //nolint:gosec
84+
85+ fileName := fmt .Sprintf ("random_file_%d.txt" , rng .Int ())
8486
8587 // Hash the contents as we write it out to the buffer.
8688 var b bytes.Buffer
@@ -96,7 +98,7 @@ func Layer(byteSize int64, mt types.MediaType) (v1.Layer, error) {
9698 }); err != nil {
9799 return nil , err
98100 }
99- if _ , err := io .CopyN (tw , rand . Reader , byteSize ); err != nil {
101+ if _ , err := io .CopyN (tw , rng , byteSize ); err != nil {
100102 return nil , err
101103 }
102104 if err := tw .Close (); err != nil {
0 commit comments