From: Wei Liu <wei.liu2@citrix.com>
To: xen-devel@lists.xen.org
Cc: Wei Liu <wei.liu2@citrix.com>,
ian.jackson@eu.citrix.com, ian.campbell@citrix.com
Subject: [PATCH RFC 3/5] Introduce ts-ovmf-debian-install
Date: Tue, 10 Dec 2013 17:19:34 +0000 [thread overview]
Message-ID: <1386695976-24340-4-git-send-email-wei.liu2@citrix.com> (raw)
In-Reply-To: <1386695976-24340-1-git-send-email-wei.liu2@citrix.com>
This is OVMF guest test case. It resembles ts-redhat-install:
1. prepare a auto install CD
2. install OVMF guest
3. test if the guets is up
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
ts-ovmf-debian-install | 251 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 251 insertions(+)
create mode 100755 ts-ovmf-debian-install
diff --git a/ts-ovmf-debian-install b/ts-ovmf-debian-install
new file mode 100755
index 0000000..723bf4f
--- /dev/null
+++ b/ts-ovmf-debian-install
@@ -0,0 +1,251 @@
+#!/usr/bin/perl -w
+# This is part of "osstest", an automated testing framework for Xen.
+# Copyright (C) 2009-2013 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 $stage=0;
+if (@ARGV && $ARGV[0] =~ m/^--stage(\d+)$/) { $stage=$1; shift @ARGV; }
+
+our ($whhost,$gn) = @ARGV;
+$whhost ||= 'host';
+$gn ||= 'ovmf';
+
+our $ho= selecthost($whhost);
+
+our $ram_mb= 768;
+our $disk_mb= 10000;
+
+our $guesthost= "$gn.guest.osstest";
+our $gho;
+
+our $xl= toolstack()->{Command};
+
+
+sub preseed () {
+
+ return <<"END";
+#### Contents of the preconfiguration file (for wheezy)
+#### Prepared for OVMF guest -- liuw
+
+d-i mirror/suite string wheezy
+
+d-i debian-installer/locale string en_GB
+d-i console-keymaps-at/keymap select gb
+d-i keyboard-configuration/xkb-keymap string en_GB
+
+d-i netcfg/get_hostname string ovmf-test
+d-i netcfg/get_domain string
+d-i netcfg/wireless_wep string
+
+d-i mirror/country string manual
+d-i mirror/http/proxy string
+
+d-i clock-setup/utc boolean true
+d-i time/zone string Europe/London
+d-i clock-setup/ntp boolean true
+
+d-i partman-auto/disk string /dev/xvda
+d-i partman-auto/method string regular
+d-i partman-md/device_remove_md boolean true
+d-i partman-lvm/device_remove_lvm boolean true
+d-i partman-partitioning/confirm_write_new_label boolean true
+d-i partman/choose_partition select finish
+d-i partman/confirm boolean true
+d-i partman-lvm/confirm boolean true
+
+d-i partman/confirm_nooverwrite true
+d-i partman-lvm/confirm_nooverwrite true
+d-i partman-md/confirm_nooverwrite true
+d-i partman-crypto/confirm_nooverwrite true
+
+d-i partman-auto/expert_recipe string \\
+ boot-root :: \\
+ 512 50 512 vfat \\
+ \$primary{ } \$bootable{ } \\
+ method{ efi } format{ } \\
+ use_filesystem{ } filesystem{ vfat } \\
+ mountpoint{ /boot/efi } \\
+ . \\
+ 5000 50 5000 ext4 \\
+ method{ format } format{ } \\
+ use_filesystem{ } filesystem{ ext4 } \\
+ mountpoint{ / } \\
+ . \\
+ 512 30 100% linux-swap \\
+ method{ swap } format{ } \\
+ .
+
+
+d-i passwd/root-password password xenroot
+d-i passwd/root-password-again password xenroot
+d-i passwd/user-fullname string FLOSS Xen Test
+d-i passwd/username string osstest
+d-i passwd/user-password password osstest
+d-i passwd/user-password-again password osstest
+
+console-common console-data/keymap/policy select Don't touch keymap
+console-data console-data/keymap/policy select Don't touch keymap
+console-data console-data/keymap/family select qwerty
+console-data console-data/keymap/template/layout select British
+
+d-i apt-setup/use_mirror boolean false
+d-i apt-setup/another boolean false
+d-i apt-setup/non-free boolean false
+d-i apt-setup/contrib boolean false
+d-i apt-setup/cdrom/set-first boolean false
+
+popularity-contest popularity-contest/participate boolean false
+tasksel tasksel/first multiselect standard
+
+d-i pkgsel/include string openssh-server, ntp, ntpdate,
+
+d-i grub-installer/only_debian boolean true
+
+d-i finish-install/keep-consoles boolean true
+d-i finish-install/reboot_in_progress note
+d-i cdrom-detect/eject boolean false
+
+d-i preseed/early_command string
+
+d-i preseed/late_command string \\
+ in-target mkdir -p /boot/efi/EFI/boot; \\
+ in-target cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi ;\\
+ in-target mkdir -p /root/.ssh; \\
+ cp /authorized_keys /target/root/.ssh
+
+d-i clock-setup/ntp-server string ntp.uk.xensource.com
+
+END
+
+}
+
+sub grub_cfg () {
+
+ return <<"END";
+set default="0"
+set timeout=5
+
+menuentry 'OVMF guest auto Install' {
+ linux /install.amd/vmlinuz console=vga console=ttyS0,115200n8 preseed/file=/preseed.cfg
+ initrd /install.amd/initrd.gz
+}
+END
+}
+
+our $emptyiso= '/root/empty.iso';
+
+sub prep () {
+ target_install_packages_norec($ho, qw(lvm2 rsync xorriso genisoimage));
+
+ my $isotimeout= 600;
+
+ $gho= prepareguest($ho, $gn, $guesthost, 22,
+ $disk_mb + 1,
+ 100);
+
+ my $newiso= '/root/newiso';
+ my $emptydir= '/root/empty-dir';
+ my $initrddir= '/root/initrd-dir';
+
+ my @isogen_base= qw(-R -J -T);
+ my @xorriso_opts= qw(-as mkisofs
+ -r
+ -b isolinux/isolinux.bin
+ -c isolinux/boot.cat
+ -no-emul-boot
+ -boot-load-size 4
+ -boot-info-table
+ -eltorito-alt-boot
+ -e boot/grub/efi.img
+ -no-emul-boot);
+
+ target_putfilecontents_root_stash($ho, 10, preseed(),
+ "/root/ovmf-guest-preseed");
+ target_putfilecontents_root_stash($ho, 10, authorized_keys(),
+ "/root/ovmf-guest-authkeys");
+ target_cmd_root($ho, <<END, 60);
+ mkdir -p $emptydir
+ genisoimage -o $emptyiso @isogen_base $emptydir/.
+END
+
+ more_prepareguest_hvm($ho,$gho, $ram_mb, $disk_mb,
+ OnReboot => 'preserve',
+ Bios => 'ovmf',
+ PostImageHook => sub {
+ target_cmd_root($ho, <<END, $isotimeout);
+ set -x
+ umount /mnt ||:
+ rm -rf $newiso
+ mount -o loop -r $gho->{Rimage} /mnt
+ mkdir $newiso
+ cp -a /mnt/. $newiso/.
+ umount /mnt
+ rm -rf $initrddir
+ mkdir $initrddir
+ cd $initrddir
+ gzip -d \< $newiso/install.amd/initrd.gz | cpio --extract --make-directories --no-absolute-filename
+ cp /root/ovmf-guest-preseed preseed.cfg
+ cp /root/ovmf-guest-authkeys authorized_keys
+ find . | cpio -H newc --create | gzip -9 \> $newiso/install.amd/initrd.gz
+ cd -
+ rm -rf $initrddir
+ cd $newiso
+ md5sum `find -follow -type f` \> md5sum.txt
+ cd -
+END
+ target_putfilecontents_root_stash($ho, 10, grub_cfg(),
+ "$newiso/debian/boot/grub/grub.cfg");
+
+ target_cmd_root($ho, <<END, $isotimeout);
+ xorriso @xorriso_opts -o $gho->{Rimage} $newiso/.
+END
+ });
+}
+
+sub start () {
+ target_cmd_root($ho, "$xl create $gho->{CfgPath}", 100);
+}
+
+sub rewrite_config_nocd () {
+ guest_editconfig($ho, $gho, sub {
+ if (m/^\s*disk\s*\=/ .. /\]/) {
+ s/\Q$gho->{Rimage}\E/$emptyiso/;
+ }
+ s/^on_reboot.*/on_reboot='restart'/;
+ });
+}
+
+if (!$stage) {
+ prep();
+ start();
+} else {
+ $gho= selectguest($gn,$gho);
+}
+if ($stage<2) {
+ guest_await_reboot($ho,$gho,2000);
+ guest_destroy($ho,$gho);
+}
+
+rewrite_config_nocd();
+start();
+guest_await_dhcp_tcp($gho,300);
+guest_check_up($gho);
--
1.7.10.4
next prev parent reply other threads:[~2013-12-10 17:19 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-10 17:19 [PATCH RFC 0/5] OSSTest: OVMF guest test case Wei Liu
2013-12-10 17:19 ` [PATCH RFC 1/5] TestSupport.pm: add bios option to guest config file Wei Liu
2013-12-10 17:23 ` Ian Jackson
2013-12-10 17:19 ` [PATCH RFC 2/5] Build OVMF for Xen-unstable Wei Liu
2013-12-10 17:24 ` Ian Jackson
2013-12-10 17:24 ` Ian Jackson
2013-12-10 17:26 ` Ian Jackson
2013-12-10 17:38 ` Wei Liu
2013-12-10 17:47 ` Ian Campbell
2013-12-10 19:31 ` Ian Jackson
2013-12-11 10:29 ` Ian Campbell
2013-12-10 19:29 ` Ian Jackson
2013-12-10 17:19 ` Wei Liu [this message]
2013-12-10 17:30 ` [PATCH RFC 3/5] Introduce ts-ovmf-debian-install Ian Jackson
2013-12-10 17:31 ` Ian Jackson
2013-12-10 17:36 ` Wei Liu
2013-12-10 17:41 ` Wei Liu
2013-12-10 17:19 ` [PATCH RFC 4/5] make-flight: OVMF test filght Wei Liu
2013-12-10 17:34 ` Wei Liu
2013-12-10 17:19 ` [PATCH RFC 5/5] sg-run-job: OVMF job 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=1386695976-24340-4-git-send-email-wei.liu2@citrix.com \
--to=wei.liu2@citrix.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).