[libvirt] [PATCH 02/13] tests: Adapt virnetservertest to daemon refactor

Martin Kletzander mkletzan at redhat.com
Tue Jun 16 09:58:19 UTC 2015


Rename the test to virnetdaemontest and use virNetDaemon objects instead
of virNetServer inside.

Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
---
 tests/Makefile.am                                  |  10 +-
 .../{virnetserverdata => virnetdaemondata}/README  |   0
 .../virnetdaemondata/input-data-admin-nomdns.json  | 126 ++++++++++++++++++++
 .../input-data-anon-clients.json                   |   0
 .../input-data-initial-nomdns.json}                |   1 -
 .../input-data-initial.json                        |   0
 .../virnetdaemondata/output-data-admin-nomdns.json | 128 +++++++++++++++++++++
 .../virnetdaemondata/output-data-anon-clients.json |  66 +++++++++++
 .../output-data-initial-nomdns.json                |  66 +++++++++++
 tests/virnetdaemondata/output-data-initial.json    |  67 +++++++++++
 tests/{virnetservertest.c => virnetdaemontest.c}   |  70 ++++++++---
 tests/virnetserverdata/output-data-initial.json    |  63 ----------
 12 files changed, 511 insertions(+), 86 deletions(-)
 rename tests/{virnetserverdata => virnetdaemondata}/README (100%)
 create mode 100644 tests/virnetdaemondata/input-data-admin-nomdns.json
 rename tests/{virnetserverdata => virnetdaemondata}/input-data-anon-clients.json (100%)
 rename tests/{virnetserverdata/output-data-anon-clients.json => virnetdaemondata/input-data-initial-nomdns.json} (97%)
 rename tests/{virnetserverdata => virnetdaemondata}/input-data-initial.json (100%)
 create mode 100644 tests/virnetdaemondata/output-data-admin-nomdns.json
 create mode 100644 tests/virnetdaemondata/output-data-anon-clients.json
 create mode 100644 tests/virnetdaemondata/output-data-initial-nomdns.json
 create mode 100644 tests/virnetdaemondata/output-data-initial.json
 rename tests/{virnetservertest.c => virnetdaemontest.c} (84%)
 delete mode 100644 tests/virnetserverdata/output-data-initial.json

diff --git a/tests/Makefile.am b/tests/Makefile.am
index b3a0e4b2c8f8..cefe8b3cf9d2 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -189,7 +189,7 @@ if WITH_REMOTE
 test_programs += \
 	virnetmessagetest \
 	virnetsockettest \
-	virnetservertest \
+	virnetdaemontest \
 	virnetserverclienttest \
 	$(NULL)
 if WITH_GNUTLS
@@ -923,11 +923,11 @@ virnetsockettest_SOURCES = \
 	virnetsockettest.c testutils.h testutils.c
 virnetsockettest_LDADD = $(LDADDS)

-virnetservertest_SOURCES = \
-	virnetservertest.c \
+virnetdaemontest_SOURCES = \
+	virnetdaemontest.c \
 	testutils.h testutils.c
-virnetservertest_CFLAGS = $(XDR_CFLAGS) $(AM_CFLAGS)
-virnetservertest_LDADD = $(LDADDS)
+virnetdaemontest_CFLAGS = $(XDR_CFLAGS) $(AM_CFLAGS)
+virnetdaemontest_LDADD = $(LDADDS)

 virnetserverclienttest_SOURCES = \
 	virnetserverclienttest.c \
