|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [OSSTEST PATCH v3 1/3] ts-cpupools: new test script
On Sat, 2015-10-03 at 02:39 +0200, Dario Faggioli wrote:
> Copyright (C) 2009-2014 Citrix Inc.
Year.
> +our $default_pool= "Pool-0";
> +our @schedulers= ("credit","credit2","rtds");
I think @schedulers probably ought to come from a runvar (comma-separated).
Consider testing cpupools on 4.4 (which didn't have rtds) or Xen 7.2 which
has the xyzzy scheduler for example.
I'm less sure about $default_pool, I think that one is probably pretty
inherent and not worth generlising?
> +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");
"too" and apparently no actual condition check?
But based on discussion on 0/3 I'm hoping this check will go away, or maybe
it will become a die.
> +}
> +
> +# 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//;
The output of "xl cpupool-list" is
----
Name CPUs Sched Active Domain count
Pool-0 8 credit y 4
----
Is $nr_cpupools not therefore 2 when there is a single pool? (2 "\n", one
after the header, one after the data)
> +
> + 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/;
This won't barf on e.g. "Pool-01". Some use of \b might help.
> +
> + die "This test is meant for xl only"
> + if toolstack($ho)->{Name} ne "xl";
> +}
> +
> +# Odd pCPUs will end up in out test pool
s/out/our/
> +sub prep_cpulist () {
> + @cpulist = grep { $_ % 2 } (0..$nr_cpus);
> + logm("Using the following cpus fo the test pool: @cpulist");
s/fo/for/
> +}
> +
> +sub prep_pool ($) {
> + my ($sched)= @_;
> + my @cpustr;
> +
> + my @cpustr= map { $_ == -1 ? "[ " : $_ == $#cpulist+1 ? " ]" :
> + "\"$cpulist[$_]\"," } (-1 .. $#cpulist+1);
I think I would write
my @cpustr = ("[ ".$#cpulist+1." ]");
push @cpustr, map { "\"$cpulist[$_]\"," } (0 .. $#cpulist+1);
at which point I would realise that the push was something like:
push @cpustr, map { "\"$_\"," } @cpulist;
I'd also do the "," bit using
my $cpustr = join ",", @cpustr;
otherwise you get a trailing "," which you may not want.
(Disclaimer: I'm not 100% sure what output string you are trying to make
here).
> +
> + target_putfilecontents_stash($ho,100,<<"END","/etc/xen/cpupool-test
> -$sched");
> +name = \"cpupool-test-$sched\"
> +sched = \"$sched\"
Do the quotes really need escaping in this context? I wouldn't have
expected so.
> +cpus = @cpustr
> +END
> +}
> +
> +
> +check();
> +check_cpus();
> +if ($nr_cpus > 1) {
This will go away I hope.
> + prep_cpulist();
> + foreach my $s (@schedulers) {
> + prep_pool("$s");
> + run("$s");
I think you just want $s, not "$s" in both places. $s is already a string.
> + }
> +}
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |