[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH RFC 9/9] ts-unixbench-prep: make it generic



to allow dealing with preparation of multiple benchmarks.

XXX As for the previous patch, this is only to show how
    the code will look if we go this way.

Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
---
 ts-unixbench-prep |   94 ++++++++++++++++++++++++++++++++---------------------
 1 file changed, 57 insertions(+), 37 deletions(-)

diff --git a/ts-unixbench-prep b/ts-unixbench-prep
index 607d1a8..f0258ab 100755
--- a/ts-unixbench-prep
+++ b/ts-unixbench-prep
@@ -26,7 +26,10 @@ use feature 'switch';
 tsreadconfig();
 
 # what we expect as argument list is:
-#  host=<somehost> [<someguest>]
+#  host=<somehost> [<someguest>] <benchname>
+@ARGV= reverse @ARGV;
+our $benchname= $ARGV[0]; shift @ARGV;
+@ARGV= reverse @ARGV;
 our $ho= selecthost($ARGV[0]); shift @ARGV;
 our $gho= $ho;
 if ( (0+@ARGV) == 1) {
@@ -35,45 +38,62 @@ if ( (0+@ARGV) == 1) {
   die "$err $gho->{Name}" if defined $err;
 }
 
-logm("Prep the environment for running unixbench");
+# In general, we know what benchmarks comes in archives. We assume them to be
+# tarballs, and we try to figure out whether or not it is compressed, and if
+# yes, how. Check is rather basic, relying only on the file extension.
+sub archive_extract_cmd($) {
+  my $benchfile_path= @_;
+  my @exts= qw(.tar .tgz .tbz2. .bz2 .gzip);
+  my ($name, $dir, $ext) = fileparse($benchfile_path, @exts);
+  my $cmd;
 
-# packages needed to build and run
-target_install_packages_norec($gho, qw(build-essential libx11-dev
-                                       libgl1-mesa-dev libxext-dev));
+  given ($ext) {
+    $cmd= 'xf' when ('.tar');
+    $cmd= 'zxf' when ['.tgz', '.gzip'];
+    $cmd= 'jxf' when  ['.tbz2', '.bz2'];
+    default { die "unrecognised file extension $ext" }
+  }
+  return $cmd
+}
 
-# Ship the benchmark to the target machine. By default, we expect to find
-# UnixBench 5.1.3, stored in $c{Images}/benchs/unixbench.tgz.
-# To use something different, define r{'unixbench_file'}.
-#
-# We also assume we're dealing with a tarball, and we try to figure out
-# whether or not it is compressed, and if yes, how. Check is rather basic,
-# relying only on the file extension.
-#
-my $unixbench_file= (defined($r{'unixbench_file'})) ? $r{'unixbench_file'} :
-    "$c{Images}/benchs/unixbench.tgz";
-target_putfile_root($gho, 60, "$unixbench_file", "/root");
+# Ship the benchmark to the target machine and prepare the environment
+logm("Prep the environment for running $benchname");
 
-my @exts= qw(.tar .tgz .tbz2. .bz2 .gzip);
-my $extract_cmd= 'xf';
-my ($name, $dir, $ext) = fileparse($unixbench_file, @exts);
+if ($benchname eq "unixbench") {
+  # By default, we expect to find UnixBench 5.1.3, stored in
+  # $c{Images}/benchs/unixbench.tgz. To use something different,
+  # define r{'unixbench_file'}.
+  my $unixbench_file= (defined($r{'unixbench_file'})) ? $r{'unixbench_file'} :
+      "$c{Images}/benchs/unixbench.tgz";
+  target_putfile_root($gho, 60, "$unixbench_file", "/root");
 
-given ($ext) {
-  $extract_cmd= 'xf' when ('.tar');
-  $extract_cmd= 'zxf' when ['.tgz', '.gzip'];
-  $extract_cmd= 'jxf' when  ['.tbz2', '.bz2'];
-  default { die "unrecognised file extension $ext" }
-}
+  my $extract_cmd= archive_extract_cmd($unixbench_file);
+
+  # Packages needed to build and run
+  target_install_packages_norec($gho, qw(build-essential libx11-dev
+                                         libgl1-mesa-dev libxext-dev));
 
-# Prepare the target, by installing dependencies, and build the benchmark
-target_install_packages_norec($gho, qw(build-essential libx11-dev
-                                       libgl1-mesa-dev libxext-dev
-                                       x11-apps));
-target_cmd_root($gho, <<END, 200);
-        set -ex
-        rm -rf /root/unixbench/
-        mkdir /root/unixbench
-        tar $extract_cmd /root/$name$ext -C /root/unixbench 
--strip-components=1
-        cd /root/unixbench
-        sed -e "s/^# GRAPHIC_TESTS =/GRAPHIC_TESTS =/" -i Makefile
-        make
+  target_cmd_root($gho, <<END, 200);
+          set -ex
+          rm -rf /root/unixbench/
+          mkdir /root/unixbench
+          tar $extract_cmd /root/$name$ext -C /root/unixbench 
--strip-components=1
+          cd /root/unixbench
+          sed -e "s/^# GRAPHIC_TESTS =/GRAPHIC_TESTS =/" -i Makefile
+          make
 END
+} elsif ($benchname eq "hackbench") {
+  # In case of hackbench, it is just a .c file.
+  my $hackbench_file= (defined($r{'hackbench_file'})) ? $r{'hackbench_file'} :
+      "$c{Images}/benchs/hackbench.c";
+  target_putfile_root($gho, 60, "$hackbench_file", "/root");
+
+  # Packages needed to build and run
+  target_install_packages_norec($gho, qw(build-essential));
+
+  target_cmd_root($gho, <<END, 200);
+          set -ex
+          rm -f /root/hackbench
+          gcc -g -Wall -O2 -o /root/hackbench /root/hackbench.c -lpthread
+END
+}


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.