1
0
Fork 0

Add oneshot option to rqbench

master
Philip O'Toole 4 years ago
parent 0b3a41bd3f
commit 3ff1c35998

@ -29,9 +29,14 @@ Usage: rqbench [arguments] <SQL statement>
-x Use explicit transaction per request
```
## Example
## Examples
```sh
$ rqbench -b 10 -m 100 -n 1 -o 'CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)' 'INSERT INTO foo(name) VALUES("fiona")'
Test target: http://localhost:4001/db/execute
Total duration: 10.094572ms
Requests/sec: 99.06
Statements/sec: 990.63
$ rqbench -b 10 -m 10 -n 100 'INSERT INTO foo(name) VALUES("fiona")' -a localhost:4001
Test target: http://localhost:4001/db/execute
10 requests completed in 16.130142ms

@ -17,6 +17,7 @@ var modPrint int
var tx bool
var tp string
var path string
var oneshot string
const name = `rqbench`
const desc = `rqbench is a simple load testing utility for rqlite.`
@ -29,6 +30,7 @@ func init() {
flag.BoolVar(&tx, "x", false, "Use explicit transaction per request")
flag.StringVar(&tp, "t", "http", "Transport to use")
flag.StringVar(&path, "p", "/db/execute", "Endpoint to use")
flag.StringVar(&oneshot, "o", "", "One-shot execute statement to preload")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "\n%s\n\n", desc)
fmt.Fprintf(os.Stderr, "Usage: %s [arguments] <SQL statement>\n", name)
@ -50,6 +52,19 @@ func main() {
fmt.Fprintf(os.Stderr, "not a valid transport: %s\n", tp)
}
if oneshot != "" {
o := NewHTTPTester(addr, "/db/execute")
if err := o.Prepare(oneshot, 1, false); err != nil {
fmt.Println("failed to prepare oneshot:", err.Error())
os.Exit(1)
}
_, err := run(o, 1)
if err != nil {
fmt.Println("failed to execute oneshot:", err.Error())
os.Exit(1)
}
}
tester := NewHTTPTester(addr, path)
if err := tester.Prepare(stmt, batchSz, tx); err != nil {
fmt.Println("failed to prepare test:", err.Error())

Loading…
Cancel
Save