Skip to content

Commit e47a361

Browse files
authored
Adds a --randomize flag to nats bench kv put (#1586)
Signed-off-by: Jean-Noël Moyne <jnmoyne@gmail.com>
1 parent dc7e742 commit e47a361

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

cli/bench_command.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ type benchCmd struct {
7878
deDuplication bool
7979
deDuplicationWindow time.Duration
8080
ack bool
81-
randomizeGets int
81+
randomize int
8282
payloadFilename string
8383
hdrs []string
8484
filterSubjects []string // used by JS consumer commands
@@ -136,6 +136,7 @@ func configureBenchCommand(app commandHost) {
136136
f.Flag("maxbytes", "The maximum size of the stream or KV bucket in bytes").Default("1GB").StringVar(&c.streamMaxBytesString)
137137
f.Flag("history", "History depth for the bucket in KV mode").Default("1").Uint8Var(&c.history)
138138
f.Flag("purge", "Purge the stream before running").UnNegatableBoolVar(&c.purge)
139+
f.Flag("randomize", "Randomly put messages using keys between 0 and this number (set to 0 for sequential access)").Default("0").IntVar(&c.randomize)
139140
}
140141

141142
benchCommand := app.Command("bench", "Benchmark utility")
@@ -217,7 +218,7 @@ func configureBenchCommand(app commandHost) {
217218
addKVPutFlags(kvput)
218219

219220
kvget := kvCommand.Command("get", "Get messages from a KV bucket").Action(c.kvGetAction)
220-
kvget.Flag("randomize", "Randomly access messages using keys between 0 and this number (set to 0 for sequential access)").Default("0").IntVar(&c.randomizeGets)
221+
kvget.Flag("randomize", "Randomly get messages using keys between 0 and this number (set to 0 for sequential access)").Default("0").IntVar(&c.randomize)
221222

222223
oldJSCommand := benchCommand.Command("oldjs", "JetStream benchmark commands using the old JS API").Hidden()
223224
addCommonFlags(oldJSCommand)
@@ -414,7 +415,7 @@ func (c *benchCmd) generateBanner(benchType string) string {
414415
case bench.TypeKVGet:
415416
argnvps = append(argnvps, nvp{"bucket", c.streamOrBucketName})
416417
argnvps = append(argnvps, nvp{"sleep", f(c.sleep)})
417-
argnvps = append(argnvps, nvp{"randomize", f(c.randomizeGets)})
418+
argnvps = append(argnvps, nvp{"randomize", f(c.randomize)})
418419
streamOrBucketAttribues()
419420
case bench.TypeOldJSOrdered:
420421
argnvps = append(argnvps, nvp{"multi-subject", f(c.multiSubject)})
@@ -2077,8 +2078,14 @@ func (c *benchCmd) kvPutter(nc *nats.Conn, progress *uiprogress.Bar, msg []byte,
20772078
progress.Incr()
20782079
}
20792080

2081+
key := offset + i
2082+
2083+
if c.randomize > 0 {
2084+
key = rand.IntN(c.randomize)
2085+
}
2086+
20802087
start := time.Now()
2081-
_, err = kvBucket.Put(ctx, fmt.Sprintf("%d", offset+i), msg)
2088+
_, err = kvBucket.Put(ctx, fmt.Sprintf("%d", key), msg)
20822089
if err != nil {
20832090
return nil, fmt.Errorf("putting: %w", err)
20842091
}
@@ -2811,10 +2818,10 @@ func (c *benchCmd) runKVGetter(bm *bench.BenchmarkResults, errChan chan error, n
28112818
for i := 0; i < numMsg; i++ {
28122819
var key string
28132820

2814-
if c.randomizeGets == 0 {
2821+
if c.randomize == 0 {
28152822
key = fmt.Sprintf("%d", offset+i)
28162823
} else {
2817-
key = fmt.Sprintf("%d", rand.IntN(c.randomizeGets))
2824+
key = fmt.Sprintf("%d", rand.IntN(c.randomize))
28182825
}
28192826
start := time.Now()
28202827

0 commit comments

Comments
 (0)