|
Packit |
a07778 |
/*
|
|
Packit |
a07778 |
* test-gconfig.c: unit tests for libvirt-gconfig
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* Copyright (C) 2014 Red Hat, Inc.
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* This library is free software; you can redistribute it and/or
|
|
Packit |
a07778 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
a07778 |
* License as published by the Free Software Foundation; either
|
|
Packit |
a07778 |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
a07778 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
a07778 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
a07778 |
* Lesser General Public License for more details.
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
a07778 |
* License along with this library. If not, see
|
|
Packit |
a07778 |
* <http://www.gnu.org/licenses/>.
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* Author: Christophe Fergeau <cfergeau@redhat.com>
|
|
Packit |
a07778 |
*/
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
#include <config.h>
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
#include <libvirt-gconfig/libvirt-gconfig.h>
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
#define g_assert_cmpstr_free1(str1, op, str2) G_STMT_START { \
|
|
Packit |
a07778 |
char *alloced_str = (str1); \
|
|
Packit |
a07778 |
g_assert_cmpstr(alloced_str, op, (str2)); \
|
|
Packit |
a07778 |
g_free(alloced_str); \
|
|
Packit |
a07778 |
} G_STMT_END
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static char * load_xml(const char *reference_file)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
const char *reference_path;
|
|
Packit |
a07778 |
GError *error = NULL;
|
|
Packit |
a07778 |
char *reference_xml;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
reference_path = g_test_get_filename(G_TEST_DIST, "xml",
|
|
Packit |
a07778 |
reference_file, NULL);
|
|
Packit |
a07778 |
g_file_get_contents(reference_path, &reference_xml, NULL, &error);
|
|
Packit |
a07778 |
g_assert_no_error(error);
|
|
Packit |
a07778 |
/* I could not generate text files without a trailing \n with vim or
|
|
Packit |
a07778 |
* gedit, workaround this issue by removing trailing whitespace from
|
|
Packit |
a07778 |
* the reference file */
|
|
Packit |
a07778 |
g_strchomp(reference_xml);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
return reference_xml;
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void check_xml(GVirConfigDomain *domain, const char *reference_file)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
char *reference_xml;
|
|
Packit |
a07778 |
char *xml;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
reference_xml = load_xml(reference_file);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(domain));
|
|
Packit |
a07778 |
g_assert_cmpstr(xml, ==, reference_xml);
|
|
Packit |
a07778 |
g_free(xml);
|
|
Packit |
a07778 |
g_free(reference_xml);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static GList *get_devices_by_type(GVirConfigDomain *domain, GType type)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GList *devices;
|
|
Packit |
a07778 |
GList *it;
|
|
Packit |
a07778 |
GList *matches = NULL;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
devices = gvir_config_domain_get_devices(domain);
|
|
Packit |
a07778 |
for (it = devices; it != NULL; it = it->next) {
|
|
Packit |
a07778 |
if (g_type_is_a(G_OBJECT_TYPE(it->data), type)) {
|
|
Packit |
a07778 |
matches = g_list_prepend(matches, g_object_ref(G_OBJECT(it->data)));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
g_list_free_full(devices, g_object_unref);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
return g_list_reverse(matches);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
const char *features[] = { "foo", "bar", "baz", NULL };
|
|
Packit |
a07778 |
GStrv feat;
|
|
Packit |
a07778 |
unsigned int i;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
g_assert(domain != NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_set_virt_type(domain, GVIR_CONFIG_DOMAIN_VIRT_KVM);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_get_virt_type(domain), ==, GVIR_CONFIG_DOMAIN_VIRT_KVM);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_set_name(domain, "foo");
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_get_name(domain), ==, "foo");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_set_memory(domain, 1234);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_get_memory(domain), ==, 1234);
|
|
Packit |
a07778 |
gvir_config_domain_set_vcpus(domain, 3);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_get_vcpus(domain), ==, 3);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_set_features(domain, (const GStrv)features);
|
|
Packit |
a07778 |
feat = gvir_config_domain_get_features(domain);
|
|
Packit |
a07778 |
for (i = 0; features[i] != NULL; i++) {
|
|
Packit |
a07778 |
g_assert(feat[i] != NULL);
|
|
Packit |
a07778 |
g_assert_cmpstr(feat[i], ==, features[i]);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
g_strfreev(feat);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_set_lifecycle(domain,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_LIFECYCLE_ON_POWEROFF,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_LIFECYCLE_RESTART);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_set_custom_xml_ns_children(domain, "<libosinfo><os id=\"http://centos.org/centos/7\"/></libosinfo>", "libosinfo", "http://libosinfo.org/xmlns/libvirt/domain/1.0", NULL);
|
|
Packit |
a07778 |
gvir_config_domain_set_custom_xml_ns_children(domain, "<instance><flavor name=\"m1.small\"><memory>512</memory><disk>10</disk></flavor></instance>", "nova", "http://openstack.org/nova/instance/1", NULL);
|
|
Packit |
a07778 |
gvir_config_domain_set_custom_xml(domain, "<gnome-boxes><os-state>installed</os-state></gnome-boxes>", "boxes", "https://wiki.gnome.org/Apps/Boxes", NULL);
|
|
Packit |
a07778 |
gvir_config_domain_set_custom_xml(domain, "<foo/>", "ns", "http://foo", NULL);
|
|
Packit |
a07778 |
gvir_config_domain_set_custom_xml(domain, "<foo/>", "nsbar", "http://bar", NULL);
|
|
Packit |
a07778 |
gvir_config_domain_set_custom_xml(domain, "<foo/>", "ns", "http://bar", NULL);
|
|
Packit |
a07778 |
gvir_config_domain_set_custom_xml(domain, "<bar/>", "ns", "http://foo", NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_assert_cmpstr_free1(gvir_config_domain_get_custom_xml(domain, "http://foo"), ==, "<ns:bar xmlns:ns=\"http://foo\"/>");
|
|
Packit |
a07778 |
g_assert_cmpstr_free1(gvir_config_domain_get_custom_xml(domain, "http://bar"), ==, "<ns:foo xmlns:ns=\"http://bar\"/>");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_clock(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
GVirConfigDomainClock *klock;
|
|
Packit |
a07778 |
GVirConfigDomainTimerPit *pit;
|
|
Packit |
a07778 |
GVirConfigDomainTimerRtc *rtc;
|
|
Packit |
a07778 |
GVirConfigDomainTimerHpet *hpet;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
klock = gvir_config_domain_clock_new();
|
|
Packit |
a07778 |
gvir_config_domain_clock_set_offset(klock, GVIR_CONFIG_DOMAIN_CLOCK_TIMEZONE);
|
|
Packit |
a07778 |
gvir_config_domain_clock_set_timezone(klock, "CEST");
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_clock_get_offset(klock), ==, GVIR_CONFIG_DOMAIN_CLOCK_TIMEZONE);
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_clock_get_timezone(klock), ==, "CEST");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
pit = gvir_config_domain_timer_pit_new();
|
|
Packit |
a07778 |
gvir_config_domain_timer_set_tick_policy(GVIR_CONFIG_DOMAIN_TIMER(pit),
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_TIMER_TICK_POLICY_DELAY);
|
|
Packit |
a07778 |
gvir_config_domain_clock_add_timer(klock, GVIR_CONFIG_DOMAIN_TIMER(pit));
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_timer_get_tick_policy(GVIR_CONFIG_DOMAIN_TIMER(pit)), ==, GVIR_CONFIG_DOMAIN_TIMER_TICK_POLICY_DELAY);
|
|
Packit |
a07778 |
g_assert(gvir_config_domain_timer_get_present(GVIR_CONFIG_DOMAIN_TIMER(pit)) != FALSE);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(pit));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
rtc = gvir_config_domain_timer_rtc_new();
|
|
Packit |
a07778 |
gvir_config_domain_timer_set_tick_policy(GVIR_CONFIG_DOMAIN_TIMER(rtc),
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_TIMER_TICK_POLICY_CATCHUP);
|
|
Packit |
a07778 |
gvir_config_domain_clock_add_timer(klock, GVIR_CONFIG_DOMAIN_TIMER(rtc));
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_timer_get_tick_policy(GVIR_CONFIG_DOMAIN_TIMER(rtc)), ==, GVIR_CONFIG_DOMAIN_TIMER_TICK_POLICY_CATCHUP);
|
|
Packit |
a07778 |
g_assert(gvir_config_domain_timer_get_present(GVIR_CONFIG_DOMAIN_TIMER(rtc)) != FALSE);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(rtc));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
hpet = gvir_config_domain_timer_hpet_new();
|
|
Packit |
a07778 |
gvir_config_domain_timer_set_present(GVIR_CONFIG_DOMAIN_TIMER(hpet), FALSE);
|
|
Packit |
a07778 |
gvir_config_domain_clock_add_timer(klock, GVIR_CONFIG_DOMAIN_TIMER(hpet));
|
|
Packit |
a07778 |
g_assert(gvir_config_domain_timer_get_present(GVIR_CONFIG_DOMAIN_TIMER(hpet)) == FALSE);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(hpet));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_set_clock(domain, klock);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(klock));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
klock = gvir_config_domain_get_clock(domain);
|
|
Packit |
a07778 |
g_assert(klock != NULL);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_clock_get_offset(klock), ==, GVIR_CONFIG_DOMAIN_CLOCK_TIMEZONE);
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_clock_get_timezone(klock), ==, "CEST");
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(klock));
|
|
Packit |
a07778 |
/* FIXME: gvir_config_domain_clock_get_timers() */
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-clock.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_set_clock(domain, NULL);
|
|
Packit |
a07778 |
klock = gvir_config_domain_get_clock(domain);
|
|
Packit |
a07778 |
g_assert(klock == NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void domain_os_check_boot_devices(GVirConfigDomainOs *os)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GList *devices = NULL;
|
|
Packit |
a07778 |
GList *it;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
devices = gvir_config_domain_os_get_boot_devices(os);
|
|
Packit |
a07778 |
it = devices;
|
|
Packit |
a07778 |
g_assert_cmpint(GPOINTER_TO_INT(it->data), ==, GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_CDROM);
|
|
Packit |
a07778 |
it = it->next;
|
|
Packit |
a07778 |
g_assert_cmpint(GPOINTER_TO_INT(it->data), ==, GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_NETWORK);
|
|
Packit |
a07778 |
g_assert(it->next == NULL);
|
|
Packit |
a07778 |
g_list_free(devices);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_os(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
GVirConfigDomainOs *os;
|
|
Packit |
a07778 |
GList *devices = NULL;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
os = gvir_config_domain_os_new();
|
|
Packit |
a07778 |
gvir_config_domain_os_set_os_type(os, GVIR_CONFIG_DOMAIN_OS_TYPE_HVM);
|
|
Packit |
a07778 |
gvir_config_domain_os_set_arch(os, "x86_64");
|
|
Packit |
a07778 |
gvir_config_domain_os_set_machine(os, "q35");
|
|
Packit |
a07778 |
gvir_config_domain_os_set_firmware(os, GVIR_CONFIG_DOMAIN_OS_FIRMWARE_EFI);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_os_get_os_type(os), ==, GVIR_CONFIG_DOMAIN_OS_TYPE_HVM);
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_os_get_arch(os), ==, "x86_64");
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_os_get_machine(os), ==, "q35");
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_os_get_firmware(os), ==, GVIR_CONFIG_DOMAIN_OS_FIRMWARE_EFI);
|
|
Packit |
a07778 |
devices = g_list_append(devices,
|
|
Packit |
a07778 |
GINT_TO_POINTER(GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_CDROM));
|
|
Packit |
a07778 |
devices = g_list_append(devices,
|
|
Packit |
a07778 |
GINT_TO_POINTER(GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_NETWORK));
|
|
Packit |
a07778 |
gvir_config_domain_os_set_boot_devices(os, devices);
|
|
Packit |
a07778 |
g_list_free(devices);
|
|
Packit |
a07778 |
devices = NULL;
|
|
Packit |
a07778 |
domain_os_check_boot_devices(os);
|
|
Packit |
a07778 |
gvir_config_domain_set_os(domain, os);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(os));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
os = gvir_config_domain_get_os(domain);
|
|
Packit |
a07778 |
g_assert(os != NULL);
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_os_get_arch(os), ==, "x86_64");
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_os_get_os_type(os), ==, GVIR_CONFIG_DOMAIN_OS_TYPE_HVM);
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_os_get_machine(os), ==, "q35");
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_os_get_firmware(os), ==, GVIR_CONFIG_DOMAIN_OS_FIRMWARE_EFI);
|
|
Packit |
a07778 |
domain_os_check_boot_devices(os);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(os));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-os.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_set_os(domain, NULL);
|
|
Packit |
a07778 |
os = gvir_config_domain_get_os(domain);
|
|
Packit |
a07778 |
g_assert(os == NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_cpu(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
/* cpu node */
|
|
Packit |
a07778 |
GVirConfigDomainCpu *cpu;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
cpu = gvir_config_domain_cpu_new();
|
|
Packit |
a07778 |
gvir_config_domain_set_vcpus(domain, 3);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/* cpu/feature nodes */
|
|
Packit |
a07778 |
GVirConfigDomainCpuFeature *feature;
|
|
Packit |
a07778 |
GList *cpu_features = NULL;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_cpu_set_match_policy(cpu, GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_STRICT);
|
|
Packit |
a07778 |
gvir_config_domain_cpu_set_mode(cpu, GVIR_CONFIG_DOMAIN_CPU_MODE_HOST_PASSTHROUGH);
|
|
Packit |
a07778 |
feature = gvir_config_domain_cpu_feature_new();
|
|
Packit |
a07778 |
gvir_config_capabilities_cpu_feature_set_name(GVIR_CONFIG_CAPABILITIES_CPU_FEATURE(feature),
|
|
Packit |
a07778 |
"foo");
|
|
Packit |
a07778 |
gvir_config_domain_cpu_feature_set_policy(feature, GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE);
|
|
Packit |
a07778 |
gvir_config_capabilities_cpu_add_feature(GVIR_CONFIG_CAPABILITIES_CPU(cpu),
|
|
Packit |
a07778 |
GVIR_CONFIG_CAPABILITIES_CPU_FEATURE(feature));
|
|
Packit |
a07778 |
g_object_unref(feature);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/* cpu/topology nodes */
|
|
Packit |
a07778 |
GVirConfigCapabilitiesCpuTopology *topology;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
topology = gvir_config_capabilities_cpu_topology_new();
|
|
Packit |
a07778 |
gvir_config_capabilities_cpu_topology_set_cores(topology, 1);
|
|
Packit |
a07778 |
gvir_config_capabilities_cpu_topology_set_sockets(topology, 2);
|
|
Packit |
a07778 |
gvir_config_capabilities_cpu_topology_set_threads(topology, 3);
|
|
Packit |
a07778 |
gvir_config_capabilities_cpu_set_topology(GVIR_CONFIG_CAPABILITIES_CPU(cpu),
|
|
Packit |
a07778 |
topology);
|
|
Packit |
a07778 |
g_object_unref(topology);
|
|
Packit |
a07778 |
gvir_config_domain_set_cpu(domain, cpu);
|
|
Packit |
a07778 |
g_object_unref(cpu);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
cpu = gvir_config_domain_get_cpu(domain);
|
|
Packit |
a07778 |
g_assert(cpu != NULL);
|
|
Packit |
a07778 |
g_assert(GVIR_CONFIG_IS_CAPABILITIES_CPU(cpu));
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_cpu_get_match_policy(cpu), ==, GVIR_CONFIG_DOMAIN_CPU_MATCH_POLICY_STRICT);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_cpu_get_mode(cpu), ==, GVIR_CONFIG_DOMAIN_CPU_MODE_HOST_PASSTHROUGH);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
cpu_features = gvir_config_capabilities_cpu_get_features(GVIR_CONFIG_CAPABILITIES_CPU(cpu));
|
|
Packit |
a07778 |
g_assert_cmpint(g_list_length(cpu_features), ==, 1);
|
|
Packit |
a07778 |
g_assert(GVIR_CONFIG_IS_DOMAIN_CPU_FEATURE(cpu_features->data));
|
|
Packit |
a07778 |
feature = GVIR_CONFIG_DOMAIN_CPU_FEATURE(cpu_features->data);
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_capabilities_cpu_feature_get_name(GVIR_CONFIG_CAPABILITIES_CPU_FEATURE(feature)), ==, "foo");
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_cpu_feature_get_policy(feature), ==, GVIR_CONFIG_DOMAIN_CPU_FEATURE_POLICY_REQUIRE);
|
|
Packit |
a07778 |
g_list_free_full(cpu_features, g_object_unref);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
topology = gvir_config_capabilities_cpu_get_topology(GVIR_CONFIG_CAPABILITIES_CPU(cpu));
|
|
Packit |
a07778 |
g_assert(topology != NULL);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_capabilities_cpu_topology_get_cores(topology), ==, 1);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_capabilities_cpu_topology_get_sockets(topology), ==, 2);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_capabilities_cpu_topology_get_threads(topology), ==, 3);
|
|
Packit |
a07778 |
g_object_unref(topology);
|
|
Packit |
a07778 |
g_object_unref(cpu);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-cpu.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
cpu = gvir_config_domain_get_cpu(domain);
|
|
Packit |
a07778 |
gvir_config_capabilities_cpu_set_topology(GVIR_CONFIG_CAPABILITIES_CPU(cpu),
|
|
Packit |
a07778 |
NULL);
|
|
Packit |
a07778 |
topology = gvir_config_capabilities_cpu_get_topology(GVIR_CONFIG_CAPABILITIES_CPU(cpu));
|
|
Packit |
a07778 |
g_assert(topology == NULL);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(cpu));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_set_cpu(domain, NULL);
|
|
Packit |
a07778 |
cpu = gvir_config_domain_get_cpu(domain);
|
|
Packit |
a07778 |
g_assert(cpu == NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_disk(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
GVirConfigDomainDisk *disk;
|
|
Packit |
a07778 |
GVirConfigDomainDiskDriver *driver;
|
|
Packit |
a07778 |
GList *disks;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
driver = gvir_config_domain_disk_driver_new();
|
|
Packit |
a07778 |
gvir_config_domain_disk_driver_set_name(driver, "foo");
|
|
Packit |
a07778 |
gvir_config_domain_disk_driver_set_format(driver, GVIR_CONFIG_DOMAIN_DISK_FORMAT_BOCHS);
|
|
Packit |
a07778 |
gvir_config_domain_disk_driver_set_name(driver, "qemu");
|
|
Packit |
a07778 |
gvir_config_domain_disk_driver_set_cache(driver, GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE);
|
|
Packit |
a07778 |
gvir_config_domain_disk_driver_set_format(driver, GVIR_CONFIG_DOMAIN_DISK_FORMAT_QCOW2);
|
|
Packit |
a07778 |
gvir_config_domain_disk_driver_set_copy_on_read(driver, TRUE);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
disk = gvir_config_domain_disk_new();
|
|
Packit |
a07778 |
gvir_config_domain_disk_set_type(disk, GVIR_CONFIG_DOMAIN_DISK_FILE);
|
|
Packit |
a07778 |
gvir_config_domain_disk_set_guest_device_type(disk, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK);
|
|
Packit |
a07778 |
gvir_config_domain_disk_set_source(disk, "/tmp/foo/bar");
|
|
Packit |
a07778 |
gvir_config_domain_disk_set_startup_policy (disk, GVIR_CONFIG_DOMAIN_DISK_STARTUP_POLICY_REQUISITE);
|
|
Packit |
a07778 |
gvir_config_domain_disk_set_target_bus(disk, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE);
|
|
Packit |
a07778 |
gvir_config_domain_disk_set_target_dev(disk, "hda");
|
|
Packit |
a07778 |
gvir_config_domain_disk_set_driver(disk, driver);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(driver));
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(disk));
|
|
Packit |
a07778 |
g_object_unref(disk);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-disk.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
disks = get_devices_by_type(domain, GVIR_CONFIG_TYPE_DOMAIN_DISK);
|
|
Packit |
a07778 |
g_assert_cmpint(g_list_length(disks), ==, 1);
|
|
Packit |
a07778 |
g_assert(GVIR_CONFIG_IS_DOMAIN_DISK(disks->data));
|
|
Packit |
a07778 |
disk = GVIR_CONFIG_DOMAIN_DISK(disks->data);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_disk_get_disk_type(disk), ==, GVIR_CONFIG_DOMAIN_DISK_FILE);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_disk_get_guest_device_type(disk), ==, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_disk_get_startup_policy (disk), ==, GVIR_CONFIG_DOMAIN_DISK_STARTUP_POLICY_REQUISITE);
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_disk_get_source(disk), ==, "/tmp/foo/bar");
|
|
Packit |
a07778 |
driver = gvir_config_domain_disk_get_driver(disk);
|
|
Packit |
a07778 |
g_assert(driver != NULL);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_disk_driver_get_cache(driver), ==, GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE);
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_disk_driver_get_name(driver), ==, "qemu");
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_disk_driver_get_format(driver), ==, GVIR_CONFIG_DOMAIN_DISK_FORMAT_QCOW2);
|
|
Packit |
a07778 |
g_assert(gvir_config_domain_disk_driver_get_copy_on_read(driver));
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_disk_get_target_bus(disk), ==, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE);
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_disk_get_target_dev(disk), ==, "hda");
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(driver));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_disk_set_driver(disk, NULL);
|
|
Packit |
a07778 |
driver = gvir_config_domain_disk_get_driver(disk);
|
|
Packit |
a07778 |
g_assert(driver == NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_list_free_full(disks, g_object_unref);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_filesystem(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
GVirConfigDomainFilesys *fs;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
fs = gvir_config_domain_filesys_new();
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_type(fs, GVIR_CONFIG_DOMAIN_FILESYS_FILE);
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_access_type(fs, GVIR_CONFIG_DOMAIN_FILESYS_ACCESS_MAPPED);
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_driver_type(fs, GVIR_CONFIG_DOMAIN_FILESYS_DRIVER_NBD);
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_driver_format(fs, GVIR_CONFIG_DOMAIN_DISK_FORMAT_QCOW2);
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_source(fs, "/path/to/source");
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_target(fs, "/path/to/target1");
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_readonly(fs, TRUE);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(fs));
|
|
Packit |
a07778 |
g_object_unref(fs);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/* Add a RAM fs */
|
|
Packit |
a07778 |
fs = gvir_config_domain_filesys_new();
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_type(fs, GVIR_CONFIG_DOMAIN_FILESYS_RAM);
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_access_type(fs, GVIR_CONFIG_DOMAIN_FILESYS_ACCESS_PASSTHROUGH);
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_driver_type(fs, GVIR_CONFIG_DOMAIN_FILESYS_DRIVER_PATH);
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_ram_usage(fs, 1234);
|
|
Packit |
a07778 |
gvir_config_domain_filesys_set_target(fs, "/path/to/target2");
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(fs));
|
|
Packit |
a07778 |
g_object_unref(fs);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-filesys.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_network(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
GVirConfigDomainInterface *interface;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
interface = GVIR_CONFIG_DOMAIN_INTERFACE(gvir_config_domain_interface_network_new());
|
|
Packit |
a07778 |
gvir_config_domain_interface_network_set_source(GVIR_CONFIG_DOMAIN_INTERFACE_NETWORK(interface),
|
|
Packit |
a07778 |
"default");
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(interface));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(interface));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
interface = GVIR_CONFIG_DOMAIN_INTERFACE(gvir_config_domain_interface_user_new());
|
|
Packit |
a07778 |
gvir_config_domain_interface_set_ifname(interface, "eth0");
|
|
Packit |
a07778 |
gvir_config_domain_interface_set_link_state(interface,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_INTERFACE_LINK_STATE_UP);
|
|
Packit |
a07778 |
gvir_config_domain_interface_set_mac(interface, "00:11:22:33:44:55");
|
|
Packit |
a07778 |
gvir_config_domain_interface_set_model(interface, "foo");
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(interface));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(interface));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-network.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_input(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
GVirConfigDomainInput *input;
|
|
Packit |
a07778 |
GList *inputs;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
input = gvir_config_domain_input_new();
|
|
Packit |
a07778 |
gvir_config_domain_input_set_device_type(input,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_INPUT_DEVICE_TABLET);
|
|
Packit |
a07778 |
gvir_config_domain_input_set_bus(input, GVIR_CONFIG_DOMAIN_INPUT_BUS_USB);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(input));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(input));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-input.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
inputs = get_devices_by_type(domain, GVIR_CONFIG_TYPE_DOMAIN_INPUT);
|
|
Packit |
a07778 |
g_assert_cmpint(g_list_length(inputs), ==, 1);
|
|
Packit |
a07778 |
g_assert(GVIR_CONFIG_IS_DOMAIN_INPUT(inputs->data));
|
|
Packit |
a07778 |
input = GVIR_CONFIG_DOMAIN_INPUT(inputs->data);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_input_get_device_type(input), ==, GVIR_CONFIG_DOMAIN_INPUT_DEVICE_TABLET);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_input_get_bus(input), ==, GVIR_CONFIG_DOMAIN_INPUT_BUS_USB);
|
|
Packit |
a07778 |
g_list_free_full(inputs, g_object_unref);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_graphics(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
GVirConfigDomainGraphicsSpice *graphics;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
graphics = gvir_config_domain_graphics_spice_new();
|
|
Packit |
a07778 |
gvir_config_domain_graphics_spice_set_port(graphics, 1234);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_graphics_spice_get_port(graphics), ==, 1234);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/* SPICE image compression configuration */
|
|
Packit |
a07778 |
gvir_config_domain_graphics_spice_set_image_compression
|
|
Packit |
a07778 |
(graphics, GVIR_CONFIG_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_AUTO_LZ);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_graphics_spice_get_image_compression(graphics), ==,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_AUTO_LZ);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(graphics));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(graphics));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-graphics.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_video(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/* video node */
|
|
Packit |
a07778 |
GVirConfigDomainVideo *video;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
video = gvir_config_domain_video_new();
|
|
Packit |
a07778 |
gvir_config_domain_video_set_model(video,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_VIDEO_MODEL_QXL);
|
|
Packit |
a07778 |
gvir_config_domain_video_set_heads(video, 4);
|
|
Packit |
a07778 |
gvir_config_domain_video_set_vram(video, 256*1024);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(video));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(video));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-video.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_sound(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
/* sound node */
|
|
Packit |
a07778 |
GVirConfigDomainSound *sound;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
sound = gvir_config_domain_sound_new();
|
|
Packit |
a07778 |
gvir_config_domain_sound_set_model(sound,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_SOUND_MODEL_ES1370);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(sound));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(sound));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-sound.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_console(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
/* console node */
|
|
Packit |
a07778 |
GVirConfigDomainConsole *console;
|
|
Packit |
a07778 |
GVirConfigDomainChardevSourcePty *pty;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
console = gvir_config_domain_console_new();
|
|
Packit |
a07778 |
pty = gvir_config_domain_chardev_source_pty_new();
|
|
Packit |
a07778 |
gvir_config_domain_chardev_set_source(GVIR_CONFIG_DOMAIN_CHARDEV(console),
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE(pty));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(pty));
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(console));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(console));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-console.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_channel(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
/* spice agent channel */
|
|
Packit |
a07778 |
GVirConfigDomainChannel *channel;
|
|
Packit |
a07778 |
GVirConfigDomainChardevSourceSpiceVmc *spicevmc;
|
|
Packit |
a07778 |
GVirConfigDomainChardevSourceSpicePort *spiceport;
|
|
Packit |
a07778 |
GVirConfigDomainChardevSourceUnix *unix_source;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
channel = gvir_config_domain_channel_new();
|
|
Packit |
a07778 |
gvir_config_domain_channel_set_target_type(channel,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_CHANNEL_TARGET_VIRTIO);
|
|
Packit |
a07778 |
spicevmc = gvir_config_domain_chardev_source_spicevmc_new();
|
|
Packit |
a07778 |
gvir_config_domain_chardev_set_source(GVIR_CONFIG_DOMAIN_CHARDEV(channel),
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE(spicevmc));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(spicevmc));
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(channel));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(channel));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
channel = gvir_config_domain_channel_new();
|
|
Packit |
a07778 |
gvir_config_domain_channel_set_target_type(channel,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_CHANNEL_TARGET_VIRTIO);
|
|
Packit |
a07778 |
gvir_config_domain_channel_set_target_name(channel,
|
|
Packit |
a07778 |
"org.spice-space.webdav.0");
|
|
Packit |
a07778 |
spiceport = gvir_config_domain_chardev_source_spiceport_new();
|
|
Packit |
a07778 |
gvir_config_domain_chardev_source_spiceport_set_channel(spiceport, "org.spice-space.webdav.0");
|
|
Packit |
a07778 |
gvir_config_domain_chardev_set_source(GVIR_CONFIG_DOMAIN_CHARDEV(channel),
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE(spiceport));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(spiceport));
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(channel));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(channel));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
channel = gvir_config_domain_channel_new();
|
|
Packit |
a07778 |
gvir_config_domain_channel_set_target_type(channel,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_CHANNEL_TARGET_VIRTIO);
|
|
Packit |
a07778 |
gvir_config_domain_channel_set_target_name(channel, "org.qemu.guest_agent.0");
|
|
Packit |
a07778 |
unix_source = gvir_config_domain_chardev_source_unix_new();
|
|
Packit |
a07778 |
gvir_config_domain_chardev_set_source(GVIR_CONFIG_DOMAIN_CHARDEV(channel),
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE(unix_source));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(unix_source));
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(channel));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(channel));
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-channel.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static GVirConfigDomainControllerUsb *
|
|
Packit |
a07778 |
domain_device_usb_redir_create_usb_controller(GVirConfigDomainControllerUsbModel model,
|
|
Packit |
a07778 |
guint indx,
|
|
Packit |
a07778 |
GVirConfigDomainControllerUsb *master,
|
|
Packit |
a07778 |
guint start_port,
|
|
Packit |
a07778 |
guint domain, guint bus,
|
|
Packit |
a07778 |
guint slot, guint function,
|
|
Packit |
a07778 |
gboolean multifunction)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomainControllerUsb *controller;
|
|
Packit |
a07778 |
GVirConfigDomainAddressPci *address;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
controller = gvir_config_domain_controller_usb_new();
|
|
Packit |
a07778 |
gvir_config_domain_controller_usb_set_model(controller, model);
|
|
Packit |
a07778 |
gvir_config_domain_controller_set_index(GVIR_CONFIG_DOMAIN_CONTROLLER(controller), indx);
|
|
Packit |
a07778 |
if (master)
|
|
Packit |
a07778 |
gvir_config_domain_controller_usb_set_master(controller, master, start_port);
|
|
Packit |
a07778 |
address = gvir_config_domain_address_pci_new();
|
|
Packit |
a07778 |
gvir_config_domain_address_pci_set_domain(address, domain);
|
|
Packit |
a07778 |
gvir_config_domain_address_pci_set_bus(address, bus);
|
|
Packit |
a07778 |
gvir_config_domain_address_pci_set_slot(address, slot);
|
|
Packit |
a07778 |
gvir_config_domain_address_pci_set_function(address, function);
|
|
Packit |
a07778 |
if (multifunction)
|
|
Packit |
a07778 |
gvir_config_domain_address_pci_set_multifunction(address, multifunction);
|
|
Packit |
a07778 |
gvir_config_domain_controller_set_address(GVIR_CONFIG_DOMAIN_CONTROLLER(controller),
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_ADDRESS(address));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(address));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
return controller;
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static GVirConfigDomainRedirdev *
|
|
Packit |
a07778 |
domain_device_usb_redir_create_redirdev(guint bus, guint port)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomainRedirdev *redirdev;
|
|
Packit |
a07778 |
GVirConfigDomainAddressUsb *address;
|
|
Packit |
a07778 |
GVirConfigDomainChardevSourceSpiceVmc *spicevmc;
|
|
Packit |
a07778 |
gchar *port_str;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
redirdev = gvir_config_domain_redirdev_new();
|
|
Packit |
a07778 |
gvir_config_domain_redirdev_set_bus(redirdev,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_REDIRDEV_BUS_USB);
|
|
Packit |
a07778 |
spicevmc = gvir_config_domain_chardev_source_spicevmc_new();
|
|
Packit |
a07778 |
gvir_config_domain_chardev_set_source(GVIR_CONFIG_DOMAIN_CHARDEV(redirdev),
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE(spicevmc));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(spicevmc));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
address = gvir_config_domain_address_usb_new();
|
|
Packit |
a07778 |
gvir_config_domain_address_usb_set_bus(address, bus);
|
|
Packit |
a07778 |
port_str = g_strdup_printf("%d", port);
|
|
Packit |
a07778 |
gvir_config_domain_address_usb_set_port(address, port_str);
|
|
Packit |
a07778 |
g_free(port_str);
|
|
Packit |
a07778 |
gvir_config_domain_redirdev_set_address(redirdev,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_ADDRESS(address));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(address));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
return redirdev;
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_usb_redir(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
/* spice usb redirection */
|
|
Packit |
a07778 |
GVirConfigDomainControllerUsb *ehci;
|
|
Packit |
a07778 |
GVirConfigDomainControllerUsb *uhci1;
|
|
Packit |
a07778 |
GVirConfigDomainControllerUsb *uhci2;
|
|
Packit |
a07778 |
GVirConfigDomainControllerUsb *uhci3;
|
|
Packit |
a07778 |
GVirConfigDomainRedirdev *redirdev;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
ehci = domain_device_usb_redir_create_usb_controller(GVIR_CONFIG_DOMAIN_CONTROLLER_USB_MODEL_ICH9_EHCI1,
|
|
Packit |
a07778 |
1, NULL, 0, 0, 0, 8, 7, FALSE);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(ehci));
|
|
Packit |
a07778 |
uhci1 = domain_device_usb_redir_create_usb_controller(GVIR_CONFIG_DOMAIN_CONTROLLER_USB_MODEL_ICH9_UHCI1,
|
|
Packit |
a07778 |
7, ehci, 0, 0, 0, 8, 0, TRUE);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(uhci1));
|
|
Packit |
a07778 |
uhci2 = domain_device_usb_redir_create_usb_controller(GVIR_CONFIG_DOMAIN_CONTROLLER_USB_MODEL_ICH9_UHCI2,
|
|
Packit |
a07778 |
7, ehci, 2, 0, 0, 8, 1, FALSE);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(uhci2));
|
|
Packit |
a07778 |
uhci3 = domain_device_usb_redir_create_usb_controller(GVIR_CONFIG_DOMAIN_CONTROLLER_USB_MODEL_ICH9_UHCI3,
|
|
Packit |
a07778 |
7, ehci, 4, 0, 0, 8, 2, FALSE);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_controller_get_index(GVIR_CONFIG_DOMAIN_CONTROLLER(uhci1)), ==, 1);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(uhci3));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(uhci1));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(uhci2));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(uhci3));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(ehci));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/* three redirdev channels allows to redirect a maximum of 3 USB
|
|
Packit |
a07778 |
* devices at a time. The address which create_redirdev assigns to the
|
|
Packit |
a07778 |
* redirdev object is optional
|
|
Packit |
a07778 |
*/
|
|
Packit |
a07778 |
redirdev = domain_device_usb_redir_create_redirdev(0, 3);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(redirdev));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(redirdev));
|
|
Packit |
a07778 |
redirdev = domain_device_usb_redir_create_redirdev(0, 4);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(redirdev));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(redirdev));
|
|
Packit |
a07778 |
redirdev = domain_device_usb_redir_create_redirdev(0, 5);
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE(redirdev));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(redirdev));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-usbredir.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_pci_hostdev(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
GVirConfigDomainAddressPci *address;
|
|
Packit |
a07778 |
GVirConfigDomainHostdevPci *hostdev;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new();
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
hostdev = gvir_config_domain_hostdev_pci_new();
|
|
Packit |
a07778 |
gvir_config_domain_hostdev_set_boot_order(GVIR_CONFIG_DOMAIN_HOSTDEV(hostdev), 1);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_hostdev_get_boot_order(GVIR_CONFIG_DOMAIN_HOSTDEV(hostdev)), ==, 1);
|
|
Packit |
a07778 |
gvir_config_domain_hostdev_pci_set_managed(hostdev, TRUE);
|
|
Packit |
a07778 |
g_assert(gvir_config_domain_hostdev_pci_get_managed(hostdev) == TRUE);
|
|
Packit |
a07778 |
gvir_config_domain_hostdev_pci_set_rom_bar(hostdev, TRUE);
|
|
Packit |
a07778 |
gvir_config_domain_hostdev_pci_set_rom_file(hostdev, "/etc/fake/boot.bin");
|
|
Packit |
a07778 |
g_assert_cmpstr(gvir_config_domain_hostdev_pci_get_rom_file(hostdev), ==, "/etc/fake/boot.bin");
|
|
Packit |
a07778 |
g_assert(gvir_config_domain_hostdev_pci_get_rom_bar(hostdev));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
address = gvir_config_domain_address_pci_new();
|
|
Packit |
a07778 |
gvir_config_domain_address_pci_set_domain(address, 1);
|
|
Packit |
a07778 |
gvir_config_domain_address_pci_set_bus(address, 2);
|
|
Packit |
a07778 |
gvir_config_domain_address_pci_set_slot(address, 3);
|
|
Packit |
a07778 |
gvir_config_domain_address_pci_set_function(address, 4);
|
|
Packit |
a07778 |
gvir_config_domain_hostdev_pci_set_address(hostdev, address);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(address));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
address = gvir_config_domain_hostdev_pci_get_address(hostdev);
|
|
Packit |
a07778 |
g_assert(address != NULL);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_address_pci_get_domain(address), ==, 1);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_address_pci_get_bus(address), ==, 2);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_address_pci_get_slot(address), ==, 3);
|
|
Packit |
a07778 |
g_assert_cmpint(gvir_config_domain_address_pci_get_function(address), ==, 4);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(address));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_domain_add_device(domain, GVIR_CONFIG_DOMAIN_DEVICE (hostdev));
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(hostdev));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-pci-hostdev.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_device_unknown(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomain *domain;
|
|
Packit |
a07778 |
GList *devices;
|
|
Packit |
a07778 |
GError *error = NULL;
|
|
Packit |
a07778 |
char *xml;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
xml = load_xml("gconfig-domain-device-unknown.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain = gvir_config_domain_new_from_xml(xml, &error);
|
|
Packit |
a07778 |
g_assert_no_error(error);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
devices = gvir_config_domain_get_devices(domain);
|
|
Packit |
a07778 |
g_assert_nonnull(devices);
|
|
Packit |
a07778 |
gvir_config_domain_set_devices(domain, devices);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
check_xml(domain, "gconfig-domain-device-unknown.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_list_free_full(devices, g_object_unref);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(domain));
|
|
Packit |
a07778 |
g_free(xml);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void test_domain_capabilities_os(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigDomainCapabilities *domain_caps;
|
|
Packit |
a07778 |
GVirConfigDomainCapabilitiesOs *os;
|
|
Packit |
a07778 |
GList *firmwares, *l;
|
|
Packit |
a07778 |
gsize i;
|
|
Packit |
a07778 |
GVirConfigDomainOsFirmware expected_firmwares[] = {GVIR_CONFIG_DOMAIN_OS_FIRMWARE_BIOS,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_OS_FIRMWARE_EFI};
|
|
Packit |
a07778 |
GError *error = NULL;
|
|
Packit |
a07778 |
gchar *xml;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
xml = load_xml("gconfig-domain-capabilities-os.xml");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
domain_caps = gvir_config_domain_capabilities_new_from_xml(xml, &error);
|
|
Packit |
a07778 |
g_assert_no_error(error);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
os = gvir_config_domain_capabilities_get_os(domain_caps);
|
|
Packit |
a07778 |
g_assert_nonnull(os);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
firmwares = gvir_config_domain_capabilities_os_get_firmwares(os);
|
|
Packit |
a07778 |
g_assert_nonnull(firmwares);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
for (l = firmwares, i = 0; l != NULL; l = l->next, i++)
|
|
Packit |
a07778 |
g_assert_cmpint(GPOINTER_TO_INT(l->data), ==, expected_firmwares[i]);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_list_free(firmwares);
|
|
Packit |
a07778 |
g_object_unref(os);
|
|
Packit |
a07778 |
g_object_unref(domain_caps);
|
|
Packit |
a07778 |
g_free(xml);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
int main(int argc, char **argv)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
gvir_config_init(&argc, &argv);
|
|
Packit |
a07778 |
g_test_init(&argc, &argv, NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain", test_domain);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-clock", test_domain_clock);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-os", test_domain_os);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-cpu", test_domain_cpu);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-disk",
|
|
Packit |
a07778 |
test_domain_device_disk);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-filesystem",
|
|
Packit |
a07778 |
test_domain_device_filesystem);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-network",
|
|
Packit |
a07778 |
test_domain_device_network);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-input",
|
|
Packit |
a07778 |
test_domain_device_input);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-graphics",
|
|
Packit |
a07778 |
test_domain_device_graphics);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-video",
|
|
Packit |
a07778 |
test_domain_device_video);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-sound",
|
|
Packit |
a07778 |
test_domain_device_sound);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-console",
|
|
Packit |
a07778 |
test_domain_device_console);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-channel",
|
|
Packit |
a07778 |
test_domain_device_channel);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-usb-redir",
|
|
Packit |
a07778 |
test_domain_device_usb_redir);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-pci-hostdev",
|
|
Packit |
a07778 |
test_domain_device_pci_hostdev);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-device-unknown",
|
|
Packit |
a07778 |
test_domain_device_unknown);
|
|
Packit |
a07778 |
g_test_add_func("/libvirt-gconfig/domain-capabilities-os",
|
|
Packit |
a07778 |
test_domain_capabilities_os);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
return g_test_run();
|
|
Packit |
a07778 |
}
|