commit 155fcf546f67ce05e871a86b13131c658092c580 parent c5cda7e3a30c52a6f90657b7ab2ecb4239c9d0cf Author: Christian Grothoff <christian@grothoff.org> Date: Fri, 29 Mar 2013 16:16:02 +0000 -renaming for consistency Diffstat:
12 files changed, 208 insertions(+), 212 deletions(-)
diff --git a/src/testcurl/https/Makefile.am b/src/testcurl/https/Makefile.am @@ -15,53 +15,52 @@ AM_CPPFLAGS = \ $(LIBCURL_CPPFLAGS) check_PROGRAMS = \ - tls_daemon_options_test \ - tls_authentication_test \ - mhds_multi_daemon_test \ - mhds_get_test \ - mhds_get_test_select \ - mhds_session_info_test \ - tls_thread_mode_test \ - tls_multi_thread_mode_test \ - tls_session_time_out_test \ + test_tls_options \ + test_tls_authentication \ + test_https_multi_daemon \ + test_https_get \ + test_https_get_select \ + test_https_get_parallel \ + test_https_get_parallel_threads \ + test_https_session_info \ + test_https_time_out \ test_empty_response EXTRA_DIST = cert.pem key.pem tls_test_keys.h tls_test_common.h -# tls_authentication_test currently fails for unknown reasons TESTS = \ - tls_daemon_options_test \ - mhds_multi_daemon_test \ - mhds_get_test \ - mhds_get_test_select \ - mhds_session_info_test \ - tls_thread_mode_test \ - tls_multi_thread_mode_test \ - tls_session_time_out_test \ - tls_authentication_test \ + test_tls_options \ + test_https_multi_daemon \ + test_https_get \ + test_https_get_select \ + test_https_get_parallel \ + test_https_get_parallel_threads \ + test_https_session_info \ + test_https_time_out \ + test_tls_authentication \ test_empty_response -# cURL dependent tests -tls_session_time_out_test_SOURCES = \ - tls_session_time_out_test.c \ + +test_https_time_out_SOURCES = \ + test_https_time_out.c \ tls_test_common.c -tls_session_time_out_test_LDADD = \ +test_https_time_out_LDADD = \ $(top_builddir)/src/testcurl/libcurl_version_check.a \ $(top_builddir)/src/daemon/libmicrohttpd.la \ @LIBCURL@ -lgnutls @LIBGCRYPT_LIBS@ -tls_daemon_options_test_SOURCES = \ - tls_daemon_options_test.c \ +test_tls_options_SOURCES = \ + test_tls_options.c \ tls_test_common.c -tls_daemon_options_test_LDADD = \ +test_tls_options_LDADD = \ $(top_builddir)/src/testcurl/libcurl_version_check.a \ $(top_builddir)/src/daemon/libmicrohttpd.la \ @LIBCURL@ -lgnutls @LIBGCRYPT_LIBS@ -tls_thread_mode_test_SOURCES = \ - tls_thread_mode_test.c \ +test_https_get_parallel_SOURCES = \ + test_https_get_parallel.c \ tls_test_common.c -tls_thread_mode_test_LDADD = \ +test_https_get_parallel_LDADD = \ $(top_builddir)/src/testcurl/libcurl_version_check.a \ $(top_builddir)/src/daemon/libmicrohttpd.la \ @LIBCURL@ -lgnutls @LIBGCRYPT_LIBS@ @@ -74,51 +73,50 @@ test_empty_response_LDADD = \ $(top_builddir)/src/daemon/libmicrohttpd.la \ @LIBCURL@ -lgnutls @LIBGCRYPT_LIBS@ -tls_multi_thread_mode_test_SOURCES = \ - tls_multi_thread_mode_test.c \ +test_https_get_parallel_threads_SOURCES = \ + test_https_get_parallel_threads.c \ tls_test_common.c -tls_multi_thread_mode_test_LDADD = \ +test_https_get_parallel_threads_LDADD = \ $(top_builddir)/src/testcurl/libcurl_version_check.a \ $(top_builddir)/src/daemon/libmicrohttpd.la \ @LIBCURL@ -lgnutls @LIBGCRYPT_LIBS@ -tls_authentication_test_SOURCES = \ - tls_authentication_test.c \ +test_tls_authentication_SOURCES = \ + test_tls_authentication.c \ tls_test_common.c -tls_authentication_test_LDADD = \ +test_tls_authentication_LDADD = \ $(top_builddir)/src/testcurl/libcurl_version_check.a \ $(top_builddir)/src/daemon/libmicrohttpd.la \ @LIBCURL@ -lgnutls @LIBGCRYPT_LIBS@ -mhds_session_info_test_SOURCES = \ - mhds_session_info_test.c \ +test_https_session_info_SOURCES = \ + test_https_session_info.c \ tls_test_common.c -mhds_session_info_test_LDADD = \ +test_https_session_info_LDADD = \ $(top_builddir)/src/testcurl/libcurl_version_check.a \ $(top_builddir)/src/daemon/libmicrohttpd.la \ @LIBCURL@ -lgnutls @LIBGCRYPT_LIBS@ -mhds_multi_daemon_test_SOURCES = \ - mhds_multi_daemon_test.c \ +test_https_multi_daemon_SOURCES = \ + test_https_multi_daemon.c \ tls_test_common.c -mhds_multi_daemon_test_LDADD = \ +test_https_multi_daemon_LDADD = \ $(top_builddir)/src/testcurl/libcurl_version_check.a \ $(top_builddir)/src/daemon/libmicrohttpd.la \ @LIBCURL@ -lgnutls @LIBGCRYPT_LIBS@ -mhds_get_test_SOURCES = \ - mhds_get_test.c \ +test_https_get_SOURCES = \ + test_https_get.c \ tls_test_common.c -mhds_get_test_LDADD = \ +test_https_get_LDADD = \ $(top_builddir)/src/testcurl/libcurl_version_check.a \ $(top_builddir)/src/daemon/libmicrohttpd.la \ @LIBCURL@ -lgnutls @LIBGCRYPT_LIBS@ - -mhds_get_test_select_SOURCES = \ - mhds_get_test_select.c \ +test_https_get_select_SOURCES = \ + test_https_get_select.c \ tls_test_common.c -mhds_get_test_select_LDADD = \ +test_https_get_select_LDADD = \ $(top_builddir)/src/testcurl/libcurl_version_check.a \ $(top_builddir)/src/daemon/libmicrohttpd.la \ @LIBCURL@ -lgnutls @LIBGCRYPT_LIBS@ diff --git a/src/testcurl/https/mhds_get_test.c b/src/testcurl/https/test_https_get.c diff --git a/src/testcurl/https/test_https_get_parallel.c b/src/testcurl/https/test_https_get_parallel.c @@ -0,0 +1,162 @@ +/* + This file is part of libmicrohttpd + (C) 2007 Christian Grothoff + + libmicrohttpd is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 2, or (at your + option) any later version. + + libmicrohttpd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with libmicrohttpd; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +/** + * @file tls_thread_mode_test.c + * @brief Testcase for libmicrohttpd HTTPS GET operations + * @author Sagie Amir + * @author Christian Grothoff + */ + +#include "platform.h" +#include "microhttpd.h" +#include <sys/stat.h> +#include <limits.h> +#include <curl/curl.h> +#include <gcrypt.h> +#include "tls_test_common.h" + +extern const char srv_key_pem[]; +extern const char srv_self_signed_cert_pem[]; + +int curl_check_version (const char *req_version, ...); + +/** + * used when spawning multiple threads executing curl server requests + * + */ +static void * +https_transfer_thread_adapter (void *args) +{ + static int nonnull; + struct https_test_data *cargs = args; + int ret; + + /* time spread incomming requests */ + usleep ((useconds_t) 10.0 * ((double) rand ()) / ((double) RAND_MAX)); + ret = test_https_transfer (NULL, + cargs->cipher_suite, cargs->proto_version); + if (ret == 0) + return NULL; + return &nonnull; +} + +/** + * Test non-parallel requests. + * + * @return: 0 upon all client requests returning '0', -1 otherwise. + * + * TODO : make client_count a parameter - number of curl client threads to spawn + */ +static int +test_single_client (void *cls, const char *cipher_suite, + int curl_proto_version) +{ + void *client_thread_ret; + struct https_test_data client_args = + { NULL, cipher_suite, curl_proto_version }; + + client_thread_ret = https_transfer_thread_adapter (&client_args); + if (client_thread_ret != NULL) + return -1; + return 0; +} + +/** + * Test parallel request handling. + * + * @return: 0 upon all client requests returning '0', -1 otherwise. + * + * TODO : make client_count a parameter - numver of curl client threads to spawn + */ +static int +test_parallel_clients (void * cls, const char *cipher_suite, + int curl_proto_version) +{ + int i; + int client_count = 3; + void *client_thread_ret; + pthread_t client_arr[client_count]; + struct https_test_data client_args = + { NULL, cipher_suite, curl_proto_version }; + + for (i = 0; i < client_count; ++i) + { + if (pthread_create (&client_arr[i], NULL, + &https_transfer_thread_adapter, &client_args) != 0) + { + fprintf (stderr, "Error: failed to spawn test client threads.\n"); + return -1; + } + } + + /* check all client requests fulfilled correctly */ + for (i = 0; i < client_count; ++i) + { + if ((pthread_join (client_arr[i], &client_thread_ret) != 0) || + (client_thread_ret != NULL)) + return -1; + } + + return 0; +} + +GCRY_THREAD_OPTION_PTHREAD_IMPL; + +int +main (int argc, char *const *argv) +{ + unsigned int errorCount = 0; + + /* initialize random seed used by curl clients */ + unsigned int iseed = (unsigned int) time (NULL); + srand (iseed); + gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); + if (0 != curl_global_init (CURL_GLOBAL_ALL)) + { + fprintf (stderr, "Error: %s\n", strerror (errno)); + return -1; + } + + char *aes256_sha = "AES256-SHA"; + if (curl_uses_nss_ssl() == 0) + { + aes256_sha = "rsa_aes_256_sha"; + } + + errorCount += + test_wrap ("single threaded daemon, single client", &test_single_client, + NULL, + MHD_USE_SELECT_INTERNALLY | MHD_USE_SSL | MHD_USE_DEBUG, + aes256_sha, CURL_SSLVERSION_TLSv1, MHD_OPTION_HTTPS_MEM_KEY, + srv_key_pem, MHD_OPTION_HTTPS_MEM_CERT, + srv_self_signed_cert_pem, MHD_OPTION_END); + + errorCount += + test_wrap ("single threaded daemon, parallel clients", + &test_parallel_clients, NULL, + MHD_USE_SELECT_INTERNALLY | MHD_USE_SSL | MHD_USE_DEBUG, + aes256_sha, CURL_SSLVERSION_TLSv1, MHD_OPTION_HTTPS_MEM_KEY, + srv_key_pem, MHD_OPTION_HTTPS_MEM_CERT, + srv_self_signed_cert_pem, MHD_OPTION_END); + + curl_global_cleanup (); + return errorCount != 0; +} diff --git a/src/testcurl/https/tls_multi_thread_mode_test.c b/src/testcurl/https/test_https_get_parallel_threads.c diff --git a/src/testcurl/https/mhds_get_test_select.c b/src/testcurl/https/test_https_get_select.c diff --git a/src/testcurl/https/mhds_multi_daemon_test.c b/src/testcurl/https/test_https_multi_daemon.c diff --git a/src/testcurl/https/mhds_session_info_test.c b/src/testcurl/https/test_https_session_info.c diff --git a/src/testcurl/https/tls_session_time_out_test.c b/src/testcurl/https/test_https_time_out.c diff --git a/src/testcurl/https/tls_authentication_test.c b/src/testcurl/https/test_tls_authentication.c diff --git a/src/testcurl/https/tls_extension_test.c b/src/testcurl/https/test_tls_extensions.c diff --git a/src/testcurl/https/tls_daemon_options_test.c b/src/testcurl/https/test_tls_options.c diff --git a/src/testcurl/https/tls_thread_mode_test.c b/src/testcurl/https/tls_thread_mode_test.c @@ -1,164 +0,0 @@ -/* - This file is part of libmicrohttpd - (C) 2007 Christian Grothoff - - libmicrohttpd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 2, or (at your - option) any later version. - - libmicrohttpd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with libmicrohttpd; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -/** - * @file tls_thread_mode_test.c - * @brief Testcase for libmicrohttpd HTTPS GET operations - * @author Sagie Amir - * @author Christian Grothoff - * - * TODO: add test for external select! - */ - -#include "platform.h" -#include "microhttpd.h" -#include <sys/stat.h> -#include <limits.h> -#include <curl/curl.h> -#include <gcrypt.h> -#include "tls_test_common.h" - -extern const char srv_key_pem[]; -extern const char srv_self_signed_cert_pem[]; - -int curl_check_version (const char *req_version, ...); - -/** - * used when spawning multiple threads executing curl server requests - * - */ -static void * -https_transfer_thread_adapter (void *args) -{ - static int nonnull; - struct https_test_data *cargs = args; - int ret; - - /* time spread incomming requests */ - usleep ((useconds_t) 10.0 * ((double) rand ()) / ((double) RAND_MAX)); - ret = test_https_transfer (NULL, - cargs->cipher_suite, cargs->proto_version); - if (ret == 0) - return NULL; - return &nonnull; -} - -/** - * Test non-parallel requests. - * - * @return: 0 upon all client requests returning '0', -1 otherwise. - * - * TODO : make client_count a parameter - numver of curl client threads to spawn - */ -static int -test_single_client (void *cls, const char *cipher_suite, - int curl_proto_version) -{ - void *client_thread_ret; - struct https_test_data client_args = - { NULL, cipher_suite, curl_proto_version }; - - client_thread_ret = https_transfer_thread_adapter (&client_args); - if (client_thread_ret != NULL) - return -1; - return 0; -} - -/** - * Test parallel request handling. - * - * @return: 0 upon all client requests returning '0', -1 otherwise. - * - * TODO : make client_count a parameter - numver of curl client threads to spawn - */ -static int -test_parallel_clients (void * cls, const char *cipher_suite, - int curl_proto_version) -{ - int i; - int client_count = 3; - void *client_thread_ret; - pthread_t client_arr[client_count]; - struct https_test_data client_args = - { NULL, cipher_suite, curl_proto_version }; - - for (i = 0; i < client_count; ++i) - { - if (pthread_create (&client_arr[i], NULL, - &https_transfer_thread_adapter, &client_args) != 0) - { - fprintf (stderr, "Error: failed to spawn test client threads.\n"); - return -1; - } - } - - /* check all client requests fulfilled correctly */ - for (i = 0; i < client_count; ++i) - { - if ((pthread_join (client_arr[i], &client_thread_ret) != 0) || - (client_thread_ret != NULL)) - return -1; - } - - return 0; -} - -GCRY_THREAD_OPTION_PTHREAD_IMPL; - -int -main (int argc, char *const *argv) -{ - unsigned int errorCount = 0; - - /* initialize random seed used by curl clients */ - unsigned int iseed = (unsigned int) time (NULL); - srand (iseed); - gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); - if (0 != curl_global_init (CURL_GLOBAL_ALL)) - { - fprintf (stderr, "Error: %s\n", strerror (errno)); - return -1; - } - - char *aes256_sha = "AES256-SHA"; - if (curl_uses_nss_ssl() == 0) - { - aes256_sha = "rsa_aes_256_sha"; - } - - errorCount += - test_wrap ("single threaded daemon, single client", &test_single_client, - NULL, - MHD_USE_SELECT_INTERNALLY | MHD_USE_SSL | MHD_USE_DEBUG, - aes256_sha, CURL_SSLVERSION_TLSv1, MHD_OPTION_HTTPS_MEM_KEY, - srv_key_pem, MHD_OPTION_HTTPS_MEM_CERT, - srv_self_signed_cert_pem, MHD_OPTION_END); - - errorCount += - test_wrap ("single threaded daemon, parallel clients", - &test_parallel_clients, NULL, - MHD_USE_SELECT_INTERNALLY | MHD_USE_SSL | MHD_USE_DEBUG, - aes256_sha, CURL_SSLVERSION_TLSv1, MHD_OPTION_HTTPS_MEM_KEY, - srv_key_pem, MHD_OPTION_HTTPS_MEM_CERT, - srv_self_signed_cert_pem, MHD_OPTION_END); - - curl_global_cleanup (); - return errorCount != 0; -}