From 41e808deca2ad8654b6f8528ae3492013951fcbd Mon Sep 17 00:00:00 2001 From: Not Zed Date: Wed, 23 Apr 2003 01:34:03 +0000 Subject: ** Should fix #41629, #41448, et al. 2003-04-22 Not Zed ** Should fix #41629, #41448, et al. * tests/folder/test10.c: a new torture test for object bag creation/unreffing. * camel-url.c (camel_url_copy): new function to copy a url. * camel-object.c (camel_object_bag_new): add arguments for key copy and key free functions. Fixed all callers. (camel_object_bag_destroy): fix a memleak, free the bag key. (camel_object_bag_get, camel_object_bag_reserve) (camel_object_bag_abort, save_bag, save_object): Make the key a void type, rather than char *. (camel_object_bag_add): As above, and also copy the key. (camel_object_bag_remove_unlocked): free the key using bag->free_key. * camel-session.c (register_provider) (camel_session_destroy_provider, get_service): Changed to use an object bag instead of a hash table for the service 'cache'. (service_cache_remove): Removed, no longer required. svn path=/trunk/; revision=20930 --- camel/tests/folder/Makefile.am | 6 ++- camel/tests/folder/README | 1 + camel/tests/folder/test10.c | 115 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 camel/tests/folder/test10.c (limited to 'camel/tests') diff --git a/camel/tests/folder/Makefile.am b/camel/tests/folder/Makefile.am index c178d5fdb0..e49fd92a87 100644 --- a/camel/tests/folder/Makefile.am +++ b/camel/tests/folder/Makefile.am @@ -19,8 +19,10 @@ LDADD = \ check_PROGRAMS = \ test1 test2 test3 \ test4 test5 test6 \ - test7 test8 test9 + test7 test8 test9 \ + test10 TESTS = test1 test2 test3 \ test4 test5 test6 \ - test7 test8 test9 + test7 test8 test9 \ + test10 diff --git a/camel/tests/folder/README b/camel/tests/folder/README index 4fed421413..3ab64ecd1c 100644 --- a/camel/tests/folder/README +++ b/camel/tests/folder/README @@ -9,3 +9,4 @@ test7 basic folder operations, NNTP test8 multithreaded folder torture test, local test9 filtering +test10 multithreaded folder/store object bag torture test diff --git a/camel/tests/folder/test10.c b/camel/tests/folder/test10.c new file mode 100644 index 0000000000..6ae9d9856d --- /dev/null +++ b/camel/tests/folder/test10.c @@ -0,0 +1,115 @@ +/* threaded folder testing */ + +#include + +#include "camel-test.h" +#include "folders.h" +#include "messages.h" +#include "session.h" + +#include +#include +#include + +#define MAX_LOOP (10000) +#define MAX_THREADS (5) + +#define d(x) + +#ifndef ENABLE_THREADS +int main(int argc, char **argv) +{ + printf("Test %s is only compiled with threads enabled\n", argv[0]); + return 77; +} +#else + +#include + + +#define ARRAY_LEN(x) (sizeof(x)/sizeof(x[0])) + +static char *local_providers[] = { + "mbox", + "mh", + "maildir" +}; + +static char *path; +static CamelSession *session; +static int testid; + +static void * +worker(void *d) +{ + int i; + CamelException *ex = camel_exception_new(); + CamelStore *store; + CamelFolder *folder; + + for (i=0;i