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 "$@"
 |