Merge pull request #3329 from efuss/fix-3311
[collectd.git] / src / virt_test.c
index 6201571..458faca 100644 (file)
@@ -25,9 +25,8 @@
 #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) {
   if (virInitialize() != 0) {
@@ -45,19 +44,25 @@ static int setup(void) {
 }
 
 static int teardown(void) {
-  sfree(domains);
+  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;
     }
 
@@ -68,6 +73,7 @@ DEF_TEST(get_domain_state_notify) {
 
   return 0;
 }
+#endif
 
 DEF_TEST(persistent_domains_state_notification) {
   if (setup() == 0) {
@@ -78,13 +84,12 @@ DEF_TEST(persistent_domains_state_notification) {
 
   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;
 }