TestSpecs/gen: add first draft of R script generation script
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Tue, 17 Aug 2010 18:52:51 +0000 (21:52 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Tue, 17 Aug 2010 18:52:51 +0000 (21:52 +0300)
TestSpecs/gen/rgen [new file with mode: 0755]

diff --git a/TestSpecs/gen/rgen b/TestSpecs/gen/rgen
new file mode 100755 (executable)
index 0000000..4f4adfb
--- /dev/null
@@ -0,0 +1,114 @@
+#!/bin/bash
+
+#
+# Generate R script for plot processing from campaign and scenario
+# configuration file
+#
+
+if test $# -ne 2; then
+       echo "Usage: $0 campaign-config-file scenario-config-file" 1>&2
+       exit 1
+fi
+
+campaign_file=$1
+scenario_file=$2
+
+campaign_name=${campaign_file/%.cfg}
+scenario_name=${scenario_file/%.cfg}
+
+cat <<END
+# Read transmitted command line arguments
+args <- commandArgs(trailingOnly = TRUE)
+
+# The data files are located in the target folder. Also, the graph will be saved in the target folder.
+target_folder <- args[2]
+campaign_name <- args[3]
+rm(args)
+
+# read data from the data file
+END
+
+index=1
+while read server port user remote_path remote_if dl_bw dl_burst ul_bw ul_burst pre_run_script post_run_script client_type torrent_file periods; do
+       cat <<END
+peer${index}=read.table(paste(target_folder, "${server}.log.data", sep="/"), header=T, sep=" ")
+END
+       ((index++))
+done < <(grep -v '^#' ${scenario_file})
+
+cat <<END
+
+# transform KB/s to Mbit/s
+END
+
+index=1
+while read server port user remote_path remote_if dl_bw dl_burst ul_bw ul_burst pre_run_script post_run_script client_type torrent_file periods; do
+       cat <<END
+peer${index}\$dlspeed <- peer${index}\$dlspeed*8/1000
+END
+       ((index++))
+done < <(grep -v '^#' ${scenario_file})
+
+cat <<END
+
+# plot dlspeed-percent data
+p <- ggplot() +
+END
+
+index=1
+while read server port user remote_path remote_if dl_bw dl_burst ul_bw ul_burst pre_run_script post_run_script client_type torrent_file periods; do
+       cat <<END
+geom_point(aes(x=peer${index}\$percent, y=peer${index}\$dlspeed, label="Peer ${index}"), size=1) +
+END
+       ((index++))
+done < <(grep -v '^#' ${scenario_file})
+
+cat <<END
+theme_bw() +
+scale_x_continuous("Percent", limits=c(0, 100), breaks=seq(0, 100, 10)) +
+scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) +
+coord_cartesian() +
+scale_colour_manual("Legend") +
+opts(title=paste(campaign_name, "${campaign_name}: a test swarm (TODO Seeders, TODO Leechers), TODO description", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "${scenario_name}.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "${scenario_name}.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+
+
+# plot dlspeed-time data
+p <- ggplot() +
+END
+
+index=1
+while read server port user remote_path remote_if dl_bw dl_burst ul_bw ul_burst pre_run_script post_run_script client_type torrent_file periods; do
+       cat <<END
+geom_point(aes(x=peer${index}\$percent, y=peer${index}\$dlspeed, label="Peer ${index}"), size=1) +
+END
+       ((index++))
+done < <(grep -v '^#' ${scenario_file})
+
+cat <<END
+theme_bw() +
+scale_x_continuous("Time(s)") +
+scale_y_continuous("Download speed (Mbit/s)", limits=c(0, 8), breaks=seq(0, 8, 0.5)) +
+coord_cartesian() +
+scale_colour_manual("Legend") +
+opts(title=paste(campaign_name, "${campaign_name}: a test swarm (TODO Seeders, TODO Leechers), TODO description)", sep="\n"))
+
+# plot data as an eps file
+postscript(paste(target_folder, "${scenario_name}.eps", sep="/"))
+print(p)
+dev.off()
+
+# plot data as an png file
+png(paste(target_folder, "${scenario_name}.png", sep="/"), width = 1280, height = 800)
+print(p)
+dev.off()
+END