xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Dario Faggioli <dario.faggioli@citrix.com>
To: xen-devel@lists.xen.org
Cc: Ian.Jackson@citrix.com, Wei Liu <wei.liu2@citrix.com>,
	Ian.Campbell@citrix.com,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: [PATCH RFC 9/9] ts-unixbench-prep: make it generic
Date: Thu, 26 Jun 2014 15:03:28 +0200	[thread overview]
Message-ID: <20140626130328.20110.46824.stgit@Solace> (raw)
In-Reply-To: <20140626124540.20110.24159.stgit@Solace>

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@citrix.com>
---
 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
+}

  parent reply	other threads:[~2014-06-26 13:03 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-26 13:02 [PATCH RFC 0/9] Running benchmarks via OSSTest Dario Faggioli
2014-06-26 13:02 ` [PATCH RFC 1/9] mg-unixbench-download: new script for downloading the unixbench archive Dario Faggioli
2014-07-16 15:02   ` Ian Campbell
2014-07-16 16:08     ` Dario Faggioli
2014-06-26 13:02 ` [PATCH RFC 2/9] ts-unixbench-prep: prep the environment for running unixbench Dario Faggioli
2014-07-16 15:09   ` Ian Campbell
2014-07-16 15:11     ` Ian Jackson
2014-07-16 15:57     ` Dario Faggioli
2014-07-16 16:07     ` Dario Faggioli
2014-06-26 13:02 ` [PATCH RFC 3/9] ts-unixbench-run: kick off the benchmark on the target Dario Faggioli
2014-06-26 13:02 ` [PATCH RFC 4/9] ts-unixbench-reslts: for retrieving the results Dario Faggioli
2014-07-16 15:11   ` Ian Campbell
2014-07-16 15:58     ` Dario Faggioli
2014-06-26 13:02 ` [PATCH RFC 5/9] sg-run-job: new recipe for a unixbench job Dario Faggioli
2014-06-26 13:03 ` [PATCH RFC 6/9] make-bench-flight: to create a benchmarking flight Dario Faggioli
2014-06-26 13:03 ` [PATCH RFC 7/9] make-flight: introduce a new -t option Dario Faggioli
2014-07-16 15:13   ` Ian Campbell
2014-07-16 15:14     ` Dario Faggioli
2014-06-26 13:03 ` [PATCH RFC 8/9] mg-unixbench-download: make it generic Dario Faggioli
2014-06-26 13:03 ` Dario Faggioli [this message]
2014-06-27  9:40   ` [PATCH RFC 9/9] ts-unixbench-prep: " Dario Faggioli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140626130328.20110.46824.stgit@Solace \
    --to=dario.faggioli@citrix.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=Ian.Jackson@citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).