[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH OSSTEST v3] Stubdom test case
On Wed, Jun 10, 2015 at 12:10:41PM +0100, Ian Jackson wrote: > Wei Liu writes ("[PATCH OSSTEST v3] Stubdom test case"): > > Currently only QEMU traditional supports stubdom, so we only create > > > > test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64 > > test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm > > test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64 > > test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm > ... > > > Thanks. This is mostly good but I have some quibbles. > > > The first is that the handling of boolean values is rather odd and > un-idiomatic. > > > + my $stubdom = $xopts{Stubdom}; > > + if (defined $stubdom) { > > + $cfg .= "device_model_stubdomain_override=$stubdom\n"; > > + } > > + if (defined $stubdom && $stubdom == 1) { > > + $cfg .= "serial='pty'"; > > + } else { > > + $cfg .= "serial='file:/dev/stderr'"; > > + } > > `undef' is a perfectly legal boolean false, and in Perl it is not > normal to compare booleanish values with 1 explicitly. So for the > second if you probably meant simply > if ($stubdom) { > Ack. > Also, this code attempts to make a distinction between: > * stubdom set explicitly to true > * stubdom set explicitly to false > * stubdom not set, do whatever the toolstack default is > > But actually the latter case will not work unless the default is > non-stubdom, because of the serial=. So maybe for now it would be > simpler to just have: > if ($stubdom) { > $cfg .= "device_model_stubdomain_override=1\n"; > $cfg .= "serial='pty'"; > } else { > $cfg .= "serial='file:/dev/stderr'"; > $cfg .= " > } > Ack. > > > + if (defined $r{enable_stubdom}) { > > + $enable_stubdom = ($r{enable_stubdom}//'false') =~ m/true/ ? 1 : 0; > > I realise we have already acquired an instance of this idiom, but "? 1 > : 0" is not very sensible. It is not usual (in Perl) to explicitly > canonicalise booleans unless necessary - and here, it isn't necessary > (if you get rid of the == 1 above). > > > This direct use of a global runvar is not right. You should be using > guest_var. If you use guest_var then you get to supply the default > more explicitly. > > So I would do: > $stubdom = guest_var($gho,'stubdom','false') =~ m/true/; > > I'm not a great fan of this open-coded m/true/ everywhere but I won't > insist you drain that swamp. But if you felt like creating a > guest_var_boolean to use here, that would be nice. > That's easy. sub guest_var_boolean ($$) { my ($gho, $runvartail) = @_; return guest_var($gho, $runvartail, 'false') ~= m/true/; } > If you do that then you end up with > $stubdom = guest_var_boolean($gho,'stubdom') > (assuming guest_var_boolean returns undef for unset runvar if no > default supplied). > > That short enough that you can just write it explicitly in > more_prepareguest_hvm (which has access to $gho) and you therefore > don't need to introduce a new Stubdom entry in xopts. > > > } > > > > + > > $xopts{VifType} ||= "ioemu"; > > Whitespace error ? > No. It's a blank line after the closing "}". Not sure why it showed up that way. > > for xsm in $xsms ; do > > - do_hvm_debian_test_one debianhvm rombios $xsm > > + for stubdom in true "" ; do > > + do_hvm_debian_test_one debianhvm rombios $xsm $stubdom > > + done > > My understanding is that we are intending to do away with most of the > non-xsm tests. Ian, do you agree ? > > In which case we should be creating just the two xsm jobs. > No problem. Wei. > Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |