@@ -10,6 +10,7 @@ import (
1010 "errors"
1111 "fmt"
1212 "github.com/dustin/go-humanize"
13+ "io"
1314 "os"
1415 "path"
1516 "strings"
@@ -111,12 +112,12 @@ func (gc GeneratorCorpus) eventsPayloadFromFields(template []byte, fields Fields
111112 var evgen genlib.Generator
112113 var err error
113114 if len (template ) == 0 {
114- evgen , err = genlib .NewGenerator (gc .config , fields )
115+ evgen , err = genlib .NewGenerator (gc .config , fields , totSize )
115116 } else {
116117 if gc .templateType == templateTypeCustom {
117- evgen , err = genlib .NewGeneratorWithCustomTemplate (template , gc .config , fields )
118+ evgen , err = genlib .NewGeneratorWithCustomTemplate (template , gc .config , fields , totSize )
118119 } else if gc .templateType == templateTypeGoText {
119- evgen , err = genlib .NewGeneratorWithTextTemplate (template , gc .config , fields )
120+ evgen , err = genlib .NewGeneratorWithTextTemplate (template , gc .config , fields , totSize )
120121 } else {
121122 return ErrNotValidTemplate
122123 }
@@ -136,24 +137,29 @@ func (gc GeneratorCorpus) eventsPayloadFromFields(template []byte, fields Fields
136137 buf = bytes .NewBufferString ("" )
137138 }
138139
139- var currentSize uint64
140- for currentSize < totSize {
140+ defer func () {
141+ _ = evgen .Close ()
142+ }()
143+
144+ for {
141145 buf .Truncate (len (createPayload ))
146+ err := evgen .Emit (state , buf )
147+ if err == nil {
148+ buf .WriteByte ('\n' )
142149
143- if err := evgen .Emit (state , buf ); err != nil {
144- return err
150+ if _ , err = f .Write (buf .Bytes ()); err != nil {
151+ return err
152+ }
145153 }
146154
147- buf .WriteByte ('\n' )
155+ if err == io .EOF {
156+ return nil
157+ }
148158
149- if _ , err = f . Write ( buf . Bytes ()); err != nil {
159+ if err != nil {
150160 return err
151161 }
152-
153- currentSize += uint64 (buf .Len ())
154162 }
155-
156- return evgen .Close ()
157163}
158164
159165// Generate generates a bulk request corpus and persist it to file.
0 commit comments