tfcache-comparison

added tracer, runner and server for localhost and remote running.

5/26/2019 4:40:01 AM

Changes

configure 1(+1 -0)

run.sh 62(+62 -0)

server.sh 22(+22 -0)

trace.sh 36(+36 -0)

Details

configure 1(+1 -0)

diff --git a/configure b/configure
index 904237b..a504c83 100755
--- a/configure
+++ b/configure
@@ -14,6 +14,7 @@ if [ -z $1 ]; then
 	apt-get -qq -y install oracle-java8-installer
 	apt-get -qq -y install maven
 	apt-get -qq -y install git
+	apt-get -qq -y install netcat
 
 	export JAVA_HOME=/usr/lib/jvm/java-8-oracle
 
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 2d6df3d..369f673 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -13,6 +13,7 @@ RUN echo debconf shared/accepted-oracle-license-v1-1 seen true | debconf-set-sel
 RUN apt-get -qq -y install oracle-java8-installer
 RUN apt-get -qq -y install maven
 RUN apt-get -qq -y install git
+RUN apt-get -qq -y install netcat
 
 RUN apt-get -qq -y install ssh
 RUN echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

run.sh 62(+62 -0)

diff --git a/run.sh b/run.sh
new file mode 100644
index 0000000..8346344
--- /dev/null
+++ b/run.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+if [ "$(whoami)" != 'root' ]; then
+    echo "You have no permission to run $0 as non-root user."
+    exit 1;
+fi
+
+export JAVA_HOME=/usr/lib/jvm/java-8-oracle
+export JAVA_OPTS="-Xms4096m -Xmx6124m"
+
+host="localhost"
+versions=$(echo applications/cached/*/)
+applications="*"
+if [[ ! -z $1 ]]; then
+	host=$1
+	if [[ ! -z $2 ]]; then
+		versions=$2
+		if [[ ! -z $3 ]]; then
+			applications=$3
+		fi
+	fi
+fi
+
+echo "Running in host $host for the applications $applications among the versions $versions"
+for workload in {1..10}; do
+	for user in 1 5 10 25 50; do
+		for version in $versions; do
+			version=${version%/}
+			if [[ $applications = "*" ]]; then
+				existing_applications=$(echo applications/cached/$version/*/)
+			else
+				existing_applications=$applications
+			fi
+			echo "Running applications $existing_applications with $user users and workload $workload"
+			for application in $existing_applications; do
+				application=${application%/}
+				echo "Running $application with $user users and workload $workload"
+				if [[ $host = "localhost" ]]; then
+					export CACHE_EVENTS=/caching-approaches-comparison/applications/output/$application-$version-${user}user-${workload}workload-cache
+					docker-compose -f applications/cached/$version/$application/docker-compose.yml up -d --build
+				else
+					echo "caching-approaches-comparison export CACHE_EVENTS=/caching-approaches-comparison/applications/output/$application-$version-${user}user-${workload}workload-cache" | netcat -w0 $host 5000
+					echo "caching-approaches-comparison docker-compose -f applications/cached/$version/$application/docker-compose.yml up -d --build" | netcat -w0 $host 5000
+				fi
+				bash -c 'while ! curl -s '$host:8080' > /dev/null; do sleep 5; done'
+				if [[ ! -f applications/workloads/$application-execution-${user}user-${workload}workload.json ]]; then
+					echo "Generating workload"
+					java -jar adapters/RequestsSimulator/target/RequestsSimulator-1.0.jar --profile=applications/workloads/$application.json --time=3600000 --users=$user --log=applications/workloads/$application-execution-${user}user-${workload}workload.json --throughput=applications/output/$application-${user}user-${workload}workload-requests > applications/output/$application-${user}user-${workload}workload-simulator.log 2>&1
+				else
+					echo "Repeating workload"
+					java -jar adapters/RequestsSimulator/target/RequestsSimulator-1.0.jar --profile=applications/workloads/$application.json --execute=applications/workloads/$application-execution-${user}user-${workload}workload.json --throughput=applications/output/$application-$version-${user}user-${workload}workload-requests > applications/output/$application-$version-${user}user-${workload}workload-simulator.log 2>&1
+				fi
+				if [[ $host = "localhost" ]]; then
+					docker-compose -f applications/cached/$version/$application/docker-compose.yml down -v
+				else
+					echo "caching-approaches-comparison docker-compose -f applications/cached/$version/$application/docker-compose.yml down -v" | netcat -w0 $host 5000
+					sleep 11
+				fi
+			done
+		done
+	done
+done
\ No newline at end of file

server.sh 22(+22 -0)

diff --git a/server.sh b/server.sh
new file mode 100644
index 0000000..2a147c2
--- /dev/null
+++ b/server.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+if [ "$(whoami)" != 'root' ]; then
+    echo "You have no permission to run $0 as non-root user."
+    exit 1;
+fi
+
+echo "Start listening on port 5000 ..."
+while read line
+do
+	if [ "$line" == 'exit' ]; then
+		echo "Received 'exit'"
+		break
+	else
+		echo "$line"
+		if [[ "$line" = "caching-approaches-comparison "* ]]; then
+			cmd=${line/caching-approaches-comparison/}
+			eval $cmd
+		fi
+	fi
+done < <(nc -k -l 5000)
+echo "Good bye"

trace.sh 36(+36 -0)

diff --git a/trace.sh b/trace.sh
new file mode 100644
index 0000000..a176ac6
--- /dev/null
+++ b/trace.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+if [ "$(whoami)" != 'root' ]; then
+    echo "You have no permission to run $0 as non-root user."
+    exit 1;
+fi
+
+export JAVA_HOME=/usr/lib/jvm/java-8-oracle
+export JAVA_OPTS="-Xms4096m -Xmx6124m"
+
+host="localhost"
+applications=$(echo applications/uncached/*/)
+if [[ ! -z $1 ]]; then
+	host=$1
+	if [[ ! -z $2 ]]; then
+		applications=$2
+	fi
+fi
+
+echo "Running in host $host for the applications: $applications"
+for application in $applications; do
+	application=${application%/}
+	if [[ $host = "localhost" ]]; then
+		docker-compose -f applications/uncached/$application/docker-compose.yml up -d --build
+	else
+		echo "caching-approaches-comparison docker-compose -f applications/uncached/$application/docker-compose.yml up -d --build" | netcat -w0 $host 5000
+	fi
+	bash -c 'while ! curl -s '$host:8080' > /dev/null; do sleep 5; done'
+	java -jar adapters/RequestsSimulator/target/RequestsSimulator-1.0.jar --profile=applications/workloads/$application.json --time=3600000 --users=1 --log=applications/workloads/$application-execution-uncached.json --throughput=applications/output/$application-uncached-requests > applications/output/$application-uncached-simulator.log 2>&1
+	if [[ $host = "localhost" ]]; then
+		docker-compose -f applications/uncached/$application/docker-compose.yml down -v
+	else
+		echo "caching-approaches-comparison docker-compose -f applications/uncached/$application/docker-compose.yml down -v" | netcat -w0 $host 5000
+		sleep 11
+	fi
+done
\ No newline at end of file