This PR adds a Swarm development environment which can be run in a Docker container and provides scripts for building binaries and running Swarm clusters.
		
			
				
	
	
		
			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 "$@"
 |