@@ -67,6 +67,34 @@ END
return $flags;
}
+sub get_arch_platforms ($$) {
+ my ($hd, $blessing, $arch) = @_;
+
+ my @plats = ( );
+ my $platsq = $dbh_tests->prepare(<<END);
+SELECT DISTINCT hostflag
+ FROM hostflags h0
+ WHERE EXISTS (
+ SELECT *
+ FROM hostflags h1, hostflags h2
+ WHERE h0.hostname = h1.hostname AND h1.hostname = h2.hostname
+ AND h1.hostflag = ?
+ AND h2.hostflag = ?
+ )
+ AND hostflag like 'platform-%';
+END
+
+ $platsq->execute("blessed-$blessing", "arch-$arch");
+
+ while (my ($plat) = $platsq->fetchrow_array()) {
+ $plat =~ s/^platform-//g or die;
+ push @plats, $plat;
+ }
+
+ $platsq->finish();
+ return @plats;
+}
+
sub default_methods ($$) {
my ($hd, $ho) = @_;
@@ -63,6 +63,15 @@ sub get_flags ($$) { #method
return $flags;
}
+sub get_arch_platforms ($$) {
+ my ($hd, $blessing, $arch) = @_;
+
+ my $prop = "Platforms".ucfirst($arch);
+
+ return split /[, ]/, $c{$prop} if $c{$prop};
+ return () unless $c{$prop};
+}
+
sub default_methods ($$) { #method
my ($hd, $ho) = @_;
@@ -381,6 +381,9 @@ The keys in ~/.ssh/id_{rsa,dsa}.pub and ~/.ssh/authorized_keys
TestHostKeypairPath
+Platforms<Arch>
+ List of platforms (i.e. distinct host types) to run a basic test on.
+
HostProp_GenEtherPrefixBase 5e:36:0e:f5
# :00:01 guest number in job appended
# in standalone jobdb, ^^^^^ xor'd with low 16 bits of your uid
new file mode 100755
@@ -0,0 +1,25 @@
+# -*- bash -*-
+
+# This is part of "osstest", an automated testing framework for Xen.
+# Copyright (C) 2014 Citrix Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+getplatforms () {
+ perl -e '
+ use Osstest;
+ csreadconfig();
+ print join " ", $mhostdb->get_arch_platforms("'$blessing'", "'$1'") or die $!;
+ '
+}
@@ -27,6 +27,7 @@ buildflight=$4
flight=`./cs-flight-create $blessing $branch`
. cri-common
+. cri-getplatforms
. ap-common
. mfi-common
@@ -284,10 +285,14 @@ do_passthrough_tests () {
test_matrix_do_one () {
# Basic PV Linux test with xl
+ for platform in '' `getplatforms $xenarch` ; do
+ suffix=${platform:+-$platform}
+ hostflags=${most_hostflags}${platform:+,platform-$platform}
- job_create_test test-$xenarch$kern-$dom0arch-xl test-debian xl \
+ job_create_test test-$xenarch$kern-$dom0arch-xl$suffix test-debian xl \
$xenarch $dom0arch \
- $debian_runvars all_hostflags=$most_hostflags
+ $debian_runvars all_hostflags=$hostflags
+ done
job_create_test test-$xenarch$kern-$dom0arch-libvirt test-debian libvirt \
$xenarch $dom0arch \
Unlike x86 there is enough variation in the ARM platforms that it is worth having a basic test on each as part of a standard run. This relies on each host having an appropriate platform-$platform host flag. The existing test-ARCH-ARCH-xl test is retained as a floating test, while a new variant is added for each distinct platform present in the hostdb which is tied to that platform type. The intention is that only arm platforms will have platforms at first, although perhaps platform-intel and platform-amd could be added in the future too. There are currently no platform-* flags in the hostdb, so tested with s/platform-/equiv-/ and: ( set -ex ; source ./cri-getplatforms ; blessing=real ; export OSSTEST_CONFIG=production-config ; for p in '' `getplatforms "armhf"` ; do set +x ; echo PLATFORM: $p ; done ) which prints: PLATFORM: PLATFORM: marilith and with s/armhf/amd64/: PLATFORM: PLATFORM: rackservers-s40670 PLATFORM: r310-moth PLATFORM: rackservers-s40680 PLATFORM: dell-r310 PLATFORM: rackservers-s40679 PLATFORM: rackservers-s40663 PLATFORM: rackservers-q21011 Also tested in standalone mode with a ~/.xen-osstest/config containing: PlatformsArmhf midway cubietruck arndale Signed-off-by: Ian Campbell <ian.campbell@citrix.com> --- v2: Use platform-* prop not equiv-* Select platforms from host db --- Osstest/HostDB/Executive.pm | 28 ++++++++++++++++++++++++++++ Osstest/HostDB/Static.pm | 9 +++++++++ README | 3 +++ cri-getplatforms | 25 +++++++++++++++++++++++++ make-flight | 9 +++++++-- 5 files changed, 72 insertions(+), 2 deletions(-) create mode 100755 cri-getplatforms