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: Re: [PATCH RFC 9/9] ts-unixbench-prep: make it generic
Date: Fri, 27 Jun 2014 11:40:09 +0200 [thread overview]
Message-ID: <1403862009.5251.16.camel@Solace> (raw)
In-Reply-To: <20140626130328.20110.46824.stgit@Solace>
[-- Attachment #1.1.1: Type: text/plain, Size: 1122 bytes --]
On gio, 2014-06-26 at 15:03 +0200, Dario Faggioli wrote:
> 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.
>
Not only it's a stub, it also has a bug in it! :-P
Attached a correct version (and I also updated the branch so that, if
you clone it, everything should work fine).
git://xenbits.xen.org/people/dariof/osstest.git benchmarking-with-osstest-RFC
Hopefully, this does not affect too much the review of the series, given
the nature of this very patch.
In summary, if you want to try and see how the thing works, either apply
only patches 1-7, or, if you want to apply 9 as well, use the version
attached to this email. Or just clone the git repo (it has the fixed
version patch 9/9).
Sorry and Regards,
Dario
--
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
[-- Attachment #1.1.2: turn-ts-unixbench-into-generic.patch --]
[-- Type: text/x-patch, Size: 5106 bytes --]
commit d61f362e934421a74b2b7238035af3fce6ac307b
Author: Dario Faggioli <dario.faggioli@citrix.com>
Date: Wed Jun 25 16:55:56 2014 +0200
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@citrix.com>
diff --git a/ts-unixbench-prep b/ts-unixbench-prep
index 607d1a8..55816b7 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, $name, $ext);
+}
-# 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, $name, $ext)= 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
+}
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
prev parent reply other threads:[~2014-06-27 9:40 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 ` [PATCH RFC 9/9] ts-unixbench-prep: " Dario Faggioli
2014-06-27 9:40 ` Dario Faggioli [this message]
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=1403862009.5251.16.camel@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).