[PATCH 1/2] test-message: add message quota test

John de la Garza <[email protected]>
Newsgroups gmane.comp.freedesktop.dbus
Message-ID <[email protected]>
Signed-off-by: John de la Garza <[email protected]>
---
 test/kdbus-test.c   |  6 ++++++
 test/kdbus-test.h   |  1 +
 test/test-message.c | 33 +++++++++++++++++++++++++++++++++
 3 files changed, 40 insertions(+)

diff --git a/test/kdbus-test.c b/test/kdbus-test.c
index 56a0ff9..d9e6a89 100644
--- a/test/kdbus-test.c
+++ b/test/kdbus-test.c
@@ -106,6 +106,12 @@ static const struct kdbus_test tests[] = {
 		.flags	= TEST_CREATE_BUS,
 	},
 	{
+		.name	= "message-quota",
+		.desc	= "message quotas are enforced",
+		.func	= kdbus_test_message_quota,
+		.flags	= TEST_CREATE_BUS,
+	},
+	{
 		.name	= "timeout",
 		.desc	= "timeout",
 		.func	= kdbus_test_timeout,
diff --git a/test/kdbus-test.h b/test/kdbus-test.h
index bb9b372..e267182 100644
--- a/test/kdbus-test.h
+++ b/test/kdbus-test.h
@@ -61,6 +61,7 @@ int kdbus_test_match_name_change(struct kdbus_test_env *env);
 int kdbus_test_match_name_remove(struct kdbus_test_env *env);
 int kdbus_test_message_basic(struct kdbus_test_env *env);
 int kdbus_test_message_prio(struct kdbus_test_env *env);
+int kdbus_test_message_quota(struct kdbus_test_env *env);
 int kdbus_test_metadata_ns(struct kdbus_test_env *env);
 int kdbus_test_monitor(struct kdbus_test_env *env);
 int kdbus_test_name_basic(struct kdbus_test_env *env);
diff --git a/test/test-message.c b/test/test-message.c
index 93b9d9c..e7980a1 100644
--- a/test/test-message.c
+++ b/test/test-message.c
@@ -13,6 +13,9 @@
 #include "kdbus-util.h"
 #include "kdbus-enum.h"
 #include "kdbus-test.h"
+#include "../limits.h"
+#include <sys/capability.h>
+
 
 int kdbus_test_message_basic(struct kdbus_test_env *env)
 {
@@ -124,3 +127,33 @@ int kdbus_test_message_prio(struct kdbus_test_env *env)
 
 	return TEST_OK;
 }
+
+int kdbus_test_message_quota(struct kdbus_test_env *env)
+{
+	struct kdbus_conn *a, *b;
+	uint64_t cookie = 0;
+	int ret;
+	int i;
+
+	if (geteuid() == 0) {
+		kdbus_printf("error geteuid() == 0, %s() can't be root\n",
+			     __func__);
+		return TEST_SKIP;
+	}
+
+	a = kdbus_hello(env->buspath, 0, NULL, 0);
+	b = kdbus_hello(env->buspath, 0, NULL, 0);
+
+	for (i = 0; i <= KDBUS_CONN_MAX_MSGS_PER_USER; i++) {
+		ret = kdbus_msg_send(b, NULL, ++cookie, 0, 0, 0, a->id);
+		ASSERT_RETURN(ret == 0);
+	}
+
+	ret = kdbus_msg_send(b, NULL, ++cookie, 0, 0, 0, a->id);
+	ASSERT_RETURN(ret == -ENOBUFS);
+
+	kdbus_conn_free(a);
+	kdbus_conn_free(b);
+
+	return TEST_OK;
+}
-- 
2.1.1

_______________________________________________
dbus mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dbus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.