diff --git a/tests/virnetserverdata/README b/tests/virnetdaemondata/README
similarity index 100%
rename from tests/virnetserverdata/README
rename to tests/virnetdaemondata/README
diff --git a/tests/virnetdaemondata/input-data-admin-nomdns.json b/tests/virnetdaemondata/input-data-admin-nomdns.json
new file mode 100644
index 000000000000..59bc4714a60b
--- /dev/null
+++ b/tests/virnetdaemondata/input-data-admin-nomdns.json
@@ -0,0 +1,126 @@
+{
+    "servers": [
+	{
+	    "min_workers": 10,
+	    "max_workers": 50,
+	    "priority_workers": 5,
+	    "max_clients": 100,
+	    "keepaliveInterval": 120,
+	    "keepaliveCount": 5,
+	    "keepaliveRequired": true,
+	    "services": [
+		{
+		    "auth": 0,
+		    "readonly": true,
+		    "nrequests_client_max": 2,
+		    "socks": [
+			{
+			    "fd": 100,
+			    "errfd": -1,
+			    "pid": 0,
+			    "isClient": false
+			}
+		    ]
+		},
+		{
+		    "auth": 2,
+		    "readonly": false,
+		    "nrequests_client_max": 5,
+		    "socks": [
+			{
+			    "fd": 101,
+			    "errfd": -1,
+			    "pid": 0,
+			    "isClient": false
+			}
+		    ]
+		}
+	    ],
+	    "clients": [
+		{
+		    "auth": 1,
+		    "readonly": true,
+		    "nrequests_max": 15,
+		    "sock": {
+			"fd": 102,
+			"errfd": -1,
+			"pid": -1,
+			"isClient": true
+		    }
+		},
+		{
+		    "auth": 2,
+		    "readonly": true,
+		    "nrequests_max": 66,
+		    "sock": {
+			"fd": 103,
+			"errfd": -1,
+			"pid": -1,
+			"isClient": true
+		    }
+		}
+	    ]
+	},
+	{
+	    "min_workers": 2,
+	    "max_workers": 50,
+	    "priority_workers": 5,
+	    "max_clients": 100,
+	    "keepaliveInterval": 120,
+	    "keepaliveCount": 5,
+	    "keepaliveRequired": true,
+	    "services": [
+		{
+		    "auth": 0,
+		    "readonly": true,
+		    "nrequests_client_max": 2,
+		    "socks": [
+			{
+			    "fd": 100,
+			    "errfd": -1,
+			    "pid": 0,
+			    "isClient": false
+			}
+		    ]
+		},
+		{
+		    "auth": 2,
+		    "readonly": false,
+		    "nrequests_client_max": 5,
+		    "socks": [
+			{
+			    "fd": 101,
+			    "errfd": -1,
+			    "pid": 0,
+			    "isClient": false
+			}
+		    ]
+		}
+	    ],
+	    "clients": [
+		{
+		    "auth": 1,
+		    "readonly": true,
+		    "nrequests_max": 15,
+		    "sock": {
+			"fd": 102,
+			"errfd": -1,
+			"pid": -1,
+			"isClient": true
+		    }
+		},
+		{
+		    "auth": 2,
+		    "readonly": true,
+		    "nrequests_max": 66,
+		    "sock": {
+			"fd": 103,
+			"errfd": -1,
+			"pid": -1,
+			"isClient": true
+		    }
+		}
+	    ]
+	}
+    ]
+}
diff --git a/tests/virnetserverdata/input-data-anon-clients.json b/tests/virnetdaemondata/input-data-anon-clients.json
similarity index 100%
rename from tests/virnetserverdata/input-data-anon-clients.json
rename to tests/virnetdaemondata/input-data-anon-clients.json
diff --git a/tests/virnetserverdata/output-data-anon-clients.json b/tests/virnetdaemondata/input-data-initial-nomdns.json
similarity index 97%
rename from tests/virnetserverdata/output-data-anon-clients.json
rename to tests/virnetdaemondata/input-data-initial-nomdns.json
index 8a51ff53d6cf..02bb42748774 100644
--- a/tests/virnetserverdata/output-data-anon-clients.json
+++ b/tests/virnetdaemondata/input-data-initial-nomdns.json
@@ -3,7 +3,6 @@
     "max_workers": 50,
     "priority_workers": 5,
     "max_clients": 100,
-    "max_anonymous_clients": 10,
     "keepaliveInterval": 120,
     "keepaliveCount": 5,
     "keepaliveRequired": true,
