/*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* .
*
* Sahid Orentino Ferdjaoui
*/
mod common;
use virt::connect::Connect;
#[test]
fn test_version() {
let version = Connect::get_version().unwrap_or(0);
assert!(version != 0, "Version was 0")
}
#[test]
fn test_connection() {
match Connect::open(Some("test:///default")) {
Err(e) => panic!("Build connection failed: {}", e),
Ok(conn) => common::close(conn),
}
}
#[test]
fn test_read_only_connection() {
match Connect::open_read_only(Some("test:///default")) {
Err(e) => panic!("Build connection failed: {}", e),
Ok(conn) => common::close(conn),
}
}
#[test]
#[should_panic]
fn test_connection_invalid() {
match Connect::open_read_only(Some("invalid")) {
Err(e) => panic!("Build connection failed: {}", e),
Ok(conn) => common::close(conn),
}
}
#[test]
fn test_get_type() {
let c = common::conn();
assert!(!c.get_type().unwrap_or_default().is_empty());
common::close(c)
}
#[test]
fn test_get_uri() {
let c = common::conn();
assert_eq!("test:///default", c.get_uri().unwrap_or_default());
common::close(c);
}
#[test]
fn test_is_alive() {
let c = common::conn();
assert!(c.is_alive().unwrap_or(false));
common::close(c);
}
#[test]
fn test_is_encrypted() {
let c = common::conn();
assert!(
!c.is_encrypted().unwrap_or(true),
"Test driver should not be encrypted"
);
common::close(c);
}
#[test]
fn test_is_secure() {
let c = common::conn();
assert!(
c.is_secure().unwrap_or(false),
"Test driver should be secure"
);
common::close(c);
}
#[test]
fn test_capabilities() {
let c = common::conn();
assert!(
"" != c.get_capabilities().unwrap_or_default(),
"Capabilities should not be empty"
);
common::close(c);
}
#[test]
fn test_domain_capabilities() {
let c = common::conn();
/* Libvirt's test driver implemented domcaps in 9.8.0. Allow test to
* run gracefully on older versions. */
match c.get_domain_capabilities(None, None, None, None, 0) {
Ok(domcaps) => assert!(
!domcaps.is_empty(),
"Domain capabilities should not be empty"
),
Err(e) => assert!(
e.level() == virt::error::ErrorLevel::Error
&& e.code() == virt::error::ErrorNumber::NoSupport
&& e.domain() == virt::error::ErrorDomain::Domain,
"Unexpected error"
),
}
common::close(c);
}
#[test]
fn test_get_node_info() {
let c = common::conn();
match c.get_node_info() {
Ok(info) => assert_eq!("i686", info.model),
Err(_) => panic!("should have a node info"),
}
common::close(c);
}
#[test]
fn test_hostname() {
let c = common::conn();
assert!(!c.get_hostname().unwrap_or_default().is_empty());
common::close(c);
}
/*
#[test]
fn test_get_free_memory() {
let c = common::conn();
assert!(
0 != c.get_free_memory().unwrap_or(0),
"Version was 0");
common::close(c);
}
*/
#[test]
fn test_lib_version() {
let c = common::conn();
assert!(0 != c.get_lib_version().unwrap_or(0), "Version was 0");
common::close(c);
}
#[test]
fn test_list_domains() {
let c = common::conn();
assert!(
!c.list_domains().unwrap_or_default().is_empty(),
"At least one domain should exist"
);
common::close(c);
}
#[test]
fn test_list_interfaces() {
let c = common::conn();
assert!(
!c.list_interfaces().unwrap_or_default().is_empty(),
"At least one interface should exist"
);
common::close(c);
}
#[test]
fn test_list_networks() {
let c = common::conn();
assert!(
!c.list_networks().unwrap_or_default().is_empty(),
"At least one networks should exist"
);
common::close(c);
}
#[test]
fn test_list_storage_pools() {
let c = common::conn();
assert!(
!c.list_storage_pools().unwrap_or_default().is_empty(),
"At least one storage pool should exist"
);
common::close(c);
}
#[test]
fn test_list_all_domains() {
let c = common::conn();
let v = c.list_all_domains(0).unwrap_or_default();
assert!(!v.is_empty(), "At least one domain should exist");
drop(v);
common::close(c);
}
/* Travis is failing on this test
#[test]
fn test_get_cpu_models_names() {
let c = common::conn();
let mcpus = c.get_cpu_models_names("i686", 0).unwrap_or(vec![]);
assert!(0 < mcpus.len(), "At least one cpu model should exist");
common::close(c);
}
*/
#[test]
fn test_get_max_vcpus() {
let c = common::conn();
let m = c.get_max_vcpus(None).unwrap_or(0);
assert!(0 < m, "At least one cpu should exist");
common::close(c);
}
#[test]
fn test_get_cells_free_memory() {
let c = common::conn();
let free = c.get_cells_free_memory(0, 2).unwrap_or_default();
assert!(free.len() == 2, "Expected two NUMA nodes");
assert!(free[0] == 2097152, "Invalid free pages for NUMA node 0");
assert!(free[1] == 4194304, "Invalid free pages for NUMA node 1");
common::close(c);
}