[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [OSSTEST PATCH v3 1/3] ts-cpupools: new test script
for smoke testing cpupools a bit. It tries to partition a live host in two cpupools, trying out the following 3 schedulers for the new cpupool (one after the other): credit, credit2 and RTDS. It also tries to migrating a domain to the new cpupool and then back to Pool-0. Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> --- Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> Cc: Juergen Gross <jgross@xxxxxxxx> --- Changes from v2: * reorganized internal subroutines; * avoid failing (just don't run the test) if we find only 1 pCPU on the host; * use 'map' and 'grep' in place of foreach loops, as suggested during review; * fix the check for the default cpupool configuration to be in place when starting the test, as identified during review; * fix quoting for the name of the cpupool, as idenfied during review; * use target_cmd_root(), instead of target_cmd_output_root(), as requested during review; * check for the toolstack to be xl and only xl, as requested during review. --- ts-cpupools | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100755 ts-cpupools diff --git a/ts-cpupools b/ts-cpupools new file mode 100755 index 0000000..7fe9a27 --- /dev/null +++ b/ts-cpupools @@ -0,0 +1,121 @@ +#!/usr/bin/perl -w +# This is part of "osstest", an automated testing framework for Xen. +# Copyright (C) 2009-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/>. + +use strict qw(vars); +use DBI; +use Osstest; +use Osstest::TestSupport; + +tsreadconfig(); + +our ($ho,$gho) = ts_get_host_guest(@ARGV); + +our $nr_cpus; +our $default_pool= "Pool-0"; +our @schedulers= ("credit","credit2","rtds"); +our @cpulist; + +# Figure out the number of pCPUs of the host. We need to know that for +# deciding with what pCPUs we'll create the test pool. +sub check_cpus () { + my $xlinfo= target_cmd_output_root($ho, "xl info"); + $xlinfo =~ /nr_cpus\s*:\s([0-9]*)/; + $nr_cpus= $1; + logm("Found $nr_cpus pCPUs"); + logm("$nr_cpus is yoo few pCPUs for testing cpupools"); +} + +# At the beginning: +# * only 1 pool must exist, +# * it must be the default pool. +sub check () { + my $cppinfo= target_cmd_output_root($ho, "xl cpupool-list"); + my $nr_cpupools= $cppinfo =~ tr/\n//; + + logm("Found $nr_cpupools cpupools"); + die "There already is more than one cpu pool!" if $nr_cpupools > 1; + die "Non-default cpupool configuration detected" + unless $cppinfo =~ /$default_pool/; + + die "This test is meant for xl only" + if toolstack($ho)->{Name} ne "xl"; +} + +# Odd pCPUs will end up in out test pool +sub prep_cpulist () { + @cpulist = grep { $_ % 2 } (0..$nr_cpus); + logm("Using the following cpus fo the test pool: @cpulist"); +} + +sub prep_pool ($) { + my ($sched)= @_; + my @cpustr; + + my @cpustr= map { $_ == -1 ? "[ " : $_ == $#cpulist+1 ? " ]" : + "\"$cpulist[$_]\"," } (-1 .. $#cpulist+1); + + target_putfilecontents_stash($ho,100,<<"END","/etc/xen/cpupool-test-$sched"); +name = \"cpupool-test-$sched\" +sched = \"$sched\" +cpus = @cpustr +END +} + +# For each cpupool: +# * create it +# * rename it +# * move a domain in it +# * move back a domain out of it +# * add back the pcpus from it to the default pool +# * destroy it +sub run ($) { + my ($sched)= @_; + + foreach my $cpu (@cpulist) { + target_cmd_root($ho,"xl cpupool-cpu-remove $default_pool $cpu"); + } + target_cmd_root($ho, "xl cpupool-list -c"); + target_cmd_root($ho, "xl cpupool-create /etc/xen/cpupool-test-$sched"); + target_cmd_root($ho, "xl cpupool-rename cpupool-test-$sched cpupool-test"); + target_cmd_root($ho, "xl cpupool-list -c"); + + target_cmd_root($ho, "xl cpupool-migrate $gho->{Name} cpupool-test"); + target_cmd_root($ho, "xl cpupool-list"); + target_cmd_root($ho, "xl vcpu-list"); + + target_cmd_root($ho, "xl cpupool-migrate $gho->{Name} Pool-0"); + target_cmd_root($ho, "xl cpupool-list"); + + foreach my $cpu (@cpulist) { + target_cmd_root($ho,"xl cpupool-cpu-remove cpupool-test $cpu"); + target_cmd_root($ho,"xl cpupool-cpu-add $default_pool $cpu"); + } + target_cmd_output_root($ho, "xl cpupool-list -c"); + + target_cmd_root($ho, "xl cpupool-destroy cpupool-test"); + target_cmd_root($ho, "xl cpupool-list"); +} + +check(); +check_cpus(); +if ($nr_cpus > 1) { + prep_cpulist(); + foreach my $s (@schedulers) { + prep_pool("$s"); + run("$s"); + } +} _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |