From: Robert Hu <robert.hu@vmm.sh.intel.com>
To: Wei Liu <wei.liu2@citrix.com>
Cc: Ian.Campbell@citrix.com, Ian.Jackson@eu.citrix.com,
xen-devel@lists.xen.org, robert.hu@intel.com,
"longtao.pang" <longtaox.pang@intel.com>,
di.zheng@intel.com
Subject: Re: [OSSTEST PATCH 1/4] Add nested testcase of preparing and installing L1 guest VM
Date: Fri, 26 Dec 2014 13:13:38 +0800 [thread overview]
Message-ID: <1419570818.28100.2.camel@localhost> (raw)
In-Reply-To: <20141211110632.GC21659@zion.uk.xensource.com>
On Thu, 2014-12-11 at 11:06 +0000, Wei Liu wrote:
> On Wed, Dec 10, 2014 at 04:07:37PM +0800, longtao.pang wrote:
> > From: "longtao.pang" <longtaox.pang@intel.com>
> >
> > This patch is used for preparing and installing L1 guest VM inside L0 system
> > on testhost machine.
> >
> > ---
> > Osstest/Debian.pm | 27 ++++++++++++++++++---------
> > Osstest/TestSupport.pm | 31 ++++++++++++++++++++++++++-----
> > sg-run-job | 5 +++++
> > ts-debian-hvm-install | 34 ++++++++++++++++++++++++----------
> > 4 files changed, 73 insertions(+), 24 deletions(-)
> >
> > diff --git a/Osstest/Debian.pm b/Osstest/Debian.pm
> > index c8db601..a671d20 100644
> > --- a/Osstest/Debian.pm
> > +++ b/Osstest/Debian.pm
> > @@ -1,5 +1,6 @@
> > # This is part of "osstest", an automated testing framework for Xen.
> > # Copyright (C) 2009-2013 Citrix Inc.
> > +# Copyright (C) 2014 Intel 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
> > @@ -34,6 +35,7 @@ BEGIN {
> > @EXPORT = qw(debian_boot_setup
> > %preseed_cmds
> > preseed_base
> > + setupboot_grub2
>
> Why do you want to export this helper? I think debian_setup_boot will
> just choose the right one amongst uboot, grub1 and grub2.
>
> > preseed_create
> > preseed_hook_command preseed_hook_installscript
> > di_installcmdline_core
> > @@ -286,15 +288,18 @@ sub setupboot_grub2 ($$$) {
> >
> > my $count= 0;
> > my $entry;
> > + my $submenu;
> > while (<$f>) {
> > next if m/^\s*\#/ || !m/\S/;
> > if (m/^\s*\}\s*$/) {
> > - die unless $entry;
> > + die unless $entry || $submenu;
> > + if(!defined $entry && defined $submenu){
> > + logm("Met end of a submenu starting from $submenu->{StartLine}.Our want kern is $want_kernver");
> > + $submenu=undef;
> > + next;
> > + }
> > my (@missing) =
> > - grep { !defined $entry->{$_} }
> > - (defined $xenhopt
> > - ? qw(Title Hv KernDom0 KernVer)
> > - : qw(Title Hv KernOnly KernVer));
> > + grep { !defined $entry->{$_} } (defined $xenhopt ? qw(Title Hv KernDom0 KernVer) : qw(Title Hv KernOnly KernVer));
>
> Please don't make non-functional change like this.
>
> > if (@missing) {
> > logm("(skipping entry at $entry->{StartLine};".
> > " no @missing)");
> > @@ -317,21 +322,25 @@ sub setupboot_grub2 ($$$) {
> > $entry= { Title => $1, StartLine => $., Number => $count };
> > $count++;
> > }
> > - if (m/^\s*multiboot\s*\/(xen\-[0-9][-+.0-9a-z]*\S+)/) {
> > + if(m/^submenu\s+[\'\"](.*)[\'\"].*\{\s*$/){
> > + $submenu={ StartLine =>$.};
> > + }
> > + if (m/^\s*multiboot\s*(?:\/boot)*\/(xen\S+)/) {
> > +# if (m/^\s*multiboot\s*(?:\/boot)*\/(xen\-[0-9][-+.0-9a-z]*\S+)/) {
>
> And if this line is redundant, remove it. What's the reason of changing
> this regex? Are you using non-debian based distro?
>
> > die unless $entry;
> > $entry->{Hv}= $1;
> > }
> > - if (m/^\s*multiboot\s*\/(vmlinu[xz]-(\S+))/) {
> > + if (m/^\s*multiboot\s*(?:\/boot)*\/(vmlinu[xz]-(\S+))/) {
>
> And this?
>
> > die unless $entry;
> > $entry->{KernOnly}= $1;
> > $entry->{KernVer}= $2;
> > }
> > - if (m/^\s*module\s*\/(vmlinu[xz]-(\S+))/) {
> > + if (m/^\s*module\s*(?:\/boot)*\/(vmlinu[xz]-(\S+))/) {
>
> ?
>
> > die unless $entry;
> > $entry->{KernDom0}= $1;
> > $entry->{KernVer}= $2;
> > }
> > - if (m/^\s*module\s*\/(initrd\S+)/) {
> > + if (m/^\s*module\s*(?:\/boot)*\/(initrd\S+)/) {
> > $entry->{Initrd}= $1;
> > }
> > }
>
> As I said before, this hunk should be in its own patch.
>
> Just FYI, there are multiple people (Dario, you and I) touching this
> piece of code. You might want to keep an eye on main OSSTest git tree
> and rebase before reposting (and so do Dario and I).
>
> > diff --git a/Osstest/TestSupport.pm b/Osstest/TestSupport.pm
> > index a3b6936..1e47039 100644
> > --- a/Osstest/TestSupport.pm
> > +++ b/Osstest/TestSupport.pm
> > @@ -55,8 +55,9 @@ BEGIN {
> > target_putfilecontents_stash
> > target_putfilecontents_root_stash
> > target_put_guest_image target_editfile
> > - target_editfile_root target_file_exists
> > - target_run_apt
> > + target_editfile_root target_file_exists
> > + target_file_exists_root
> > + target_run_apt
>
> Please don't just change white spaces. This makes patches hard to
> review.
>
> > target_install_packages target_install_packages_norec
> > target_jobdir target_extract_jobdistpath_subdir
> > target_extract_jobdistpath target_guest_lv_name
> > @@ -67,7 +68,7 @@ BEGIN {
> > selecthost get_hostflags get_host_property
> > get_host_native_linux_console
> > power_state power_cycle power_cycle_time
> > - serial_fetch_logs
> > + serial_fetch_logs select_ether
> > propname_massage
> >
> > get_stashed open_unique_stashfile compress_stashed
> > @@ -109,6 +110,7 @@ BEGIN {
> > iso_gen_flags_basic
> > iso_copy_content_from_image
> > guest_editconfig_nocd
> > + guest_editconfig_cd
>
> Indentation. I think we mostly use space instead of hard tab. Ian?
So what's the convention in Xen code writing? use space instead of tab?
And how many space to substitute 1 tab? I used to use 4.
>
> > );
> > %EXPORT_TAGS = ( );
> >
> > @@ -481,6 +483,14 @@ sub target_file_exists ($$) {
> > die "$rfile $out ?";
> > }
> >
> > +sub target_file_exists_root ($$) {
> > + my ($ho,$rfile) = @_;
> > + my $out= target_cmd_output_root($ho, "if test -e $rfile; then echo y; fi");
> > + return 1 if $out =~ m/^y$/;
> > + return 0 if $out !~ m/\S/;
> > + die "$rfile $out ?";
> > +}
> > +
> > sub teditfileex {
> > my $user= shift @_;
> > my $code= pop @_;
> > @@ -717,6 +727,7 @@ sub power_cycle_time ($) {
> > sub power_cycle ($) {
> > my ($ho) = @_;
> > $mjobdb->host_check_allocated($ho);
> > + $mjobdb->xen_check_installed($ho);
>
> And this is? I don't see implementation in this patch set.
>
> Also this routine is called by ts-host-install, which doesn't necessary
> require Xen to be installed.
>
> > die "refusing to set power state for host $ho->{Name}".
> > " possibly shared with other jobs\n"
> > if $ho->{SharedMaybeOthers};
> > @@ -937,7 +948,7 @@ sub compress_stashed($) {
> > sub host_reboot ($) {
> > my ($ho) = @_;
> > target_reboot($ho);
> > - poll_loop(40,2, 'reboot-confirm-booted', sub {
> > + poll_loop(200,2, 'reboot-confirm-booted', sub {
>
> This should go into its own patch as well. I think it's probably nested
> virt is slower than real hardware so you need some more time?
>
> > my $output;
> > if (!eval {
> > $output= target_cmd_output($ho, <<END, 40);
> > @@ -1465,7 +1476,7 @@ sub prepareguest_part_xencfg ($$$$$) {
> > my $xencfg= <<END;
> > name = '$gho->{Name}'
> > memory = ${ram_mb}
> > -vif = [ 'type=ioemu,mac=$gho->{Ether}' ]
> > +vif = [ 'type=ioemu,model=e1000,mac=$gho->{Ether}' ]
>
> What is this needed? If it's necessary, please use a single commit and
> state the reason in commit log.
>
> > #
> > on_poweroff = 'destroy'
> > on_reboot = '$onreboot'
> > @@ -2063,4 +2074,14 @@ sub guest_editconfig_nocd ($$) {
> > });
> > }
> >
> > +sub guest_editconfig_cd ($) {
> > + my ($gho) = @_;
> > + guest_editconfig($gho->{Host}, $gho, sub {
> > + if (m/^\s*boot\s*= '\s*d\s*c\s*'/) {
> > + s/dc/cd/;
>
> This pattern is different than the one used to match. This should also
> go into its own commit -- "Introduce guest_editconfig_cd".
>
> > + }
> > + s/^on_reboot.*/on_reboot='restart'/;
> > + });
> > +}
> > +
> > 1;
> > diff --git a/sg-run-job b/sg-run-job
> > index 2cf810a..8dcf7af 100755
> > --- a/sg-run-job
> > +++ b/sg-run-job
> > @@ -288,6 +288,11 @@ proc run-job/test-pair {} {
> > # run-ts . remus-failover ts-remus-check src_host dst_host + debian
> > }
> >
> > +proc need-hosts/test-nested {} {return host}
> > +proc run-job/test-nested {} {
> > + run-ts . = ts-debian-hvm-install + host + nested + nested_L1
> > +}
> > +
> > proc test-guest-migr {g} {
> > if {[catch { run-ts . = ts-migrate-support-check + host $g }]} return
> >
>
> This hunk should go into its own commit.
>
> > diff --git a/ts-debian-hvm-install b/ts-debian-hvm-install
> > index 37eade2..6dcec3c 100755
> > --- a/ts-debian-hvm-install
> > +++ b/ts-debian-hvm-install
>
> The modification of debian-hvm-install should also go into a single
> commit.
>
> > @@ -28,22 +28,24 @@ if (@ARGV && $ARGV[0] =~ m/^--stage(\d+)$/) { $stage=$1; shift @ARGV; }
> >
> > defined($r{bios}) or die "Need to define which bios to use";
> >
> > -our ($whhost,$gn) = @ARGV;
> > +our ($whhost,$gn,$nested_L1,$guesthost) = @ARGV;
> > $whhost ||= 'host';
> > -$gn ||= 'debianhvm';
> > -
> > +$nested_L1 ||= '';
> > +if ($nested_L1 eq 'nested_L1') {
> > + $gn ||= 'nested';
> > + $guesthost ||= "$gn.l1.osstest";
> > +} else {
> > + $gn ||= 'debianhvm';
> > + $guesthost= "$gn.guest.osstest";
> > +}
> > our $ho= selecthost($whhost);
> > -
> > +our $disk_mb= 50000;
> > # guest memory size will be set based on host free memory, see below
> > our $ram_mb;
> > -our $disk_mb= 10000;
> > -
> > -our $guesthost= "$gn.guest.osstest";
> > our $gho;
> >
> > our $toolstack= toolstack()->{Command};
> >
> > -
>
> Stray blank line change. Please avoid this kind of changes.
>
> > sub preseed () {
> >
> > my $preseed_file = preseed_base('wheezy','',());
> > @@ -63,7 +65,7 @@ d-i partman-auto/expert_recipe string \\
> > use_filesystem{ } filesystem{ vfat } \\
> > mountpoint{ /boot/efi } \\
> > . \\
> > - 5000 50 5000 ext4 \\
> > + 25000 50 25000 ext4 \\
> > method{ format } format{ } \\
> > use_filesystem{ } filesystem{ ext4 } \\
> > mountpoint{ / } \\
> > @@ -155,6 +157,8 @@ sub prep () {
> > more_prepareguest_hvm($ho,$gho, $ram_mb, $disk_mb,
> > OnReboot => 'preserve',
> > Bios => $r{bios},
> > + DefVcpus => 4,
>
> And where is this handled?
>
> Wei.
>
> > + ExtraConfig => '#nestedhvm=1',
> > PostImageHook => sub {
> > my $cmds = iso_copy_content_from_image($gho, $newiso);
> > $cmds .= prepare_initrd($initrddir,$newiso,$preseed_file_path);
> > @@ -176,6 +180,8 @@ my $ram_minslop = 100;
> > my $ram_lots = 5000;
> > if ($host_freemem_mb > $ram_lots * 2 + $ram_minslop) {
> > $ram_mb = $ram_lots;
> > +} elsif ($nested_L1 eq 'nested_L1') {
> > + $ram_mb = 2048;
> > } else {
> > $ram_mb = 768;
> > }
> > @@ -192,7 +198,15 @@ if ($stage<2) {
> > guest_destroy($ho,$gho);
> > }
> >
> > -guest_editconfig_nocd($gho,$emptyiso);
> > +if ($nested_L1 eq 'nested_L1') {
> > + guest_editconfig_cd($gho);
> > +} else {
> > + guest_editconfig_nocd($gho,$emptyiso);
> > +}
> > guest_create($gho,$toolstack);
> > guest_await_dhcp_tcp($gho,300);
> > guest_check_up($gho);
> > +if ($nested_L1 eq 'nested_L1') {
> > + target_cmd_root($gho, "mkdir -p /home/osstest/.ssh && cp /root/.ssh/authorized_keys /home/osstest/.ssh/");
> > +}
> > +
> > --
> > 1.7.10.4
next prev parent reply other threads:[~2014-12-26 5:13 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-10 8:07 [OSSTEST PATCH 0/4] Introduction of the patches longtao.pang
2014-12-10 8:07 ` [OSSTEST PATCH 1/4] Add nested testcase of preparing and installing L1 guest VM longtao.pang
2014-12-11 11:06 ` Wei Liu
2014-12-26 5:13 ` Robert Hu [this message]
2015-01-02 9:51 ` Dario Faggioli
2014-12-10 8:07 ` [OSSTEST PATCH 2/4] Build XEN and HVM Dom0 kernel for " longtao.pang
2014-12-11 11:25 ` Wei Liu
2015-01-27 8:33 ` Hu, Robert
2015-01-27 11:01 ` Ian Campbell
2015-01-29 6:05 ` Hu, Robert
2014-12-10 8:07 ` [OSSTEST PATCH 3/4] Add nested testcase of installing L2 " longtao.pang
2014-12-11 11:43 ` Wei Liu
2015-01-06 3:28 ` Pang, LongtaoX
2015-01-06 16:52 ` Wei Liu
2015-01-07 3:52 ` Pang, LongtaoX
2015-01-08 7:34 ` Pang, LongtaoX
2015-01-08 10:48 ` Wei Liu
2015-01-08 11:12 ` Ian Campbell
2015-01-08 11:16 ` Ian Jackson
2015-01-08 11:22 ` Robert Hu
2015-01-08 11:26 ` Ian Campbell
2015-01-08 17:20 ` Dario Faggioli
2015-01-08 17:25 ` Ian Campbell
2015-01-09 2:46 ` Pang, LongtaoX
2014-12-10 8:07 ` [OSSTEST PATCH 4/4] Insert nested test job name and runvars into longtao.pang
2014-12-11 11:46 ` Wei Liu
2015-01-06 3:31 ` Pang, LongtaoX
2015-01-29 9:57 ` Hu, Robert
2015-01-29 10:42 ` Wei Liu
2015-01-29 10:52 ` Ian Campbell
2015-01-29 10:55 ` Ian Campbell
2014-12-11 10:38 ` [OSSTEST PATCH 0/4] Introduction of the patches Wei Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1419570818.28100.2.camel@localhost \
--to=robert.hu@vmm.sh.intel.com \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=di.zheng@intel.com \
--cc=longtaox.pang@intel.com \
--cc=robert.hu@intel.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.