Merge pull request #3329 from efuss/fix-3311
[collectd.git] / src / virt_test.c
index 19ca88e..458faca 100644 (file)
 #include "testing.h"
 #include "virt.c" /* sic */
 
-#ifdef HAVE_LIST_ALL_DOMAINS
-
-virDomainPtr *domains;
+static virDomainPtr *domains;
+static int nr_domains;
 
-static int setup(void)
-{
+static int setup(void) {
   if (virInitialize() != 0) {
     printf("ERROR: virInitialize() != 0\n");
     return -1;
@@ -45,20 +43,26 @@ static int setup(void)
   return 0;
 }
 
-static int teardown(void)
-{
-  sfree(domains);
+static int teardown(void) {
+  if (domains) {
+    for (int i = 0; i < nr_domains; ++i)
+      virDomainFree(domains[i]);
+    sfree(domains);
+  }
+  nr_domains = 0;
   if (conn != NULL)
     virConnectClose(conn);
 
   return 0;
 }
 
+#ifdef HAVE_LIST_ALL_DOMAINS
 DEF_TEST(get_domain_state_notify) {
   if (setup() == 0) {
-    int n_domains = virConnectListAllDomains(conn, &domains, VIR_CONNECT_GET_ALL_DOMAINS_STATS_PERSISTENT);
-    if (n_domains <= 0) {
-      printf("ERROR: virConnectListAllDomains: n_domains <= 0\n");
+    nr_domains = virConnectListAllDomains(conn, &domains,
+                                          VIR_CONNECT_LIST_DOMAINS_PERSISTENT);
+    if (nr_domains <= 0) {
+      printf("ERROR: virConnectListAllDomains: nr_domains <= 0\n");
       return -1;
     }
 
@@ -66,9 +70,10 @@ DEF_TEST(get_domain_state_notify) {
     EXPECT_EQ_INT(0, ret);
   }
   teardown();
-  
+
   return 0;
 }
+#endif
 
 DEF_TEST(persistent_domains_state_notification) {
   if (setup() == 0) {
@@ -76,16 +81,15 @@ DEF_TEST(persistent_domains_state_notification) {
     EXPECT_EQ_INT(0, ret);
   }
   teardown();
-  
+
   return 0;
 }
-#endif
 
 int main(void) {
 #ifdef HAVE_LIST_ALL_DOMAINS
   RUN_TEST(get_domain_state_notify);
-  RUN_TEST(persistent_domains_state_notification);
 #endif
+  RUN_TEST(persistent_domains_state_notification);
 
   END_TEST;
 }