reduce.sh

88 lines | 3.484 kB Blame History Raw Download
#!/bin/bash

source functions.sh

function initialize-output() {
	reduce="$1"
	overwrite="$2"
	if [[ "$reduce" = "*" || "$reduce" = "requests" ]]; then
		if [[ ! -f  applications/output/requests-handled.csv || "$overwrite" == "overwrite" ]]; then
			echo 'application,version,users,execution,time,requests' > applications/output/requests-handled.csv
		fi
	fi
	if [[ "$reduce" = "*" || "$reduce" = "cache" ]]; then
		if [[ ! -f  applications/output/hits-distribution.csv || "$overwrite" == "overwrite" ]]; then
			echo 'application,version,users,name,identifier,event,amount' > applications/output/hits-distribution.csv
		fi
		if [[ ! -f  applications/output/uncached-parameters.csv || "$overwrite" == "overwrite" ]]; then
			echo 'application,version,users,name,parameters,amount' > applications/output/uncached-parameters.csv
		fi
	fi
}

if [ "$(whoami)" != 'root' ]; then
    echo "You have no permission to run $0 as non-root user."
    exit 1;
fi

JAVA_OPTS=${JAVA_OPTS:-"-Xms4096m -Xmx6124m"}

host="localhost"
versions="uncached developers aplcache memoizeit"
applications="*"
reduce="*"
overwrite="false"
if [[ ! -z $1 ]]; then
	host=$1
	if [[ ! -z $2 ]]; then
		versions=$2
		if [[ ! -z $3 ]]; then
			applications=$3
			if [[ ! -z $4 ]]; then
				reduce=$4
				if [[ ! -z $5 ]]; then
					overwrite=$5
				fi
			fi
		fi
	fi
fi

if [[ $host = "localhost" ]]; then
	initialize-output "$reduce" "$overwrite"
else
	initialize-output "requests" "$overwrite"
	command="bash reduce.sh localhost \"$versions\" \"$applications\" cache $overwrite"
	execute "$host" "$command"
fi
echo "$(date '+%F %T') Reducing $reduce in host $host for the applications $applications among the versions $versions"
for version in $versions; do
	version=${version%/}
	if [[ $applications = "*" ]]; then
		existing_applications=$(echo applications/$version/*/)
	else
		existing_applications=$applications
	fi
	for application in $existing_applications; do
		application=${application//applications\/$version\//}
		application=${application%/}
		for user in 1 5 25; do
			if [[ "$reduce" = "*" || "$reduce" = "requests" ]]; then
				for execution in {1..10}; do
					echo "$(date '+%F %T')  Reducing requests of $application-$version with $user users and execution $execution"
					java $JAVA_OPTS -jar adapters/RequestsSimulator/target/RequestsSimulator-1.0.jar --throughput=applications/output/$application-$version-${user}user-${execution}execution-requests --reduce=applications/output/requests-handled.csv --prefix=$application,$version,$user,$execution,
				done
			fi
			if [[ $host = "localhost" && ("$reduce" = "*" || "$reduce" = "cache") ]]; then
				echo "$(date '+%F %T') Reducing cachemetrics of $application-$version with $user users"
				java $JAVA_OPTS -jar adapters/Cache/target/Cache-1.0.jar --events=applications/output/$application-$version-${user}user-cache --reduce=applications/output/hits-distribution.csv --prefix=$application,$version,$user,
				java $JAVA_OPTS -jar adapters/Cache/target/Cache-1.0.jar --events=applications/output/$application-$version-${user}user-cache --reduce=applications/output/cache-size-distribution.csv --size --prefix=$application,$version,$user,
				if [[ $version = "aplcache" ]]; then
					echo "$(date '+%F %T') Reducing parameters of $application with $user users"
					java $JAVA_OPTS -jar adapters/Cache/target/Cache-1.0.jar --uncached=applications/output/$application-$version-${user}user-cache.log --reduce=applications/output/uncached-parameters.csv --prefix=$application,$version,$user, --hash
				fi
			fi
		done
	done
done