Re: [RFC 2/3] kdbus: selftests extended

2015-10-08 Thread David Herrmann
Hi

On Thu, Sep 24, 2015 at 2:07 PM, Paul Osmialowski
 wrote:
> The 'test-send' test case should connect to an already running test-daemon
> which creates a bus with known name.
>
> The main goal of this test case is to verify that messages as well as
> file descriptors (opened with different open modes) can be transferred
> properly.
>
> In order to achieve its goals, this test case opens three files
> (/tmp/kdbus-test-send.rd, /tmp/kdbus-test-send.wr,
> /tmp/kdbus-test-send.rdwr) with three different open modes (O_RDONLY,
> O_WRONLY, O_RDWR). If any of these files exists it is used 'as is',
> otherwise it is created with some default content. Then this test tries
> to send simple message followed by three messages each one of them
> containing an array of opened file descriptors (single element array in the
> first message, two element array in the second, three element array in the
> third).
>
> The ability to send array of file descriptors required changes in almost
> all of the test case files.
>
> Signed-off-by: Karol Lewandowski 
> Signed-off-by: Paul Osmialowski 
> ---
>  tools/testing/selftests/kdbus/Makefile   |  1 +
>  tools/testing/selftests/kdbus/kdbus-test.c   | 11 +++-
>  tools/testing/selftests/kdbus/kdbus-test.h   |  1 +
>  tools/testing/selftests/kdbus/kdbus-util.c   | 20 --
>  tools/testing/selftests/kdbus/kdbus-util.h   |  2 +-
>  tools/testing/selftests/kdbus/test-activator.c   | 20 +++---
>  tools/testing/selftests/kdbus/test-chat.c|  6 +-
>  tools/testing/selftests/kdbus/test-connection.c  |  8 ++-
>  tools/testing/selftests/kdbus/test-fd.c  |  2 +-
>  tools/testing/selftests/kdbus/test-message.c | 69 
>  tools/testing/selftests/kdbus/test-metadata-ns.c | 10 +--
>  tools/testing/selftests/kdbus/test-monitor.c |  9 +--
>  tools/testing/selftests/kdbus/test-policy-ns.c   |  8 +--
>  tools/testing/selftests/kdbus/test-policy-priv.c | 48 --
>  tools/testing/selftests/kdbus/test-send.c| 82 
> 
>  tools/testing/selftests/kdbus/test-sync.c|  2 +-
>  tools/testing/selftests/kdbus/test-timeout.c |  2 +-
>  17 files changed, 216 insertions(+), 85 deletions(-)
>  create mode 100644 tools/testing/selftests/kdbus/test-send.c
>
> diff --git a/tools/testing/selftests/kdbus/Makefile 
> b/tools/testing/selftests/kdbus/Makefile
> index 8f36cb5..f400756 100644
> --- a/tools/testing/selftests/kdbus/Makefile
> +++ b/tools/testing/selftests/kdbus/Makefile
> @@ -27,6 +27,7 @@ OBJS= \
> test-policy.o   \
> test-policy-ns.o\
> test-policy-priv.o  \
> +   test-send.o \
> test-sync.o \
> test-timeout.o
>
> diff --git a/tools/testing/selftests/kdbus/kdbus-test.c 
> b/tools/testing/selftests/kdbus/kdbus-test.c
> index bde4283..37f05bb 100644
> --- a/tools/testing/selftests/kdbus/kdbus-test.c
> +++ b/tools/testing/selftests/kdbus/kdbus-test.c
> @@ -25,6 +25,7 @@
>  enum {
> TEST_CREATE_BUS = 1 << 0,
> TEST_CREATE_CONN= 1 << 1,
> +   TEST_CREATE_CAN_FAIL= 1 << 2,
>  };
>
>  struct kdbus_test {
> @@ -154,6 +155,12 @@ static const struct kdbus_test tests[] = {
> .flags  = TEST_CREATE_BUS,
> },
> {
> +   .name   = "send",
> +   .desc   = "send",
> +   .func   = kdbus_test_send,
> +   .flags  = TEST_CREATE_CONN | TEST_CREATE_CAN_FAIL,
> +   },
> +   {
> .name   = "sync-byebye",
> .desc   = "synchronous replies vs. BYEBYE",
> .func   = kdbus_test_sync_byebye,
> @@ -307,7 +314,7 @@ static int test_prepare_env(const struct kdbus_test *t,
>args->busname ?: n,
>_KDBUS_ATTACH_ALL, &s);
> free(n);
> -   ASSERT_RETURN(ret == 0);
> +   ASSERT_RETURN((ret == 0) || (t->flags & 
> TEST_CREATE_CAN_FAIL));
>
> asprintf(&env->buspath, "%s/%s/bus", args->root, s);
> free(s);
> @@ -336,7 +343,7 @@ static int test_prepare_env(const struct kdbus_test *t,
> }
> ASSERT_RETURN(env->buspath);
> env->conn = kdbus_hello(env->buspath, 0, NULL, 0);
> -   ASSERT_RETURN(env->conn);
> +   ASSERT_RETURN(env->conn || (t->flags & TEST_CREATE_CAN_FAIL));
> }
>
> env->root = args->root;
> diff --git a/tools/testing/selftests/kdbus/kdbus-test.h 
> b/tools/testing/selftests/kdbus/kdbus-test.h
> index ee937f9..041fa40 100644
> --- a/tools/testing/selftests/kdbus/kdbus-test.h
> +++ b/tools/testing/selftests/kdbus/kdbus-test.h
> @@ -76,6 +76,7 @@ int kdbus_test_name_takeover(struct kdbus_test_env *env);
>  int kdbus_test_policy(struct kdbus_test_env *env);
>  int kdbus_test_policy_ns(struct kdbus_test_env *env);
>  int kdbus_test_policy_

[RFC 2/3] kdbus: selftests extended

2015-09-24 Thread Paul Osmialowski
The 'test-send' test case should connect to an already running test-daemon
which creates a bus with known name.

The main goal of this test case is to verify that messages as well as
file descriptors (opened with different open modes) can be transferred
properly.

In order to achieve its goals, this test case opens three files
(/tmp/kdbus-test-send.rd, /tmp/kdbus-test-send.wr,
/tmp/kdbus-test-send.rdwr) with three different open modes (O_RDONLY,
O_WRONLY, O_RDWR). If any of these files exists it is used 'as is',
otherwise it is created with some default content. Then this test tries
to send simple message followed by three messages each one of them
containing an array of opened file descriptors (single element array in the
first message, two element array in the second, three element array in the
third).

The ability to send array of file descriptors required changes in almost
all of the test case files.

Signed-off-by: Karol Lewandowski 
Signed-off-by: Paul Osmialowski 
---
 tools/testing/selftests/kdbus/Makefile   |  1 +
 tools/testing/selftests/kdbus/kdbus-test.c   | 11 +++-
 tools/testing/selftests/kdbus/kdbus-test.h   |  1 +
 tools/testing/selftests/kdbus/kdbus-util.c   | 20 --
 tools/testing/selftests/kdbus/kdbus-util.h   |  2 +-
 tools/testing/selftests/kdbus/test-activator.c   | 20 +++---
 tools/testing/selftests/kdbus/test-chat.c|  6 +-
 tools/testing/selftests/kdbus/test-connection.c  |  8 ++-
 tools/testing/selftests/kdbus/test-fd.c  |  2 +-
 tools/testing/selftests/kdbus/test-message.c | 69 
 tools/testing/selftests/kdbus/test-metadata-ns.c | 10 +--
 tools/testing/selftests/kdbus/test-monitor.c |  9 +--
 tools/testing/selftests/kdbus/test-policy-ns.c   |  8 +--
 tools/testing/selftests/kdbus/test-policy-priv.c | 48 --
 tools/testing/selftests/kdbus/test-send.c| 82 
 tools/testing/selftests/kdbus/test-sync.c|  2 +-
 tools/testing/selftests/kdbus/test-timeout.c |  2 +-
 17 files changed, 216 insertions(+), 85 deletions(-)
 create mode 100644 tools/testing/selftests/kdbus/test-send.c

diff --git a/tools/testing/selftests/kdbus/Makefile 
b/tools/testing/selftests/kdbus/Makefile
index 8f36cb5..f400756 100644
--- a/tools/testing/selftests/kdbus/Makefile
+++ b/tools/testing/selftests/kdbus/Makefile
@@ -27,6 +27,7 @@ OBJS= \
test-policy.o   \
test-policy-ns.o\
test-policy-priv.o  \
+   test-send.o \
test-sync.o \
test-timeout.o
 
diff --git a/tools/testing/selftests/kdbus/kdbus-test.c 
b/tools/testing/selftests/kdbus/kdbus-test.c
index bde4283..37f05bb 100644
--- a/tools/testing/selftests/kdbus/kdbus-test.c
+++ b/tools/testing/selftests/kdbus/kdbus-test.c
@@ -25,6 +25,7 @@
 enum {
TEST_CREATE_BUS = 1 << 0,
TEST_CREATE_CONN= 1 << 1,
+   TEST_CREATE_CAN_FAIL= 1 << 2,
 };
 
 struct kdbus_test {
@@ -154,6 +155,12 @@ static const struct kdbus_test tests[] = {
.flags  = TEST_CREATE_BUS,
},
{
+   .name   = "send",
+   .desc   = "send",
+   .func   = kdbus_test_send,
+   .flags  = TEST_CREATE_CONN | TEST_CREATE_CAN_FAIL,
+   },
+   {
.name   = "sync-byebye",
.desc   = "synchronous replies vs. BYEBYE",
.func   = kdbus_test_sync_byebye,
@@ -307,7 +314,7 @@ static int test_prepare_env(const struct kdbus_test *t,
   args->busname ?: n,
   _KDBUS_ATTACH_ALL, &s);
free(n);
-   ASSERT_RETURN(ret == 0);
+   ASSERT_RETURN((ret == 0) || (t->flags & TEST_CREATE_CAN_FAIL));
 
asprintf(&env->buspath, "%s/%s/bus", args->root, s);
free(s);
@@ -336,7 +343,7 @@ static int test_prepare_env(const struct kdbus_test *t,
}
ASSERT_RETURN(env->buspath);
env->conn = kdbus_hello(env->buspath, 0, NULL, 0);
-   ASSERT_RETURN(env->conn);
+   ASSERT_RETURN(env->conn || (t->flags & TEST_CREATE_CAN_FAIL));
}
 
env->root = args->root;
diff --git a/tools/testing/selftests/kdbus/kdbus-test.h 
b/tools/testing/selftests/kdbus/kdbus-test.h
index ee937f9..041fa40 100644
--- a/tools/testing/selftests/kdbus/kdbus-test.h
+++ b/tools/testing/selftests/kdbus/kdbus-test.h
@@ -76,6 +76,7 @@ int kdbus_test_name_takeover(struct kdbus_test_env *env);
 int kdbus_test_policy(struct kdbus_test_env *env);
 int kdbus_test_policy_ns(struct kdbus_test_env *env);
 int kdbus_test_policy_priv(struct kdbus_test_env *env);
+int kdbus_test_send(struct kdbus_test_env *env);
 int kdbus_test_sync_byebye(struct kdbus_test_env *env);
 int kdbus_test_sync_reply(struct kdbus_test_env *env);
 int kdbus_test_timeout(struct kdbus_test_env *env);
diff --git a/tools/test