97 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			97 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
|   | #!/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 "$@" |