[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |