[systemd-devel] [PATCH 1/2] test: sync the policy tests with the recent activators and policy holders changes

Djalal Harouni tixxdz at opendz.org
Mon Aug 4 18:09:08 PDT 2014


Recent commit 7015a1e6746e0c2 prevents special-purpose connections from
owning names, so update the test-kdbus-policy tests to follow and test
these changes.

Create a new policy holder connection which will register the policy for
an X name, and make the first conn_db[0] connection own that name.

Signed-off-by: Djalal Harouni <tixxdz at opendz.org>
---
 test/test-kdbus-policy.c | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/test/test-kdbus-policy.c b/test/test-kdbus-policy.c
index a2430f2..e0bd619 100644
--- a/test/test-kdbus-policy.c
+++ b/test/test-kdbus-policy.c
@@ -39,8 +39,9 @@
 
 /**
  * Check a list of connections against conn_db[0]
- * conn_db[0] will be the policy holder and it will set
- * different policy accesses.
+ * conn_db[0] will own the name "foo.test.policy-test" and the
+ * policy holder connection for this name will update the policy
+ * entries, so different use cases can be tested.
  */
 static struct conn **conn_db;
 
@@ -269,6 +270,7 @@ static int kdbus_check_policy(char *bus)
 	int i;
 	int ret;
 	struct conn *activator = NULL;
+	struct conn *policy_holder = NULL;
 
 	conn_db = calloc(MAX_CONN, sizeof(struct conn *));
 	if (!conn_db)
@@ -276,8 +278,9 @@ static int kdbus_check_policy(char *bus)
 
 	memset(conn_db, 0, MAX_CONN * sizeof(struct conn *));
 
-	ret = kdbus_register_policy_holder(bus, POLICY_NAME, &conn_db[0]);
-	printf("-- TEST 1) register '%s' as policy holder ",
+	ret = kdbus_register_policy_holder(bus, POLICY_NAME,
+					   &policy_holder);
+	printf("-- TEST 1) register a policy holder for '%s' ",
 		POLICY_NAME);
 	if (ret < 0) {
 		printf("FAILED\n");
@@ -307,6 +310,15 @@ static int kdbus_check_policy(char *bus)
 		}
 	}
 
+	/* The name receiver */
+	conn_db[0] = kdbus_hello(bus, 0, NULL, 0);
+	if (!conn_db[0]) {
+		ret = -1;
+		goto out_free_connections;
+	}
+
+	add_match_empty(conn_db[0]->fd);
+
 	ret = name_acquire(conn_db[0], POLICY_NAME, 0);
 	printf("-- TEST 3) acquire '%s' name..... ", POLICY_NAME);
 	if (ret < 0) {
@@ -344,9 +356,9 @@ static int kdbus_check_policy(char *bus)
 	 * Restrict the policy and purge cache entries where the
 	 * conn_db[0] is the destination.
 	 */
-	ret = kdbus_set_policy_talk(conn_db[0], POLICY_NAME,
+	ret = kdbus_set_policy_talk(policy_holder, POLICY_NAME,
 				    geteuid(), KDBUS_POLICY_ACCESS_USER);
-	printf("-- TEST 6) restricting policy '%s' TALK access ",
+	printf("-- TEST 6) restricting '%s' policy TALK access ",
 		POLICY_NAME);
 	if (ret < 0) {
 		printf("FAILED\n");
@@ -374,6 +386,7 @@ static int kdbus_check_policy(char *bus)
 
 out_free_connections:
 	kdbus_free_conn(activator);
+	kdbus_free_conn(policy_holder);
 
 	for (i = 0; i < MAX_CONN; i++)
 		kdbus_free_conn(conn_db[i]);
-- 
1.9.3



More information about the systemd-devel mailing list