src/virt.c: State notifications for all persistent domains
[collectd.git] / src / virt_test.c
1 /**
2  * collectd - src/virt_test.c
3  * Copyright (C) 2016 Francesco Romani <fromani at redhat.com>
4  * Based on
5  * collectd - src/ceph_test.c
6  * Copyright (C) 2015      Florian octo Forster
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License as published by the
10  * Free Software Foundation; only version 2 of the License is applicable.
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
20  *
21  * Authors:
22  *   Florian octo Forster <octo at collectd.org>
23  **/
24
25 #include "testing.h"
26 #include "virt.c" /* sic */
27
28 #ifdef HAVE_LIST_ALL_DOMAINS
29
30 virDomainPtr *domains;
31
32 static int setup(void)
33 {
34   if (virInitialize() != 0) {
35     printf("ERROR: virInitialize() != 0\n");
36     return -1;
37   }
38
39   conn = virConnectOpen("test:///default");
40   if (conn == NULL) {
41     printf("ERROR: virConnectOpen == NULL\n");
42     return -1;
43   }
44
45   return 0;
46 }
47
48 static int teardown(void)
49 {
50   sfree(domains);
51   if (conn != NULL)
52     virConnectClose(conn);
53
54   return 0;
55 }
56
57 DEF_TEST(get_domain_state_notify) {
58   if (setup() == 0) {
59     int n_domains = virConnectListAllDomains(conn, &domains, VIR_CONNECT_GET_ALL_DOMAINS_STATS_PERSISTENT);
60     if (n_domains <= 0) {
61       printf("ERROR: virConnectListAllDomains: n_domains <= 0\n");
62       return -1;
63     }
64
65     int ret = get_domain_state_notify(domains[0]);
66     EXPECT_EQ_INT(0, ret);
67   }
68   teardown();
69   
70   return 0;
71 }
72
73 DEF_TEST(persistent_domains_state_notification) {
74   if (setup() == 0) {
75     int ret = persistent_domains_state_notification();
76     EXPECT_EQ_INT(0, ret);
77   }
78   teardown();
79   
80   return 0;
81 }
82 #endif
83
84 int main(void) {
85 #ifdef HAVE_LIST_ALL_DOMAINS
86   RUN_TEST(get_domain_state_notify);
87   RUN_TEST(persistent_domains_state_notification);
88 #endif
89
90   END_TEST;
91 }