summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2014-07-30 17:22:48 +0200
committerStef Walter <stefw@redhat.com>2014-09-25 09:48:13 +0200
commit1d899f163285708a53caf7e0a8e1920c481e87a2 (patch)
tree7f03336b5772f0add33c9cf034a41caa62ae04b9
parentdec130f0ced2c9145f3f72e423023e00b1e3113f (diff)
downloadp11-kit-1d899f163285708a53caf7e0a8e1920c481e87a2.tar.gz
remote: updated self tests for new remote functionality
-rw-r--r--p11-kit/test-mock.c3
-rw-r--r--p11-kit/test-rpc.c4
-rw-r--r--p11-kit/test-transport.c44
3 files changed, 43 insertions, 8 deletions
diff --git a/p11-kit/test-mock.c b/p11-kit/test-mock.c
index 8454f1f..13d8e06 100644
--- a/p11-kit/test-mock.c
+++ b/p11-kit/test-mock.c
@@ -57,7 +57,8 @@ test_get_info (void)
assert_num_eq (rv, CKR_OK);
assert_num_eq (MOCK_INFO.cryptokiVersion.major, info.cryptokiVersion.major);
assert_num_eq (MOCK_INFO.cryptokiVersion.minor, info.cryptokiVersion.minor);
- assert (memcmp (MOCK_INFO.manufacturerID, info.manufacturerID, sizeof (info.manufacturerID)) == 0);
+ /* in virtual modules we replace the manID */
+ /*assert (memcmp (MOCK_INFO.manufacturerID, info.manufacturerID, sizeof (info.manufacturerID)) == 0);*/
assert_num_eq (MOCK_INFO.flags, info.flags);
assert (memcmp (MOCK_INFO.libraryDescription, info.libraryDescription, sizeof (info.libraryDescription)) == 0);
assert_num_eq (MOCK_INFO.libraryVersion.major, info.libraryVersion.major);
diff --git a/p11-kit/test-rpc.c b/p11-kit/test-rpc.c
index db14500..bc51f59 100644
--- a/p11-kit/test-rpc.c
+++ b/p11-kit/test-rpc.c
@@ -908,8 +908,8 @@ invoke_in_thread (void *arg)
rv = (rpc_module->C_GetInfo) (&info);
assert_num_eq (rv, CKR_OK);
- assert (memcmp (info.manufacturerID, MOCK_INFO.manufacturerID,
- sizeof (info.manufacturerID)) == 0);
+ assert (memcmp (info.libraryDescription, MOCK_INFO.libraryDescription,
+ sizeof (info.libraryDescription)) == 0);
return NULL;
}
diff --git a/p11-kit/test-transport.c b/p11-kit/test-transport.c
index 5fde436..5294e07 100644
--- a/p11-kit/test-transport.c
+++ b/p11-kit/test-transport.c
@@ -49,18 +49,26 @@
#endif
#include <stdlib.h>
#include <stdio.h>
+#include <sys/time.h>
struct {
char *directory;
char *user_config;
char *user_modules;
+ pid_t pid; /*remote's pid */
} test;
+static int initialized = 0;
+
static void
setup_remote (void *unused)
{
- const char *data;
+ char *data;
+ char name[64+sizeof(BUILDDIR)];
+ pid_t pid;
+ struct timeval tv;
+ test.pid = -1;
test.directory = p11_test_directory ("p11-test-config");
test.user_modules = p11_path_build (test.directory, "modules", NULL);
#ifdef OS_UNIX
@@ -74,8 +82,31 @@ setup_remote (void *unused)
test.user_config = p11_path_build (test.directory, "pkcs11.conf", NULL);
p11_test_file_write (NULL, test.user_config, data, strlen (data));
- data = "remote: |" BUILDDIR "/p11-kit/p11-kit remote " BUILDDIR "/.libs/mock-two.so\n";
- p11_test_file_write (test.user_modules, "remote.module", data, strlen (data));
+ if (initialized == 0) {
+ gettimeofday(&tv, NULL);
+ snprintf(name, sizeof(name), BUILDDIR"/sock.%u.%u",
+ (unsigned)tv.tv_sec, (unsigned)tv.tv_usec);
+
+ pid = fork();
+ switch(pid) {
+ case -1:
+ assert_not_reached ();
+ case 0:
+ if (execl(BUILDDIR"/../p11-kit", BUILDDIR"/../p11-kit", "remote", "-f",
+ BUILDDIR"/.libs/mock-two.so", "-s", name, "-t", "30", NULL) == -1)
+ assert_not_reached ();
+ exit(0);
+ default:
+ break;
+ }
+
+ test.pid = pid;
+ if (asprintf(&data, "remote: %s", name) == -1)
+ assert_not_reached();
+ p11_test_file_write (test.user_modules, "remote.module", data, strlen (data));
+ free(data);
+ initialized = 1;
+ }
p11_config_user_modules = test.user_modules;
p11_config_user_file = test.user_config;
@@ -152,6 +183,7 @@ test_basic_exec (void)
assert_num_eq (rv, CKR_OK);
p11_kit_modules_release (modules);
+ initialized = 0;
}
static void *
@@ -164,8 +196,8 @@ invoke_in_thread (void *arg)
rv = (rpc_module->C_GetInfo) (&info);
assert_num_eq (rv, CKR_OK);
- assert (memcmp (info.manufacturerID, MOCK_INFO.manufacturerID,
- sizeof (info.manufacturerID)) == 0);
+ assert (memcmp (info.libraryDescription, MOCK_INFO.libraryDescription,
+ sizeof (info.libraryDescription)) == 0);
return NULL;
}
@@ -200,6 +232,7 @@ test_simultaneous_functions (void)
assert_num_eq (rv, CKR_OK);
p11_kit_modules_release (modules);
+ initialized = 0;
}
#ifdef OS_UNIX
@@ -254,6 +287,7 @@ test_fork_and_reinitialize (void)
assert_num_eq (rv, CKR_OK);
p11_kit_modules_release (modules);
+ initialized = 0;
}
#endif /* OS_UNIX */