# -*- perl -*- use strict; use warnings; use Test::More tests => 58; BEGIN { use_ok('Sys::Virt'); } my $conn = Sys::Virt->new(uri => "test:///default"); isa_ok($conn, "Sys::Virt"); my $nid = $conn->num_of_domains(); is($nid, 1, "1 active domain"); my @domids = $conn->list_domain_ids($nid); is_deeply(\@domids, [1], "domain ids"); my @doms = $conn->list_all_domains(); is(int(@doms), 1, "1 active domain"); is($doms[0]->get_id, "1", "domain id matches"); my $dom = $conn->get_domain_by_id($domids[0]); isa_ok($dom, "Sys::Virt::Domain"); is($dom->get_name, "test", "name"); is($dom->get_id, "1", "id"); ok($dom->is_persistent(), "domain is persistent"); ok($dom->is_active(), "domain is active"); ok(!$dom->is_updated(), "domain is not updated"); # Lookup again via UUID to verify we get the same my $uuid = $dom->get_uuid(); my $dom2 = $conn->get_domain_by_uuid($uuid); isa_ok($dom2, "Sys::Virt::Domain"); is($dom2->get_name, "test", "name"); is($dom2->get_id, "1", "id"); my $uuidstr = $dom->get_uuid_string(); my $dom3 = $conn->get_domain_by_uuid($uuidstr); isa_ok($dom3, "Sys::Virt::Domain"); is($dom3->get_name, "test", "name"); is($dom3->get_id, "1", "id"); @doms = $conn->list_domains(); is($#doms, 0, "one domain"); isa_ok($doms[0], "Sys::Virt::Domain"); my $nname = $conn->num_of_defined_domains(); is($nname, 0, "0 defined domain"); my $xml = " wibble 12341234-5678-5678-5678-123412341234 10241024 1024120 4 hvm "; $conn->define_domain($xml); $nname = $conn->num_of_defined_domains(); is($nname, 1, "1 defined domain"); my @names = $conn->list_defined_domain_names($nname); is_deeply(\@names, ["wibble"], "names"); @doms = $conn->list_defined_domains(); is($#doms, 0, "1 defined domain"); isa_ok($doms[0], "Sys::Virt::Domain"); $dom = $conn->get_domain_by_name("wibble"); isa_ok($dom, "Sys::Virt::Domain"); ok($dom->is_persistent(), "domain is persistent"); ok(!$dom->is_active(), "domain is not active"); $dom->create(); ok($dom->is_active(), "domain is active"); my $nids = $conn->num_of_domains(); is($nids, 2, "2 active domains"); my @ids = sort { $a <=> $b } $conn->list_domain_ids($nids); is_deeply(\@ids, [1, 2], "domain ids"); my $info = $dom->get_info(); is($info->{memory}, "1024120", "memory"); is($info->{maxMem}, "10241024", "max mem"); is($info->{nrVirtCpu}, "4", "vcpu"); is($info->{state}, &Sys::Virt::Domain::STATE_RUNNING, "state"); my $params = $dom->get_scheduler_parameters(); ok(exists $params->{"weight"}, "weight param"); is($params->{"weight"}, 50, "weight param is 50"); $dom->set_scheduler_parameters({weight => 20 }); $params = $dom->get_scheduler_parameters(); ok(exists $params->{"weight"}, "weight param"); # Temp disabled because test driver is not persisting the set request SKIP: { skip "avoid bug in test driver sched params", 1; is($params->{"weight"}, 20, "weight param is now 20"); } $dom->destroy(); #my $free = $conn->get_node_free_memory(); #print STDERR $free; my @mem = $conn->get_node_cells_free_memory(0, 8); is($#mem, 1, "2 cells"); is($mem[0], 2097152, "mem in cell 1"); is($mem[1], 4194304, "mem in cell 2"); $nids = $conn->num_of_domains(); is($nids, 1, "1 active domains"); @ids = $conn->list_domain_ids($nids); is_deeply(\@ids, [1], "domain ids"); $dom = $conn->get_domain_by_name("wibble"); $dom->undefine(); $nname = $conn->num_of_defined_domains(); is($nname, 0, "0 defined domain"); @names = $conn->list_defined_domain_names($nname); is_deeply(\@names, [], "names"); $conn->create_domain($xml); $nname = $conn->num_of_domains(); is($nname, 2, "1 domain"); @ids = sort { $a <=> $b} $conn->list_domain_ids($nname); is_deeply(\@ids, [1, 3], "domain ids"); @doms = $conn->list_domains(); is($#doms, 1, "2 domains"); isa_ok($doms[0], "Sys::Virt::Domain"); isa_ok($doms[1], "Sys::Virt::Domain"); $dom = $conn->get_domain_by_name("wibble"); isa_ok($dom, "Sys::Virt::Domain"); ok(!$dom->is_persistent(), "domain is not persistent"); ok($dom->is_active(), "domain is active"); $dom->destroy(); $nname = $conn->num_of_domains(); is($nname, 1, "1 domains"); @ids = $conn->list_domain_ids($nname); is_deeply(\@ids, [1], "ids"); $nname = $conn->num_of_defined_domains(); is($nname, 0, "0 defined domain"); @names = $conn->list_defined_domain_names($nname); is_deeply(\@names, [], "names");