| 
									
										
										
										
											2017-06-01 11:52:18 +01:00
										 |  |  | #!/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() { | 
					
						
							| 
									
										
										
										
											2017-12-19 09:49:30 +01:00
										 |  |  |   curl -fsSL -X POST --data-binary "$(random_data)" "http://${addr}/bzz-raw:/" | 
					
						
							| 
									
										
										
										
											2017-06-01 11:52:18 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 "$@" |