1
0
Fork 0

Check for errors when performing requests

master
Philip O'Toole 1 year ago
parent aee3b5d8f5
commit 896a6530c6

@ -5,11 +5,21 @@ import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"time"
)
// Result represents a single result from a test request.
type Result struct {
Error string `json:"error,omitempty"`
Rest json.RawMessage
}
// Response represents a response from a test request.
type Response struct {
Results []Result `json:"results"`
}
// HTTPTester represents an HTTP transport tester.
type HTTPTester struct {
client http.Client
@ -61,13 +71,22 @@ func (h *HTTPTester) Once() (time.Duration, error) {
}
defer resp.Body.Close()
_, err = ioutil.ReadAll(resp.Body)
if resp.StatusCode != http.StatusOK {
return 0, fmt.Errorf("received %s", resp.Status)
}
r := Response{}
err = json.NewDecoder(resp.Body).Decode(&r)
if err != nil {
return 0, err
}
if resp.StatusCode != http.StatusOK {
return 0, fmt.Errorf("received %s", resp.Status)
if len(r.Results) == 0 {
return 0, fmt.Errorf("expected at least 1 result, got %d", len(r.Results))
}
for _, res := range r.Results {
if res.Error != "" {
return 0, fmt.Errorf("received error: %s", res.Error)
}
}
dur := time.Since(start)

@ -1,10 +1,28 @@
#!/bin/bash
EXECUTE_HOST=localhost:4001
if [[ -z "$EXECUTE_HOST" ]]; then
EXECUTE_HOST=localhost:4001
fi
$RQBENCH -o 'CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT, surname TEXT)' -m 100 -n 1500000 -a $EXECUTE_HOST 'INSERT INTO foo(name) VALUES("fiona")' &
$RQBENCH -o 'CREATE TABLE bar (id INTEGER NOT NULL PRIMARY KEY, name TEXT, surname TEXT)' -m 100 -n 1500000 -a $EXECUTE_HOST 'INSERT INTO bar(name, surname) VALUES("fiona", "OTOOLE")' &
$RQBENCH -o 'CREATE TABLE qux (id INTEGER NOT NULL PRIMARY KEY, name TEXT)' -m 100 -n 1500000 -a $EXECUTE_HOST 'INSERT INTO qux(name) VALUES("fionafionafionafionafionafionafionafionafionafionafionafionafionafionafionafionafionafiona")' &
if [[ -z "$RQBENCH" ]]; then
RQBENCH="./rqbench"
fi
handle_ctrl_c() {
echo "Killing all load testing..."
killall rqbench
exit 1
}
trap 'handle_ctrl_c' SIGINT
$RQBENCH -o 'CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT, surname TEXT)' -m 100 -n 500000 -a $EXECUTE_HOST 'INSERT INTO foo(name) VALUES("fiona")' &
$RQBENCH -o 'CREATE TABLE bar (id INTEGER NOT NULL PRIMARY KEY, name TEXT, surname TEXT)' -m 100 -n 500000 -a $EXECUTE_HOST 'INSERT INTO bar(name, surname) VALUES("fiona", "OTOOLE")' &
$RQBENCH -o 'CREATE TABLE qux (id INTEGER NOT NULL PRIMARY KEY, name TEXT)' -m 100 -n 500000 -a $EXECUTE_HOST 'INSERT INTO qux(name) VALUES("fionafionafionafionafionafionafionafionafionafionafionafionafionafionafionafionafionafiona")' &
echo "Waiting for tables to be created before starting queries"
sleep 5
$RQBENCH -p "/db/query" -n 150000000 -m 1000 "SELECT COUNT(*) FROM foo" &
$RQBENCH -p "/db/query" -n 150000000 -m 1000 "SELECT COUNT(*) FROM bar" &

Loading…
Cancel
Save