Skip to content

Commit bf62a6c

Browse files
committed
basic: option for deletes.
1 parent e1bf35e commit bf62a6c

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed

cmd/basic/main.go

+26-13
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ func main() {
2121
reqPerSleep := flag.Int("reqpersleep", 1, "number of requests to issue when client wakes up")
2222
reqBundlePerConn := flag.Int("reqbundles", 1, "number of times to wake up and send requests before disconnecting (-1 for unlimited)")
2323
sleepPerBundle := flag.Duration("sleepperbundle", time.Millisecond*1, "time to sleep between request bundles (accepts Ns, Nms, etc)")
24+
deletePercent := flag.Int("deletepercent", 0, "percentage of queries to issue as deletes instead of gets (0-1000)")
2425
keyPrefix := flag.String("keyprefix", "mctester:", "prefix to append to all generated keys")
2526
keySpace := flag.Int("keyspace", 1000, "number of unique keys to generate")
2627
keyLength := flag.Int("keylength", 10, "number of random characters to append to key")
@@ -57,6 +58,7 @@ func main() {
5758
requestsPerSleep: *reqPerSleep,
5859
requestBundlesPerConn: *reqBundlePerConn,
5960
sleepPerBundle: *sleepPerBundle,
61+
deletePercent: *deletePercent,
6062
keyLength: *keyLength,
6163
keyPrefix: *keyPrefix,
6264
keySpace: *keySpace,
@@ -104,6 +106,7 @@ type BasicLoader struct {
104106
requestBundlesPerConn int
105107
sleepPerBundle time.Duration
106108
setValueSizes []int
109+
deletePercent int
107110
keyLength int
108111
keyPrefix string
109112
keySpace int
@@ -182,19 +185,29 @@ func (l *BasicLoader) Worker(doneChan chan<- int) {
182185
// TODO: might be nice to pass (by ref?) prefix in here to make
183186
// use of string.Builder.
184187
key := l.keyPrefix + mct.RandString(&subRS, keyLen)
185-
// issue gets
186-
_, _, code, err := mc.Get(key)
187-
// validate responses
188-
if err != nil {
189-
fmt.Println(err)
190-
res = -1
191-
return
192-
}
193-
// set missing values
194-
if code == mct.McMISS {
195-
// TODO: random sizing
196-
value := mct.RandBytes(&rs, int(l.valueSize))
197-
mc.Set(key, uint32(l.clientFlags), uint32(l.keyTTL), value)
188+
// chance we issue a delete instead.
189+
if l.deletePercent != 0 && randR.Intn(1000) < l.deletePercent {
190+
_, err := mc.Delete(key)
191+
if err != nil {
192+
fmt.Println(err)
193+
res = -1
194+
return
195+
}
196+
} else {
197+
// issue gets
198+
_, _, code, err := mc.Get(key)
199+
// validate responses
200+
if err != nil {
201+
fmt.Println(err)
202+
res = -1
203+
return
204+
}
205+
// set missing values
206+
if code == mct.McMISS {
207+
// TODO: random sizing
208+
value := mct.RandBytes(&rs, int(l.valueSize))
209+
mc.Set(key, uint32(l.clientFlags), uint32(l.keyTTL), value)
210+
}
198211
}
199212
}
200213
time.Sleep(l.sleepPerBundle)

0 commit comments

Comments
 (0)