diff --git a/tests/virnetserverdata/input-data-initial.json b/tests/virnetdaemondata/input-data-initial.json
similarity index 100%
rename from tests/virnetserverdata/input-data-initial.json
rename to tests/virnetdaemondata/input-data-initial.json
diff --git a/tests/virnetdaemondata/output-data-admin-nomdns.json b/tests/virnetdaemondata/output-data-admin-nomdns.json
new file mode 100644
index 000000000000..5df71a0d88c8
--- /dev/null
+++ b/tests/virnetdaemondata/output-data-admin-nomdns.json
@@ -0,0 +1,128 @@
+{
+    "servers": [
+        {
+            "min_workers": 10,
+            "max_workers": 50,
+            "priority_workers": 5,
+            "max_clients": 100,
+            "max_anonymous_clients": 100,
+            "keepaliveInterval": 120,
+            "keepaliveCount": 5,
+            "keepaliveRequired": true,
+            "services": [
+                {
+                    "auth": 0,
+                    "readonly": true,
+                    "nrequests_client_max": 2,
+                    "socks": [
+                        {
+                            "fd": 100,
+                            "errfd": -1,
+                            "pid": 0,
+                            "isClient": false
+                        }
+                    ]
+                },
+                {
+                    "auth": 2,
+                    "readonly": false,
+                    "nrequests_client_max": 5,
+                    "socks": [
+                        {
+                            "fd": 101,
+                            "errfd": -1,
+                            "pid": 0,
+                            "isClient": false
+                        }
+                    ]
+                }
+            ],
+            "clients": [
+                {
+                    "auth": 1,
+                    "readonly": true,
+                    "nrequests_max": 15,
+                    "sock": {
+                        "fd": 102,
+                        "errfd": -1,
+                        "pid": -1,
+                        "isClient": true
+                    }
+                },
+                {
+                    "auth": 2,
+                    "readonly": true,
+                    "nrequests_max": 66,
+                    "sock": {
+                        "fd": 103,
+                        "errfd": -1,
+                        "pid": -1,
+                        "isClient": true
+                    }
+                }
+            ]
+        },
+        {
+            "min_workers": 2,
+            "max_workers": 50,
+            "priority_workers": 5,
+            "max_clients": 100,
+            "max_anonymous_clients": 100,
+            "keepaliveInterval": 120,
+            "keepaliveCount": 5,
+            "keepaliveRequired": true,
+            "services": [
+                {
+                    "auth": 0,
+                    "readonly": true,
+                    "nrequests_client_max": 2,
+                    "socks": [
+                        {
+                            "fd": 100,
+                            "errfd": -1,
+                            "pid": 0,
+                            "isClient": false
+                        }
+                    ]
+                },
+                {
+                    "auth": 2,
+                    "readonly": false,
+                    "nrequests_client_max": 5,
+                    "socks": [
+                        {
+                            "fd": 101,
+                            "errfd": -1,
+                            "pid": 0,
+                            "isClient": false
+                        }
+                    ]
+                }
+            ],
+            "clients": [
+                {
+                    "auth": 1,
+                    "readonly": true,
+                    "nrequests_max": 15,
+                    "sock": {
+                        "fd": 102,
+                        "errfd": -1,
+                        "pid": -1,
+                        "isClient": true
+                    }
+                },
+                {
+                    "auth": 2,
+                    "readonly": true,
+                    "nrequests_max": 66,
+                    "sock": {
+                        "fd": 103,
+                        "errfd": -1,
+                        "pid": -1,
+                        "isClient": true
+                    }
+                }
+            ]
+        }
+    ]
+}
diff --git a/tests/virnetdaemondata/output-data-anon-clients.json b/tests/virnetdaemondata/output-data-anon-clients.json
new file mode 100644
index 000000000000..4e4332691aa7
--- /dev/null
+++ b/tests/virnetdaemondata/output-data-anon-clients.json
@@ -0,0 +1,66 @@
+{
+    "servers": [
+        {
+            "min_workers": 10,
+            "max_workers": 50,
+            "priority_workers": 5,
+            "max_clients": 100,
+            "max_anonymous_clients": 10,
+            "keepaliveInterval": 120,
+            "keepaliveCount": 5,
+            "keepaliveRequired": true,
+            "services": [
+                {
+                    "auth": 0,
+                    "readonly": true,
+                    "nrequests_client_max": 2,
+                    "socks": [
+                        {
+                            "fd": 100,
+                            "errfd": -1,
+                            "pid": 0,
+                            "isClient": false
+                        }
+                    ]
+                },
+                {
+                    "auth": 2,
+                    "readonly": false,
+                    "nrequests_client_max": 5,
+                    "socks": [
+                        {
+                            "fd": 101,
+                            "errfd": -1,
+                            "pid": 0,
+                            "isClient": false
+                        }
+                    ]
+                }
+            ],
+            "clients": [
+                {
+                    "auth": 1,
+                    "readonly": true,
+                    "nrequests_max": 15,
+                    "sock": {
+                        "fd": 102,
+                        "errfd": -1,
+                        "pid": -1,
+                        "isClient": true
+                    }
+                },
+                {
+                    "auth": 2,
+                    "readonly": true,
+                    "nrequests_max": 66,
+                    "sock": {
+                        "fd": 103,
+                        "errfd": -1,
+                        "pid": -1,
+                        "isClient": true
+                    }
+                }
+            ]
+        }
+    ]
+}
diff --git a/tests/virnetdaemondata/output-data-initial-nomdns.json b/tests/virnetdaemondata/output-data-initial-nomdns.json
new file mode 100644
index 000000000000..bef54bf94ad5
--- /dev/null
+++ b/tests/virnetdaemondata/output-data-initial-nomdns.json
@@ -0,0 +1,66 @@
+{
+    "servers": [
+        {
+            "min_workers": 10,
+            "max_workers": 50,
+            "priority_workers": 5,
+            "max_clients": 100,
+            "max_anonymous_clients": 100,
+            "keepaliveInterval": 120,
+            "keepaliveCount": 5,
+            "keepaliveRequired": true,
+            "services": [
+                {
+                    "auth": 0,
+                    "readonly": true,
+                    "nrequests_client_max": 2,
+                    "socks": [
+                        {
+                            "fd": 100,
+                            "errfd": -1,
+                            "pid": 0,
+                            "isClient": false
+                        }
+                    ]
+                },
+                {
+                    "auth": 2,
+                    "readonly": false,
+                    "nrequests_client_max": 5,
+                    "socks": [
+                        {
+                            "fd": 101,
+                            "errfd": -1,
+                            "pid": 0,
+                            "isClient": false
+                        }
+                    ]
+                }
+            ],
+            "clients": [
+                {
+                    "auth": 1,
+                    "readonly": true,
+                    "nrequests_max": 15,
+                    "sock": {
+                        "fd": 102,
+                        "errfd": -1,
+                        "pid": -1,
+                        "isClient": true
+                    }
+                },
+                {
+                    "auth": 2,
+                    "readonly": true,
+                    "nrequests_max": 66,
+                    "sock": {
+                        "fd": 103,
+                        "errfd": -1,
+                        "pid": -1,
+                        "isClient": true
+                    }
+                }
+            ]
+        }
+    ]
+}
diff --git a/tests/virnetdaemondata/output-data-initial.json b/tests/virnetdaemondata/output-data-initial.json
new file mode 100644
index 000000000000..9afa791d91fc
--- /dev/null
+++ b/tests/virnetdaemondata/output-data-initial.json
@@ -0,0 +1,67 @@
+{
+    "servers": [
+        {
+            "min_workers": 10,
+            "max_workers": 50,
+            "priority_workers": 5,
+            "max_clients": 100,
+            "max_anonymous_clients": 100,
+            "keepaliveInterval": 120,
+            "keepaliveCount": 5,
+            "keepaliveRequired": true,
+            "mdnsGroupName": "libvirtTest",
+            "services": [
+                {
+                    "auth": 0,
+                    "readonly": true,
+                    "nrequests_client_max": 2,
+                    "socks": [
+                        {
+                            "fd": 100,
+                            "errfd": -1,
+                            "pid": 0,
+                            "isClient": false
+                        }
+                    ]
+                },
+                {
+                    "auth": 2,
+                    "readonly": false,
+                    "nrequests_client_max": 5,
+                    "socks": [
+                        {
+                            "fd": 101,
+                            "errfd": -1,
+                            "pid": 0,
+                            "isClient": false
+                        }
+                    ]
+                }
+            ],
+            "clients": [
+                {
+                    "auth": 1,
+                    "readonly": true,
+                    "nrequests_max": 15,
+                    "sock": {
+                        "fd": 102,
+                        "errfd": -1,
+                        "pid": -1,
+                        "isClient": true
+                    }
+                },
+                {
+                    "auth": 2,
+                    "readonly": true,
+                    "nrequests_max": 66,
+                    "sock": {
+                        "fd": 103,
+                        "errfd": -1,
+                        "pid": -1,
+                        "isClient": true
+                    }
+                }
+            ]
+        }
+    ]
+}
diff --git a/tests/virnetservertest.c b/tests/virnetdaemontest.c
similarity index 84%
rename from tests/virnetservertest.c
rename to tests/virnetdaemontest.c
index d546f87764c1..ef45018f5873 100644
--- a/tests/virnetservertest.c
+++ b/tests/virnetdaemontest.c
@@ -22,7 +22,7 @@

 #include "testutils.h"
 #include "virerror.h"
