97 lines
2.0 KiB
Bash
Executable File
97 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# A script to upload random data to a swarm cluster.
|
|
#
|
|
# Example:
|
|
#
|
|
# random-uploads.sh --addr 192.168.33.101:8500 --size 40k --count 1000
|
|
|
|
set -e
|
|
|
|
ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
|
|
source "${ROOT}/swarm/dev/scripts/util.sh"
|
|
|
|
DEFAULT_ADDR="localhost:8500"
|
|
DEFAULT_UPLOAD_SIZE="40k"
|
|
DEFAULT_UPLOAD_COUNT="1000"
|
|
|
|
usage() {
|
|
cat >&2 <<USAGE
|
|
usage: $0 [options]
|
|
|
|
Upload random data to a Swarm cluster.
|
|
|
|
OPTIONS:
|
|
-a, --addr ADDR Swarm API address [default: ${DEFAULT_ADDR}]
|
|
-s, --size SIZE Individual upload size [default: ${DEFAULT_UPLOAD_SIZE}]
|
|
-c, --count COUNT Number of uploads [default: ${DEFAULT_UPLOAD_COUNT}]
|
|
-h, --help Show this message
|
|
USAGE
|
|
}
|
|
|
|
main() {
|
|
local addr="${DEFAULT_ADDR}"
|
|
local upload_size="${DEFAULT_UPLOAD_SIZE}"
|
|
local upload_count="${DEFAULT_UPLOAD_COUNT}"
|
|
|
|
parse_args "$@"
|
|
|
|
info "uploading ${upload_count} ${upload_size} random files to ${addr}"
|
|
|
|
for i in $(seq 1 ${upload_count}); do
|
|
info "upload ${i} / ${upload_count}:"
|
|
do_random_upload
|
|
echo
|
|
done
|
|
}
|
|
|
|
do_random_upload() {
|
|
curl -fsSL -X POST --data-binary "$(random_data)" "http://${addr}/bzzr:/"
|
|
}
|
|
|
|
random_data() {
|
|
dd if=/dev/urandom of=/dev/stdout bs="${upload_size}" count=1 2>/dev/null
|
|
}
|
|
|
|
parse_args() {
|
|
while true; do
|
|
case "$1" in
|
|
-h | --help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
-a | --addr)
|
|
if [[ -z "$2" ]]; then
|
|
fail "--addr flag requires an argument"
|
|
fi
|
|
addr="$2"
|
|
shift 2
|
|
;;
|
|
-s | --size)
|
|
if [[ -z "$2" ]]; then
|
|
fail "--size flag requires an argument"
|
|
fi
|
|
upload_size="$2"
|
|
shift 2
|
|
;;
|
|
-c | --count)
|
|
if [[ -z "$2" ]]; then
|
|
fail "--count flag requires an argument"
|
|
fi
|
|
upload_count="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ $# -ne 0 ]]; then
|
|
usage
|
|
fail "ERROR: invalid arguments: $@"
|
|
fi
|
|
}
|
|
|
|
main "$@"
|