blob: 55c72e47f240a9a9956dfd3ab707d27c37b40eb4 [file] [log] [blame]
#!/bin/sh -e
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
#
# usage: time benchbulk.sh
# it takes about 30 seconds to run on my old MacBook with bulksize 1000
BULKSIZE=100
DOCSIZE=10
INSERTS=10
ROUNDS=10
DBURL="http://127.0.0.1:5984/benchbulk"
POSTURL="$DBURL/_bulk_docs"
function make_bulk_docs() {
ROW=0
SIZE=$(($1-1))
START=$2
BODYSIZE=$3
BODY=$(printf "%0${BODYSIZE}d")
echo '{"docs":['
while [ $ROW -lt $SIZE ]; do
printf '{"_id":"%020d", "body":"'$BODY'"},' $(($ROW + $START))
let ROW=ROW+1
done
printf '{"_id":"%020d", "body":"'$BODY'"}' $(($ROW + $START))
echo ']}'
}
echo "Making $INSERTS bulk inserts of $BULKSIZE docs each"
echo "Attempt to delete db at $DBURL"
curl -X DELETE $DBURL -w\\n
echo "Attempt to create db at $DBURL"
curl -X PUT $DBURL -w\\n
echo "Running $ROUNDS rounds of $INSERTS concurrent inserts to $POSTURL"
RUN=0
while [ $RUN -lt $ROUNDS ]; do
POSTS=0
while [ $POSTS -lt $INSERTS ]; do
STARTKEY=$[ POSTS * BULKSIZE + RUN * BULKSIZE * INSERTS ]
echo "startkey $STARTKEY bulksize $BULKSIZE"
DOCS=$(make_bulk_docs $BULKSIZE $STARTKEY $DOCSIZE)
# echo $DOCS
echo $DOCS | curl -T - -H Content-Type:application/json -X POST $POSTURL -w%{http_code}\ %{time_total}\ sec\\n >/dev/null 2>&1 &
let POSTS=POSTS+1
done
echo "waiting"
wait
let RUN=RUN+1
done
curl $DBURL -w\\n