-#include "rpc/virnetserver.h"
+#include "rpc/virnetdaemon.h"

 #define VIR_FROM_THIS VIR_FROM_RPC

@@ -135,6 +135,7 @@ testCreateServer(const char *host, int family)

 static char *testGenerateJSON(void)
 {
+    virNetDaemonPtr dmn = NULL;
     virNetServerPtr srv = NULL;
     virJSONValuePtr json = NULL;
     char *jsonstr = NULL;
@@ -157,27 +158,41 @@ static char *testGenerateJSON(void)
               has_ipv4 ? AF_INET : AF_INET6)))
         goto cleanup;

-    if (!(json = virNetServerPreExecRestart(srv)))
+    if (!(dmn = virNetDaemonNew()))
+        goto cleanup;
+
+    if (virNetDaemonAddServer(dmn, srv) < 0)
+        goto cleanup;
+
+    if (!(json = virNetDaemonPreExecRestart(dmn)))
         goto cleanup;

     if (!(jsonstr = virJSONValueToString(json, true)))
         goto cleanup;
+
     fprintf(stderr, "%s\n", jsonstr);
  cleanup:
     virNetServerClose(srv);
     virObjectUnref(srv);
+    virObjectUnref(dmn);
     virJSONValueFree(json);
+    if (!jsonstr)
+        virDispatchError(NULL);
     return jsonstr;
 }


 struct testExecRestartData {
     const char *jsonfile;
+    int nservers;
+    bool pass;
 };

 static int testExecRestart(const void *opaque)
 {
+    size_t i;
     int ret = -1;
+    virNetDaemonPtr dmn = NULL;
     virNetServerPtr srv = NULL;
     const struct testExecRestartData *data = opaque;
     char *infile = NULL, *outfile = NULL;
@@ -206,11 +221,11 @@ static int testExecRestart(const void *opaque)
     dup2(fdclient[0], 102);
     dup2(fdclient[1], 103);

-    if (virAsprintf(&infile, "%s/virnetserverdata/input-data-%s.json",
+    if (virAsprintf(&infile, "%s/virnetdaemondata/input-data-%s.json",
                     abs_srcdir, data->jsonfile) < 0)
         goto cleanup;

-    if (virAsprintf(&outfile, "%s/virnetserverdata/output-data-%s.json",
+    if (virAsprintf(&outfile, "%s/virnetdaemondata/output-data-%s.json",
                     abs_srcdir, data->jsonfile) < 0)
         goto cleanup;

@@ -220,33 +235,46 @@ static int testExecRestart(const void *opaque)
     if (!(injson = virJSONValueFromString(injsonstr)))
         goto cleanup;

-    if (!(srv = virNetServerNewPostExecRestart(injson,
-                                               NULL, NULL, NULL,
-                                               NULL, NULL)))
+    if (!(dmn = virNetDaemonNewPostExecRestart(injson)))
         goto cleanup;

-    if (!(outjson = virNetServerPreExecRestart(srv)))
+    for (i = 0; i < data->nservers; i++) {
+        if (!(srv = virNetDaemonAddServerPostExec(dmn,
+                                                  NULL, NULL, NULL,
+                                                  NULL, NULL)))
+            goto cleanup;
+        srv = NULL;
+    }
+
+    if (!(outjson = virNetDaemonPreExecRestart(dmn)))
         goto cleanup;

     if (!(outjsonstr = virJSONValueToString(outjson, true)))
         goto cleanup;

     if (virtTestCompareToFile(outjsonstr, outfile) < 0)
-        goto fail;
+        goto cleanup;

-    ret = 0;
+    if (!data->pass) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s", "Test should've failed");
+        goto cleanup;
+    }

+    ret = 0;
  cleanup:
-    if (ret < 0)
-        virDispatchError(NULL);
- fail:
+    if (ret < 0) {
+        if (!data->pass)
+            ret = 0;
+        else
+            virDispatchError(NULL);
+    }
     VIR_FREE(infile);
     VIR_FREE(outfile);
     VIR_FREE(injsonstr);
     VIR_FREE(outjsonstr);
     virJSONValueFree(injson);
     virJSONValueFree(outjson);
-    virObjectUnref(srv);
+    virObjectUnref(dmn);
     VIR_FORCE_CLOSE(fdserver[0]);
     VIR_FORCE_CLOSE(fdserver[1]);
     VIR_FORCE_CLOSE(fdclient[0]);
@@ -273,27 +301,35 @@ mymain(void)
      */
     if (getenv("VIR_GENERATE_JSON")) {
         char *json = testGenerateJSON();
+        if (!json)
+            return EXIT_FAILURE;
+
         fprintf(stdout, "%s\n", json);
         VIR_FREE(json);
-        return EXIT_SUCCESS;
+        return ret;
     }

-# define EXEC_RESTART_TEST(file)                        \
+# define EXEC_RESTART_TEST_FULL(file, servers, pass)    \
     do {                                                \
         struct testExecRestartData data = {             \
-            file                                        \
+            file, servers, pass                         \
         };                                              \
         if (virtTestRun("ExecRestart " file,            \
                         testExecRestart, &data) < 0)    \
             ret = -1;                                   \
     } while (0)

+# define EXEC_RESTART_TEST(file) EXEC_RESTART_TEST_FULL(file, 1, true)
+
 # ifdef WITH_AVAHI
     EXEC_RESTART_TEST("initial");
 # endif
     EXEC_RESTART_TEST("initial-nomdns");
     EXEC_RESTART_TEST("anon-clients");

+    EXEC_RESTART_TEST_FULL("anon-clients", 2, false);
+    EXEC_RESTART_TEST_FULL("admin-nomdns", 2, true);
+
     return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
 }
 #else
diff --git a/tests/virnetserverdata/output-data-initial.json b/tests/virnetserverdata/output-data-initial.json
deleted file mode 100644
index da02aac0aa9f..000000000000
--- a/tests/virnetserverdata/output-data-initial.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
-    "min_workers": 10,
-    "max_workers": 50,
-    "priority_workers": 5,
-    "max_clients": 100,
-    "max_anonymous_clients": 100,
-    "keepaliveInterval": 120,
-    "keepaliveCount": 5,
-    "keepaliveRequired": true,
-    "mdnsGroupName": "libvirtTest",
-    "services": [
-        {
-            "auth": 0,
-            "readonly": true,
-            "nrequests_client_max": 2,
-            "socks": [
-                {
-                    "fd": 100,
-                    "errfd": -1,
-                    "pid": 0,
-                    "isClient": false
-                }
-            ]
-        },
-        {
-            "auth": 2,
-            "readonly": false,
-            "nrequests_client_max": 5,
-            "socks": [
-                {
-                    "fd": 101,
-                    "errfd": -1,
-                    "pid": 0,
-                    "isClient": false
-                }
-            ]
-        }
-    ],
-    "clients": [
-        {
-            "auth": 1,
-            "readonly": true,
-            "nrequests_max": 15,
-            "sock": {
-                "fd": 102,
-                "errfd": -1,
-                "pid": -1,
-                "isClient": true
-            }
-        },
-        {
-            "auth": 2,
-            "readonly": true,
-            "nrequests_max": 66,
-            "sock": {
-                "fd": 103,
-                "errfd": -1,
-                "pid": -1,
-                "isClient": true
-            }
-        }
-    ]
-}
-- 
2.4.3




More information about the libvir-list mailing list