gint main (gint argc, gchar **argv) { CamelSession *session; gint i; gchar *path; camel_test_init (argc, argv); camel_test_provider_init (1, imap_drivers); /* clear out any camel-test data */ system("/bin/rm -rf /tmp/camel-test"); session = camel_test_session_new ("/tmp/camel-test"); /* todo: cross-check everything with folder_info checks as well */ /* todo: subscriptions? */ for (i = 0; i < G_N_ELEMENTS (remote_providers); i++) { path = getenv (remote_providers[i]); if (path == NULL) { printf("Aborted (ignored).\n"); printf("Set '%s', to re-run test.\n", remote_providers[i]); /* tells make check to ignore us in the total count */ _exit (77); } /*camel_test_nonfatal("The IMAP code is just rooted");*/ test_folder_basic (session, path, FALSE, FALSE); /*camel_test_fatal();*/ } g_object_unref (session); return 0; }
int main(int argc, char **argv) { CamelSession *session; CamelException *ex; int i; camel_test_init(argc, argv); camel_test_provider_init(1, local_drivers); /* clear out any camel-test data */ system("/bin/rm -rf /tmp/camel-test"); ex = camel_exception_new(); session = camel_test_session_new ("/tmp/camel-test"); /* we iterate over all stores we want to test, with indexing or indexing turned on or off */ for (i=0;i<ARRAY_LEN(stores);i++) { char *name = stores[i]; test_folder_message_ops(session, name, TRUE, "testbox"); } /* create a pseudo-spool file, and check that */ creat("/tmp/camel-test/testbox", 0600); test_folder_message_ops(session, "spool:///tmp/camel-test/testbox", TRUE, "INBOX"); check_unref(session, 1); camel_exception_free(ex); return 0; }
gint main (gint argc, gchar **argv) { CamelSession *session; gint i; gchar *path; camel_test_init (argc, argv); camel_test_provider_init (1, nntp_drivers); /* clear out any camel-test data */ system ("/bin/rm -rf /tmp/camel-test"); session = camel_test_session_new ("/tmp/camel-test"); for (i = 0; i < G_N_ELEMENTS (remote_providers); i++) { path = getenv (remote_providers[i]); if (path == NULL) { printf ("Aborted (ignored).\n"); printf ("Set '%s', to re-run test.\n", remote_providers[i]); /* tells make check to ignore us in the total count */ _exit (77); } camel_test_nonfatal ("Dont know how many tests apply to NNTP"); test_folder_message_ops (session, path, FALSE, "testbox"); camel_test_fatal (); } check_unref (session, 1); return 0; }
gint main (gint argc, gchar **argv) { gint i, j; GThread *threads[MAX_THREADS]; camel_test_init (argc, argv); camel_test_provider_init (1, local_drivers); /* clear out any camel-test data */ system ("/bin/rm -rf /tmp/camel-test"); session = camel_test_session_new ("/tmp/camel-test"); for (testid = 0; testid < 2; testid++) { if (testid == 0) camel_test_start ("store and folder bag torture test, stacked references"); else camel_test_start ("store and folder bag torture test, unstacked references"); for (j = 0; j < G_N_ELEMENTS (local_providers); j++) { camel_test_push ("provider %s", local_providers[j]); path = g_strdup_printf ("%s:///tmp/camel-test/%s", local_providers[j], local_providers[j]); for (i = 0; i < MAX_THREADS; i++) { GError *error = NULL; threads[i] = g_thread_create (worker, NULL, TRUE, &error); if (error) { fprintf (stderr, "%s: Failed to create a thread: %s\n", G_STRFUNC, error->message); g_error_free (error); } } for (i = 0; i < MAX_THREADS; i++) { if (threads[i]) g_thread_join (threads[i]); } test_free (path); camel_test_pull (); } camel_test_end (); } g_object_unref (session); return 0; }
int main(int argc, char **argv) { CamelException *ex; int i, j; pthread_t threads[MAX_THREADS]; camel_test_init(argc, argv); camel_test_provider_init(1, local_drivers); ex = camel_exception_new(); /* clear out any camel-test data */ system("/bin/rm -rf /tmp/camel-test"); session = camel_test_session_new ("/tmp/camel-test"); for (testid=0;testid<2;testid++) { if (testid == 0) camel_test_start("store and folder bag torture test, stacked references"); else camel_test_start("store and folder bag torture test, unstacked references"); for (j=0;j<ARRAY_LEN(local_providers);j++) { camel_test_push("provider %s", local_providers[j]); path = g_strdup_printf("%s:///tmp/camel-test/%s", local_providers[j], local_providers[j]); for (i=0;i<MAX_THREADS;i++) pthread_create(&threads[i], 0, worker, NULL); for (i=0;i<MAX_THREADS;i++) pthread_join(threads[i], NULL); test_free(path); camel_test_pull(); } camel_test_end(); } camel_object_unref((CamelObject *)session); camel_exception_free(ex); return 0; }
gint main (gint argc, gchar **argv) { CamelSession *session; gint i, j, index; gchar *path; CamelStore *store; CamelService *service; GThread *threads[MAX_THREADS]; struct _threadinfo *info; CamelFolder *folder; GPtrArray *uids; GError *error = NULL; camel_test_init (argc, argv); camel_test_provider_init (1, local_drivers); /* clear out any camel-test data */ system ("/bin/rm -rf /tmp/camel-test"); session = camel_test_session_new ("/tmp/camel-test"); for (j = 0; j < G_N_ELEMENTS (local_providers); j++) { for (index = 0; index < 2; index++) { gchar *uid; path = g_strdup_printf ("method %s %s", local_providers[j], index?"indexed":"nonindexed"); camel_test_start (path); test_free (path); push ("trying %s index %d", local_providers[j], index); uid = g_strdup_printf ("test-uid-%d", j); path = g_strdup_printf ("%s:///tmp/camel-test/%s", local_providers[j], local_providers[j]); service = camel_session_add_service ( session, uid, path, CAMEL_PROVIDER_STORE, &error); g_free (uid); check_msg (error == NULL, "%s", error->message); check (CAMEL_IS_STORE (service)); store = CAMEL_STORE (service); test_free (path); if (index == 0) folder = camel_store_get_folder_sync ( store, "testbox", CAMEL_STORE_FOLDER_CREATE, NULL, &error); else folder = camel_store_get_folder_sync ( store, "testbox", CAMEL_STORE_FOLDER_CREATE | CAMEL_STORE_FOLDER_BODY_INDEX, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); for (i = 0; i < MAX_THREADS; i++) { GError *error = NULL; info = g_malloc (sizeof (*info)); info->id = i * MAX_MESSAGES; info->folder = folder; threads[i] = g_thread_try_new (NULL, worker, info, &error); check_msg (error == NULL, "g_thread_try_new() failed: %s", error->message); } for (i = 0; i < MAX_THREADS; i++) { if (threads[i]) { info = g_thread_join (threads[i]); g_free (info); } } pull (); push ("deleting remaining messages"); uids = camel_folder_get_uids (folder); for (i = 0; i < uids->len; i++) { camel_folder_delete_message (folder, uids->pdata[i]); } camel_folder_free_uids (folder, uids); camel_folder_expunge_sync (folder, NULL, &error); check_msg (error == NULL, "%s", error->message); check_unref (folder, 1); camel_store_delete_folder_sync ( store, "testbox", NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); check_unref (store, 1); pull (); camel_test_end (); } } g_object_unref (session); return 0; }
gint main (gint argc, gchar **argv) { CamelService *service; CamelSession *session; CamelStore *store; CamelFolder *folder; CamelMimeMessage *msg; gint i, j; CamelStream *mbox; CamelFilterDriver *driver; GError *error = NULL; camel_test_init (argc, argv); camel_test_provider_init (1, local_drivers); /* clear out any camel-test data */ system ("/bin/rm -rf /tmp/camel-test"); camel_test_start ("Simple filtering of mbox"); session = camel_test_session_new ("/tmp/camel-test"); /* todo: cross-check everything with folder_info checks as well */ /* todo: work out how to do imap/pop/nntp tests */ push ("getting store"); service = camel_session_add_service ( session, "test-uid", "mbox:///tmp/camel-test/mbox", CAMEL_PROVIDER_STORE, &error); check_msg (error == NULL, "getting store: %s", error->message); check (CAMEL_IS_STORE (service)); store = CAMEL_STORE (service); g_clear_error (&error); pull (); push ("Creating output folders"); for (i = 0; i < G_N_ELEMENTS (mailboxes); i++) { push ("creating %s", mailboxes[i].name); mailboxes[i].folder = folder = camel_store_get_folder_sync ( store, mailboxes[i].name, CAMEL_STORE_FOLDER_CREATE, NULL, &error); check_msg (error == NULL, "%s", error->message); check (folder != NULL); /* we need an empty folder for this to work */ test_folder_counts (folder, 0, 0); g_clear_error (&error); pull (); } pull (); /* append a bunch of messages with specific content */ push ("creating 100 test message mbox"); mbox = camel_stream_fs_new_with_name ("/tmp/camel-test/inbox", O_WRONLY|O_CREAT|O_EXCL, 0600, NULL); for (j = 0; j < 100; j++) { gchar *content, *subject; push ("creating test message"); msg = test_message_create_simple (); content = g_strdup_printf ("data%d content\n", j); test_message_set_content_simple ((CamelMimePart *)msg, 0, "text/plain", content, strlen (content)); test_free (content); subject = g_strdup_printf ("Test%d message%d subject", j, 100-j); camel_mime_message_set_subject (msg, subject); camel_mime_message_set_date (msg, j * 60 * 24, 0); pull (); camel_stream_write_string (mbox, "From \n", NULL, NULL); check (camel_data_wrapper_write_to_stream_sync ( CAMEL_DATA_WRAPPER (msg), mbox, NULL, NULL) != -1); #if 0 push ("appending simple message %d", j); camel_folder_append_message (folder, msg, NULL, ex); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); pull (); #endif test_free (subject); check_unref (msg, 1); } check (camel_stream_close (mbox, NULL, NULL) != -1); check_unref (mbox, 1); pull (); push ("Building filters"); driver = camel_filter_driver_new (session); camel_filter_driver_set_folder_func (driver, get_folder, NULL); for (i = 0; i < G_N_ELEMENTS (rules); i++) { camel_filter_driver_add_rule (driver, rules[i].name, rules[i].match, rules[i].action); } pull (); push ("Executing filters"); camel_filter_driver_set_default_folder (driver, mailboxes[0].folder); #if 0 /* FIXME We no longer filter mbox files. */ camel_filter_driver_filter_mbox ( driver, "/tmp/camel-test/inbox", NULL, NULL, &error); #endif check_msg (error == NULL, "%s", error->message); /* now need to check the folder counts/etc */ check_unref (driver, 1); g_clear_error (&error); pull (); /* this tests that invalid rules are caught */ push ("Testing broken match rules"); for (i = 0; i < G_N_ELEMENTS (brokens); i++) { push ("rule %s", brokens[i].match); driver = camel_filter_driver_new (session); camel_filter_driver_set_folder_func (driver, get_folder, NULL); camel_filter_driver_add_rule (driver, brokens[i].name, brokens[i].match, brokens[i].action); #if 0 /* FIXME We no longer filter mbox files. */ camel_filter_driver_filter_mbox ( driver, "/tmp/camel-test/inbox", NULL, NULL, &error); #endif check (error != NULL); check_unref (driver, 1); g_clear_error (&error); pull (); } pull (); push ("Testing broken action rules"); for (i = 0; i < G_N_ELEMENTS (brokena); i++) { push ("rule %s", brokena[i].action); driver = camel_filter_driver_new (session); camel_filter_driver_set_folder_func (driver, get_folder, NULL); camel_filter_driver_add_rule (driver, brokena[i].name, brokena[i].match, brokena[i].action); #if 0 /* FIXME We no longer filter mbox files. */ camel_filter_driver_filter_mbox ( driver, "/tmp/camel-test/inbox", NULL, NULL, &error); #endif check (error != NULL); check_unref (driver, 1); g_clear_error (&error); pull (); } pull (); for (i = 0; i < G_N_ELEMENTS (mailboxes); i++) { check_unref (mailboxes[i].folder, 1); } check_unref (store, 1); check_unref (session, 1); camel_test_end (); return 0; }
gint main (gint argc, gchar **argv) { CamelFolder *f1, *f2; CamelStore *store; CamelService *service; CamelFolderInfo *fi; GError *error = NULL; camel_test_init (argc, argv); camel_test_provider_init (1, local_drivers); /* clear out any camel-test data */ system ("/bin/rm -rf /tmp/camel-test"); session = camel_test_session_new ("/tmp/camel-test"); service = camel_session_add_service ( session, "test-uid", "maildir:///tmp/camel-test/maildir", CAMEL_PROVIDER_STORE, NULL); store = CAMEL_STORE (service); camel_test_start ("Maildir backward compatability tests"); camel_test_push ("./ prefix path, one level"); f1 = camel_store_get_folder_sync ( store, "testbox", CAMEL_STORE_FOLDER_CREATE, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); f2 = camel_store_get_folder_sync ( store, "./testbox", CAMEL_STORE_FOLDER_CREATE, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); check (f1 == f2); check_unref (f2, 2); check_unref (f1, 1); camel_test_pull (); camel_test_push ("./ prefix path, one level, no create"); f1 = camel_store_get_folder_sync ( store, "testbox2", CAMEL_STORE_FOLDER_CREATE, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); f2 = camel_store_get_folder_sync ( store, "./testbox2", 0, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); check (f1 == f2); check_unref (f2, 2); check_unref (f1, 1); camel_test_pull (); camel_test_push ("./ prefix path, two levels"); f1 = camel_store_get_folder_sync ( store, "testbox/foo", CAMEL_STORE_FOLDER_CREATE, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); f2 = camel_store_get_folder_sync ( store, "./testbox/foo", CAMEL_STORE_FOLDER_CREATE, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); check (f1 == f2); check_unref (f2, 2); check_unref (f1, 1); camel_test_pull (); camel_test_push ("'.' == Inbox"); f2 = camel_store_get_inbox_folder_sync (store, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); f1 = camel_store_get_folder_sync (store, ".", 0, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); check (f1 == f2); check_unref (f2, 2); check_unref (f1, 1); camel_test_pull (); camel_test_push ("folder info, recursive"); fi = camel_store_get_folder_info_sync ( store, "", CAMEL_STORE_FOLDER_INFO_RECURSIVE, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); check (fi != NULL); check_fi (fi, fi_list_1, G_N_ELEMENTS (fi_list_1)); camel_test_pull (); camel_test_push ("folder info, flat"); fi = camel_store_get_folder_info_sync (store, "", 0, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); check (fi != NULL); check_fi (fi, fi_list_2, G_N_ELEMENTS (fi_list_2)); camel_test_pull (); camel_test_push ("folder info, recursive, non root"); fi = camel_store_get_folder_info_sync ( store, "testbox", CAMEL_STORE_FOLDER_INFO_RECURSIVE, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); check (fi != NULL); check_fi (fi, fi_list_3, G_N_ELEMENTS (fi_list_3)); camel_test_pull (); check_unref (store, 1); check_unref (session, 1); camel_test_end (); return 0; }
gint main (gint argc, gchar **argv) { CamelService *service; CamelSession *session; CamelStore *store; CamelFolder *folder; CamelMimeMessage *msg; gint i, j; gint indexed; GPtrArray *uids; GError *error = NULL; camel_test_init (argc, argv); camel_test_provider_init (1, local_drivers); /* clear out any camel-test data */ system ("/bin/rm -rf /tmp/camel-test"); session = camel_test_session_new ("/tmp/camel-test"); /* todo: cross-check everything with folder_info checks as well */ /* todo: work out how to do imap/pop/nntp tests */ /* we iterate over all stores we want to test, with indexing or indexing turned on or off */ for (i = 0; i < G_N_ELEMENTS (stores); i++) { const gchar *name = stores[i]; for (indexed = 0; indexed < 2; indexed++) { gchar *what = g_strdup_printf ("folder search: %s (%sindexed)", name, indexed?"":"non-"); gchar *uid; gint flags; camel_test_start (what); test_free (what); push ("getting store"); uid = g_strdup_printf ("test-uid-%d", i); service = camel_session_add_service ( session, uid, stores[i], CAMEL_PROVIDER_STORE, &error); g_free (uid); check_msg (error == NULL, "adding store: %s", error->message); check (CAMEL_IS_STORE (service)); store = CAMEL_STORE (service); g_clear_error (&error); pull (); push ("creating %sindexed folder", indexed?"":"non-"); if (indexed) flags = CAMEL_STORE_FOLDER_CREATE | CAMEL_STORE_FOLDER_BODY_INDEX; else flags = CAMEL_STORE_FOLDER_CREATE; folder = camel_store_get_folder_sync ( store, "testbox", flags, NULL, &error); check_msg (error == NULL, "%s", error->message); check (folder != NULL); /* we need an empty folder for this to work */ test_folder_counts (folder, 0, 0); g_clear_error (&error); pull (); /* append a bunch of messages with specific content */ push ("appending 100 test messages"); for (j = 0; j < 100; j++) { gchar *content, *subject; push ("creating test message"); msg = test_message_create_simple (); content = g_strdup_printf ("data%d content\n", j); test_message_set_content_simple ( (CamelMimePart *) msg, 0, "text/plain", content, strlen (content)); test_free (content); subject = g_strdup_printf ("Test%d message%d subject", j, 100 - j); camel_mime_message_set_subject (msg, subject); camel_mime_message_set_date (msg, j * 60 * 24, 0); pull (); push ("appending simple message %d", j); camel_folder_append_message_sync ( folder, msg, NULL, NULL, NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); pull (); test_free (subject); check_unref (msg, 1); } pull (); push ("Setting up some flags &c"); uids = camel_folder_get_uids (folder); check (uids->len == 100); for (j = 0; j < 100; j++) { gchar *uid = uids->pdata[j]; if ((j / 13) * 13 == j) { camel_folder_set_message_user_flag (folder, uid, "every13", TRUE); } if ((j / 17) * 17 == j) { camel_folder_set_message_user_flag (folder, uid, "every17", TRUE); } if ((j / 7) * 7 == j) { gchar *tag = g_strdup_printf ("7tag%d", j / 7); camel_folder_set_message_user_tag (folder, uid, "every7", tag); test_free (tag); } if ((j / 11) * 11 == j) { camel_folder_set_message_user_tag (folder, uid, "every11", "11tag"); } } camel_folder_free_uids (folder, uids); pull (); camel_test_nonfatal ("Index not guaranteed to be accurate before sync: should be fixed eventually"); push ("Search before sync"); run_search (folder, 100); pull (); camel_test_fatal (); push ("syncing folder, searching"); camel_folder_synchronize_sync ( folder, FALSE, NULL, NULL); run_search (folder, 100); pull (); push ("syncing wiht expunge, search"); camel_folder_synchronize_sync ( folder, TRUE, NULL, NULL); run_search (folder, 100); pull (); push ("deleting every 2nd message"); uids = camel_folder_get_uids (folder); check (uids->len == 100); for (j = 0; j < uids->len; j+=2) { camel_folder_delete_message (folder, uids->pdata[j]); } camel_folder_free_uids (folder, uids); run_search (folder, 100); push ("syncing"); camel_folder_synchronize_sync ( folder, FALSE, NULL, &error); check_msg (error == NULL, "%s", error->message); run_search (folder, 100); g_clear_error (&error); pull (); push ("expunging"); camel_folder_expunge_sync (folder, NULL, &error); check_msg (error == NULL, "%s", error->message); run_search (folder, 50); g_clear_error (&error); pull (); pull (); push ("closing and re-opening folder"); check_unref (folder, 1); folder = camel_store_get_folder_sync ( store, "testbox", flags & ~(CAMEL_STORE_FOLDER_CREATE), NULL, &error); check_msg (error == NULL, "%s", error->message); check (folder != NULL); g_clear_error (&error); push ("deleting remaining messages"); uids = camel_folder_get_uids (folder); check (uids->len == 50); for (j = 0; j < uids->len; j++) { camel_folder_delete_message (folder, uids->pdata[j]); } camel_folder_free_uids (folder, uids); run_search (folder, 50); push ("syncing"); camel_folder_synchronize_sync ( folder, FALSE, NULL, &error); check_msg (error == NULL, "%s", error->message); run_search (folder, 50); g_clear_error (&error); pull (); push ("expunging"); camel_folder_expunge_sync (folder, NULL, &error); check_msg (error == NULL, "%s", error->message); run_search (folder, 0); g_clear_error (&error); pull (); pull (); check_unref (folder, 1); pull (); push ("deleting test folder, with no messages in it"); camel_store_delete_folder_sync ( store, "testbox", NULL, &error); check_msg (error == NULL, "%s", error->message); g_clear_error (&error); pull (); check_unref (store, 1); camel_test_end (); } } check_unref (session, 1); return 0; }