[libvirt] [PATCH TCK] Add a minimal test case for CPU hotplug

Adds a minimal test case which verifies that it is possible to set the CPU count to max, and then back to the min. This really needs libguestfs integration to validate that the guest sees the change --- scripts/domain/130-cpu-hotplug.t | 78 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 78 insertions(+), 0 deletions(-) create mode 100644 scripts/domain/130-cpu-hotplug.t diff --git a/scripts/domain/130-cpu-hotplug.t b/scripts/domain/130-cpu-hotplug.t new file mode 100644 index 0000000..2976f2d --- /dev/null +++ b/scripts/domain/130-cpu-hotplug.t @@ -0,0 +1,78 @@ +# -*- perl -*- +# +# Copyright (C) 2009-2010 Red Hat, Inc. +# Copyright (C) 2009-2010 Daniel P. Berrange +# +# This program is free software; You can redistribute it and/or modify +# it under the GNU General Public License as published by the Free +# Software Foundation; either version 2, or (at your option) any +# later version +# +# The file "LICENSE" distributed along with this file provides full +# details of the terms and conditions +# + +=pod + +=head1 NAME + +domain/130-cpu-hotplug.t - whether CPU count can be changed + +=head1 DESCRIPTION + +The test case validates the it is possible to change the CPU +on a running guest. + +XXX: Need libguestfs integration to check that it has truely +worked. + +=cut + +use strict; +use warnings; + +use Test::More tests => 7; +use Test::Exception; + +use Sys::Virt::TCK; + +my $tck = Sys::Virt::TCK->new(); +my $conn = eval { $tck->setup(); }; +BAIL_OUT "failed to setup test harness: $@" if $@; +END { $tck->cleanup if $tck; } + + +my $xml = $tck->generic_domain("tck")->as_xml; + + +diag "Creating a new transient domain"; +my $dom; +ok_domain(sub { $dom = $conn->create_domain($xml) }, "created transient domain object"); + +my $max; +lives_ok(sub { $max = $dom->get_max_vcpus() }, "queried max vcpus"); + +SKIP: { + skip "SMP guests not supported", 4 unless $max > 1; + + diag "Increasing CPU count to max"; + lives_ok(sub { $dom->set_vcpus($max); }, "set vcpus to $max"); + + my $info = $dom->get_info(); + + is($info->{nrVirtCpu}, $max, "cpu count $info->{nrVirtCpu} is $max"); + + diag "Decreasing CPU count to min"; + lives_ok(sub { $dom->set_vcpus(1); }, "set vcpus to 1"); + + $info = $dom->get_info(); + is($info->{nrVirtCpu}, 1, "cpu count $info->{nrVirtCpu} is 1"); +} + +diag "Destroying the transient domain"; +$dom->destroy; + +diag "Checking that transient domain has gone away"; +ok_error(sub { $conn->get_domain_by_name("tck") }, "NO_DOMAIN error raised from missing domain", 42); + +# end -- 1.6.5.2

On 04/22/2010 10:24 AM, Daniel P. Berrange wrote:
Adds a minimal test case which verifies that it is possible to set the CPU count to max, and then back to the min. This really needs libguestfs integration to validate that the guest sees the change --- scripts/domain/130-cpu-hotplug.t | 78 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 78 insertions(+), 0 deletions(-) create mode 100644 scripts/domain/130-cpu-hotplug.t
diff --git a/scripts/domain/130-cpu-hotplug.t b/scripts/domain/130-cpu-hotplug.t new file mode 100644 index 0000000..2976f2d --- /dev/null +++ b/scripts/domain/130-cpu-hotplug.t @@ -0,0 +1,78 @@ +# -*- perl -*- +# +# Copyright (C) 2009-2010 Red Hat, Inc. +# Copyright (C) 2009-2010 Daniel P. Berrange
Since it's new, should the copyright be just 2010?
+diag "Creating a new transient domain"; +my $dom; +ok_domain(sub { $dom = $conn->create_domain($xml) }, "created transient domain object"); + +my $max; +lives_ok(sub { $max = $dom->get_max_vcpus() }, "queried max vcpus"); + +SKIP: { + skip "SMP guests not supported", 4 unless $max > 1; + + diag "Increasing CPU count to max"; + lives_ok(sub { $dom->set_vcpus($max); }, "set vcpus to $max"); + + my $info = $dom->get_info(); + + is($info->{nrVirtCpu}, $max, "cpu count $info->{nrVirtCpu} is $max"); + + diag "Decreasing CPU count to min"; + lives_ok(sub { $dom->set_vcpus(1); }, "set vcpus to 1"); + + $info = $dom->get_info(); + is($info->{nrVirtCpu}, 1, "cpu count $info->{nrVirtCpu} is 1");
Do you want to also test for an error message on setting it out of range, like to 0? Other than that, ACK. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

On Thu, Apr 22, 2010 at 10:41:34AM -0600, Eric Blake wrote:
On 04/22/2010 10:24 AM, Daniel P. Berrange wrote:
Adds a minimal test case which verifies that it is possible to set the CPU count to max, and then back to the min. This really needs libguestfs integration to validate that the guest sees the change --- scripts/domain/130-cpu-hotplug.t | 78 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 78 insertions(+), 0 deletions(-) create mode 100644 scripts/domain/130-cpu-hotplug.t
diff --git a/scripts/domain/130-cpu-hotplug.t b/scripts/domain/130-cpu-hotplug.t new file mode 100644 index 0000000..2976f2d --- /dev/null +++ b/scripts/domain/130-cpu-hotplug.t @@ -0,0 +1,78 @@ +# -*- perl -*- +# +# Copyright (C) 2009-2010 Red Hat, Inc. +# Copyright (C) 2009-2010 Daniel P. Berrange
Since it's new, should the copyright be just 2010?
Yep.
+diag "Creating a new transient domain"; +my $dom; +ok_domain(sub { $dom = $conn->create_domain($xml) }, "created transient domain object"); + +my $max; +lives_ok(sub { $max = $dom->get_max_vcpus() }, "queried max vcpus"); + +SKIP: { + skip "SMP guests not supported", 4 unless $max > 1; + + diag "Increasing CPU count to max"; + lives_ok(sub { $dom->set_vcpus($max); }, "set vcpus to $max"); + + my $info = $dom->get_info(); + + is($info->{nrVirtCpu}, $max, "cpu count $info->{nrVirtCpu} is $max"); + + diag "Decreasing CPU count to min"; + lives_ok(sub { $dom->set_vcpus(1); }, "set vcpus to 1"); + + $info = $dom->get_info(); + is($info->{nrVirtCpu}, 1, "cpu count $info->{nrVirtCpu} is 1");
Do you want to also test for an error message on setting it out of range, like to 0?
That's a good idea. I added 2 further tests for 0 and $max + 1 to assert that errors are raised. Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
participants (2)
-
Daniel P. Berrange
-
Eric Blake