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) {
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
+}