|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [OSSTEST PATCH [RFC] 3/3] ts-guest-start, -stop, -destroy: support multiple guests
so that now, for example, this is possible:
$ OSSTEST_JOB=test-amd64-amd64-xl
$ export OSSTEST_JOB
$ ./ts-debian-install host=tg03 debian1 debian2 debian3
$ ./ts-debian-fixup host=tg03 debian1 debian2 debian3
$ ./ts-guest-start host=tg03 debian1 debian2 debian3
$ ./ts-guest-stop host=tg03 debian1 debian2
$ ./ts-guest-destroy host=tg03 debian3
This again assumes that either the host is explicitly specified
via a 'host=somehost' first argument, or the arguments are all
guest names.
Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
---
ts-guest-destroy | 28 +++++++++++++++++++++-------
ts-guest-start | 35 +++++++++++++++++++++++++----------
ts-guest-stop | 30 ++++++++++++++++++++++--------
3 files changed, 68 insertions(+), 25 deletions(-)
diff --git a/ts-guest-destroy b/ts-guest-destroy
index 738650a..794f38d 100755
--- a/ts-guest-destroy
+++ b/ts-guest-destroy
@@ -22,13 +22,27 @@ use Osstest::TestSupport;
tsreadconfig();
-our ($ho,$gho) = ts_get_host_guest(@ARGV);
+our $whhost = 'host';
+if (@ARGV && ($ARGV[0] =~ m/^host=.*$/ || $ARGV[0] eq 'host')) {
+ $whhost = $ARGV[0];
+ shift @ARGV;
+}
+our (@guests) = @ARGV;
+
+our ($ho,%gho);
-sub destroy () {
- guest_destroy($ho, $gho);
- guest_checkrunning($ho, $gho) and die $gho->{Name};
+sub destroy ($) {
+ my ($gn) = @_;
+ guest_destroy($ho, $gho{$gn});
+ guest_checkrunning($ho, $gho{$gn}) and die $gho{$gn}->{Name};
}
-guest_await_dhcp_tcp($gho, 5);
-destroy();
-target_ping_check_down($gho);
+# Let's first destroy all domains and then check they're gone
+foreach my $g (@guests) {
+ ($ho,$gho{$g}) = ts_get_host_guest($whhost, $g);
+ guest_await_dhcp_tcp($gho{$g}, 5);
+ destroy($g);
+}
+foreach my $g (@guests) {
+ target_ping_check_down($gho{$g});
+}
diff --git a/ts-guest-start b/ts-guest-start
index 057afe6..410f5fd 100755
--- a/ts-guest-start
+++ b/ts-guest-start
@@ -22,20 +22,35 @@ use Osstest::TestSupport;
tsreadconfig();
-our ($ho,$gho) = ts_get_host_guest(@ARGV);
+our $whhost = 'host';
+if (@ARGV && ($ARGV[0] =~ m/^host=.*$/ || $ARGV[0] eq 'host')) {
+ $whhost = $ARGV[0];
+ shift @ARGV;
+}
+our (@guests) = @ARGV;
+
+our ($ho,%gho);
-sub start () {
- guest_umount_lv($ho, $gho);
+sub start ($) {
+ my ($gn) = @_;
+ guest_umount_lv($ho, $gho{$gn});
my $cmd= toolstack()->{Command}." create ".
- $r{ $gho->{Guest}.'_'. toolstack()->{CfgPathVar} };
+ $r{ $gho{$gn}->{Guest}.'_'. toolstack()->{CfgPathVar} };
target_cmd_root($ho, $cmd, 30);
}
-sub checkstart () {
- guest_checkrunning($ho, $gho) or die "$gho->{Name} not running";
+sub checkstart ($) {
+ my ($gn) = @_;
+ guest_checkrunning($ho, $gho{$gn}) or die "$gho{$gn}->{Name} not running";
}
-start();
-checkstart();
-guest_await($gho, target_var($gho,'boot_timeout'));
-guest_check_up($gho);
+# Let's first ask all domains to start and then check they're all actually up
+foreach my $g (@guests) {
+ ($ho,$gho{$g}) = ts_get_host_guest($whhost, $g);
+ start($g);
+ checkstart($g);
+}
+foreach my $g (@guests) {
+ guest_await($gho{$g}, target_var($gho{$g},'boot_timeout'));
+ guest_check_up($gho{$g});
+}
diff --git a/ts-guest-stop b/ts-guest-stop
index cc7db4c..a4fddf4 100755
--- a/ts-guest-stop
+++ b/ts-guest-stop
@@ -22,17 +22,31 @@ use Osstest::TestSupport;
tsreadconfig();
-our ($ho,$gho) = ts_get_host_guest(@ARGV);
+our $whhost = 'host';
+if (@ARGV && ($ARGV[0] =~ m/^host=.*$/ || $ARGV[0] eq 'host')) {
+ $whhost = $ARGV[0];
+ shift @ARGV;
+}
+our (@guests) = @ARGV;
+
+our ($ho,%gho);
-sub stop () {
- guest_checkrunning($ho, $gho) or die "$gho->{Name} not running";
+sub stop ($) {
+ my ($gn) = @_;
+ guest_checkrunning($ho, $gho{$gn}) or die "$gho{$gn}->{Name} not running";
target_cmd_root($ho,
toolstack()->{Command}
." shutdown -w "
- .$gho->{Name}, 200);
- guest_checkrunning($ho, $gho) and die $gho->{Name};
+ .$gho{$gn}->{Name}, 200);
+ guest_checkrunning($ho, $gho{$gn}) and die $gho{$gn}->{Name};
}
-guest_await_dhcp_tcp($gho, 5);
-stop();
-target_ping_check_down($gho);
+# Let's first ask all domains to stop and then check they're down
+foreach my $g (@guests) {
+ ($ho,$gho{$g}) = ts_get_host_guest($whhost, $g);
+ guest_await_dhcp_tcp($gho{$g}, 5);
+ stop($g);
+}
+foreach my $g (@guests) {
+ target_ping_check_down($gho{$g});
+}
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |