[gnome-keyring] [daemon] Allow running in a test environment.
- From: Stefan Walter <stefw src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-keyring] [daemon] Allow running in a test environment.
- Date: Sun, 14 Feb 2010 04:09:52 +0000 (UTC)
commit 8864fa25ef39731cfaa820018f5f517bd8e39f4d
Author: Stef Walter <stef memberwebs com>
Date: Sun Feb 14 00:53:46 2010 +0000
[daemon] Allow running in a test environment.
Setting the GNOME_KERING_TEST_PATH and GNOME_KEYRING_TEST_SERVICE
environment variables, set the data directory, and dbus service
for a gnome-keyring-daemon respectively. Must have been built
with --enable-tests
daemon/dbus/gkd-dbus-secrets.c | 17 +++++++++++++----
daemon/dbus/gkd-dbus-service.c | 17 +++++++++++++----
daemon/dbus/gkd-dbus.c | 9 ---------
daemon/pkcs11/gkd-pkcs11-auth.c | 2 +-
daemon/pkcs11/gkd-pkcs11.c | 17 ++++++++++++++++-
tests/gtest-helpers.c | 4 +---
6 files changed, 44 insertions(+), 22 deletions(-)
---
diff --git a/daemon/dbus/gkd-dbus-secrets.c b/daemon/dbus/gkd-dbus-secrets.c
index 277e9c5..76cf0ad 100644
--- a/daemon/dbus/gkd-dbus-secrets.c
+++ b/daemon/dbus/gkd-dbus-secrets.c
@@ -71,19 +71,29 @@ gkd_dbus_secrets_startup (void)
{
DBusError error = DBUS_ERROR_INIT;
dbus_uint32_t result = 0;
+ const gchar *service = NULL;
+ unsigned int flags = 0;
GP11Slot *slot;
g_return_val_if_fail (dbus_conn, FALSE);
+#ifdef WITH_TESTS
+ service = g_getenv ("GNOME_KEYRING_TEST_SERVICE");
+ if (service && service[0])
+ flags = DBUS_NAME_FLAG_ALLOW_REPLACEMENT | DBUS_NAME_FLAG_REPLACE_EXISTING;
+ else
+#endif
+ service = SECRET_SERVICE;
+
/* Figure out which slot to use */
slot = calculate_secrets_slot ();
g_return_val_if_fail (slot, FALSE);
/* Try and grab our name */
- result = dbus_bus_request_name (dbus_conn, SECRET_SERVICE, 0, &error);
+ result = dbus_bus_request_name (dbus_conn, service, flags, &error);
if (dbus_error_is_set (&error)) {
g_message ("couldn't request name '%s' on session bus: %s",
- SECRET_SERVICE, error.message);
+ service, error.message);
dbus_error_free (&error);
} else {
@@ -93,9 +103,8 @@ gkd_dbus_secrets_startup (void)
case DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER:
break;
- /* We already acquired the service name. Odd */
+ /* We already acquired the service name. */
case DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER:
- g_return_val_if_reached (FALSE);
break;
/* Another daemon is running */
diff --git a/daemon/dbus/gkd-dbus-service.c b/daemon/dbus/gkd-dbus-service.c
index 0455bbb..2719521 100644
--- a/daemon/dbus/gkd-dbus-service.c
+++ b/daemon/dbus/gkd-dbus-service.c
@@ -100,13 +100,23 @@ gkd_dbus_service_init (DBusConnection *conn)
{
dbus_uint32_t res = 0;
DBusError derr = { 0 };
+ const gchar *service = NULL;
+ unsigned int flags;
dbus_error_init (&derr);
+#ifdef WITH_TESTS
+ service = g_getenv ("GNOME_KEYRING_TEST_SERVICE");
+ if (service && service[0])
+ flags = DBUS_NAME_FLAG_ALLOW_REPLACEMENT | DBUS_NAME_FLAG_REPLACE_EXISTING;
+ else
+#endif
+ service = GNOME_KEYRING_DAEMON_SERVICE;
+
/* Try and grab our name */
- res = dbus_bus_request_name (conn, GNOME_KEYRING_DAEMON_SERVICE, 0, &derr);
+ res = dbus_bus_request_name (conn, service, flags, &derr);
if (dbus_error_is_set (&derr)) {
- g_message ("couldn't request name on session bus: %s", derr.message);
+ g_message ("couldn't request name '%s' on session bus: %s", service, derr.message);
dbus_error_free (&derr);
return;
}
@@ -115,9 +125,8 @@ gkd_dbus_service_init (DBusConnection *conn)
/* We acquired the service name */
case DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER:
break;
- /* We already acquired the service name. Odd */
+ /* We already acquired the service name. */
case DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER:
- g_return_if_reached ();
break;
/* Another daemon is running */
case DBUS_REQUEST_NAME_REPLY_IN_QUEUE:
diff --git a/daemon/dbus/gkd-dbus.c b/daemon/dbus/gkd-dbus.c
index a6d0a5f..6b469f8 100644
--- a/daemon/dbus/gkd-dbus.c
+++ b/daemon/dbus/gkd-dbus.c
@@ -64,15 +64,6 @@ gkd_dbus_setup (void)
if (dbus_conn)
return;
-#ifdef WITH_TESTS
- {
- /* If running as a test, don't do certain DBUS stuff */
- const gchar *env = g_getenv ("GNOME_KEYRING_TEST_PATH");
- if (env && env[0])
- dbus_do_session = FALSE;
- }
-#endif
-
dbus_error_init (&derr);
/* Get the dbus bus and hook up */
diff --git a/daemon/pkcs11/gkd-pkcs11-auth.c b/daemon/pkcs11/gkd-pkcs11-auth.c
index a9f519b..b4d639f 100644
--- a/daemon/pkcs11/gkd-pkcs11-auth.c
+++ b/daemon/pkcs11/gkd-pkcs11-auth.c
@@ -688,7 +688,7 @@ auth_C_Initialize (CK_VOID_PTR init_args)
return CKR_ARGUMENTS_BAD;
}
- if (!(args->flags & CKF_LIBRARY_CANT_CREATE_OS_THREADS)) {
+ if (args->flags & CKF_LIBRARY_CANT_CREATE_OS_THREADS) {
g_message ("must be able to create our own threads");
return CKR_NEED_TO_CREATE_THREADS;
}
diff --git a/daemon/pkcs11/gkd-pkcs11.c b/daemon/pkcs11/gkd-pkcs11.c
index 2475cf3..1e97169 100644
--- a/daemon/pkcs11/gkd-pkcs11.c
+++ b/daemon/pkcs11/gkd-pkcs11.c
@@ -36,6 +36,8 @@
#include "ssh-agent/gkd-ssh-agent.h"
+#include <string.h>
+
/* The top level of our internal PKCS#11 module stack */
static CK_FUNCTION_LIST_PTR pkcs11_roof = NULL;
static CK_FUNCTION_LIST_PTR pkcs11_base = NULL;
@@ -64,6 +66,7 @@ gkd_pkcs11_initialize (void)
CK_FUNCTION_LIST_PTR secret_store;
CK_FUNCTION_LIST_PTR ssh_store;
CK_FUNCTION_LIST_PTR user_store;
+ CK_C_INITIALIZE_ARGS init_args;
gboolean ret;
CK_RV rv;
@@ -93,8 +96,20 @@ gkd_pkcs11_initialize (void)
gkd_pkcs11_auth_chain_functions (pkcs11_base);
pkcs11_roof = gkd_pkcs11_auth_get_functions ();
+ memset (&init_args, 0, sizeof (init_args));
+ init_args.flags = CKF_OS_LOCKING_OK;
+
+#if WITH_TESTS
+ {
+ const gchar *path = g_getenv ("GNOME_KEYRING_TEST_PATH");
+ if (path && path[0])
+ init_args.pReserved = g_strdup_printf ("directory=\"%s\"", path);
+ }
+#endif
+
/* Initialize the whole caboodle */
- rv = (pkcs11_roof->C_Initialize) (NULL);
+ rv = (pkcs11_roof->C_Initialize) (&init_args);
+ g_free (init_args.pReserved);
if (rv != CKR_OK) {
g_warning ("couldn't initialize internal PKCS#11 stack (code: %d)", (gint)rv);
diff --git a/tests/gtest-helpers.c b/tests/gtest-helpers.c
index dd032f6..d8164fb 100644
--- a/tests/gtest-helpers.c
+++ b/tests/gtest-helpers.c
@@ -250,9 +250,7 @@ main (int argc, char* argv[])
g_thread_init (NULL);
test_path = getenv ("GNOME_KEYRING_TEST_PATH");
- if (test_path) {
- setenv ("GNOME_KEYRING_OUTSIDE_TEST", "TRUE", 1);
- } else {
+ if (!test_path) {
test_path = "/tmp/test-gnome-keyring";
setenv ("GNOME_KEYRING_TEST_PATH", test_path, 1);
g_mkdir_with_parents (test_path, 0777);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]