kdbus: TEST_CREATE_CONN now does no depend on TEST_CREATE_BUS 24/41224/13
authorPaul Osmialowski <p.osmialowsk@samsung.com>
Wed, 29 Apr 2015 14:55:39 +0000 (16:55 +0200)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Fri, 18 Sep 2015 11:05:08 +0000 (04:05 -0700)
Without this patch, it is impossible to specify test case able to
connect to a bus already created (e.g. by 'test-daemon' test case), you can
only specify:

1) TEST_CREATE_BUS which creates new bus, or
2) TEST_CREATE_CONN OR'ed with TEST_CREATE_BUS which creates new bus and
creates connection to it.

This patch adds the missing ability to specify TEST_CREATE_CONN alone.

It will be used by a new test case (will be added by separate commit) which
is supposed to connect to already started test-daemon case.

Change-Id: I10a4ccb76fa50a3b5f454f8e18031339f2f7d3d1
Signed-off-by: Paul Osmialowski <p.osmialowsk@samsung.com>
tools/testing/selftests/kdbus/kdbus-test.c
tools/testing/selftests/kdbus/kdbus-util.c

index a43674ccdeb0029b24a79f34cdbbc2867d05ea75..bf1a69c59365ee06b6bcd1799027522594238b83 100644 (file)
@@ -317,6 +317,27 @@ static int test_prepare_env(const struct kdbus_test *t,
        }
 
        if (t->flags & TEST_CREATE_CONN) {
+               if (!env->buspath) {
+                       char *s = NULL;
+                       char *n = NULL;
+                       int ret;
+
+                       if (!args->busname) {
+                               n = unique_name("test-bus");
+                               ASSERT_RETURN(n);
+                       }
+
+                       ret = kdbus_create_bus(-1,
+                                              args->busname ?: n,
+                                              0,
+                                              0, &s);
+                       free(n);
+                       ASSERT_RETURN(ret == 0);
+
+                       asprintf(&env->buspath, "%s/%s/bus", args->root, s);
+                       free(s);
+               }
+               ASSERT_RETURN(env->buspath);
                env->conn = kdbus_hello(env->buspath, 0, NULL, 0);
                ASSERT_RETURN(env->conn);
        }
index 4b376ecfdbed0da7b3d68f9b50981267f60c322b..0849f5ef81ff3c6acd130f52c43dbfa1598d973e 100644 (file)
@@ -141,7 +141,7 @@ int kdbus_create_bus(int control_fd, const char *name,
                        char str[64];
                } name;
        } bus_make;
-       int ret;
+       int ret = 0;
 
        memset(&bus_make, 0, sizeof(bus_make));
        bus_make.bp.size = sizeof(bus_make.bp);
@@ -171,13 +171,17 @@ int kdbus_create_bus(int control_fd, const char *name,
                             bus_make.attach[1].size +
                             bus_make.name.size;
 
-       kdbus_printf("Creating bus with name >%s< on control fd %d ...\n",
-                    name, control_fd);
+       if (control_fd != -1) {
+               kdbus_printf(
+                       "Creating bus with name >%s< on control fd %d ...\n",
+                       name, control_fd);
 
-       ret = kdbus_cmd_bus_make(control_fd, &bus_make.cmd);
-       if (ret < 0) {
-               kdbus_printf("--- error when making bus: %d (%m)\n", ret);
-               return ret;
+               ret = kdbus_cmd_bus_make(control_fd, &bus_make.cmd);
+               if (ret < 0) {
+                       kdbus_printf("--- error when making bus: %d (%m)\n",
+                                    ret);
+                       return ret;
+               }
        }
 
        if (ret == 0 && path)