X-Git-Url: https://git.openssl.org/?a=blobdiff_plain;f=test%2Fasynctest.c;h=5057ce1d46cf89de9dc6516049b88f70abe9dc16;hb=e96e0f8e420c42f28b0e86c9cf757f152f696321;hp=bfdf441e7cd30ae93d9792ed03e17b2de7839a62;hpb=ff75a25749c7fceaff7503af6f09d4299a052996;p=openssl.git diff --git a/test/asynctest.c b/test/asynctest.c index bfdf441e7c..5057ce1d46 100644 --- a/test/asynctest.c +++ b/test/asynctest.c @@ -1,81 +1,22 @@ /* - * Written by Matt Caswell for the OpenSSL project. - */ -/* ==================================================================== - * Copyright (c) 2015 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). + * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html */ +#ifdef _WIN32 +# include +#endif + #include #include #include #include #include <../apps/apps.h> -#if (defined(OPENSSL_SYS_UNIX) || defined(OPENSSL_SYS_CYGWIN)) && defined(OPENSSL_THREADS) -# include -# if _POSIX_VERSION >= 200112L -# define ASYNC_POSIX -# endif -#elif defined(_WIN32) -# define ASYNC_WIN -#endif - -#if !defined(ASYNC_POSIX) && !defined(ASYNC_WIN) -# define ASYNC_NULL -#endif - -#ifndef ASYNC_NULL - static int ctr = 0; static ASYNC_JOB *currjob = NULL; @@ -115,7 +56,7 @@ static int waitfd(void *args) waitctx = ASYNC_get_wait_ctx(job); if (waitctx == NULL) return 0; - if(!ASYNC_WAIT_CTX_set_wait_fd(waitctx, waitctx, MAGIC_WAIT_FD, NULL, NULL)) + if (!ASYNC_WAIT_CTX_set_wait_fd(waitctx, waitctx, MAGIC_WAIT_FD, NULL, NULL)) return 0; ASYNC_pause_job(); @@ -139,7 +80,7 @@ static int test_ASYNC_init_thread() { ASYNC_JOB *job1 = NULL, *job2 = NULL, *job3 = NULL; int funcret1, funcret2, funcret3; - ASYNC_WAIT_CTX *waitctx; + ASYNC_WAIT_CTX *waitctx = NULL; if ( !ASYNC_init_thread(2, 0) || (waitctx = ASYNC_WAIT_CTX_new()) == NULL @@ -175,7 +116,7 @@ static int test_ASYNC_start_job() { ASYNC_JOB *job = NULL; int funcret; - ASYNC_WAIT_CTX *waitctx; + ASYNC_WAIT_CTX *waitctx = NULL; ctr = 0; @@ -203,7 +144,7 @@ static int test_ASYNC_get_current_job() { ASYNC_JOB *job = NULL; int funcret; - ASYNC_WAIT_CTX *waitctx; + ASYNC_WAIT_CTX *waitctx = NULL; currjob = NULL; @@ -230,7 +171,7 @@ static int test_ASYNC_WAIT_CTX_get_all_fds() { ASYNC_JOB *job = NULL; int funcret; - ASYNC_WAIT_CTX *waitctx; + ASYNC_WAIT_CTX *waitctx = NULL; OSSL_ASYNC_FD fd = OSSL_BAD_ASYNC_FD, delfd = OSSL_BAD_ASYNC_FD; size_t numfds, numdelfds; @@ -288,7 +229,7 @@ static int test_ASYNC_block_pause() { ASYNC_JOB *job = NULL; int funcret; - ASYNC_WAIT_CTX *waitctx; + ASYNC_WAIT_CTX *waitctx = NULL; if ( !ASYNC_init_thread(1, 0) || (waitctx = ASYNC_WAIT_CTX_new()) == NULL @@ -308,25 +249,23 @@ static int test_ASYNC_block_pause() return 1; } -#endif - int main(int argc, char **argv) { - -#ifdef ASYNC_NULL - fprintf(stderr, "NULL implementation - skipping async tests\n"); -#else - CRYPTO_set_mem_debug(1); - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); - - if ( !test_ASYNC_init_thread() - || !test_ASYNC_start_job() - || !test_ASYNC_get_current_job() - || !test_ASYNC_WAIT_CTX_get_all_fds() - || !test_ASYNC_block_pause()) { - return 1; + if (!ASYNC_is_capable()) { + fprintf(stderr, + "OpenSSL build is not ASYNC capable - skipping async tests\n"); + } else { + CRYPTO_set_mem_debug(1); + CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); + + if ( !test_ASYNC_init_thread() + || !test_ASYNC_start_job() + || !test_ASYNC_get_current_job() + || !test_ASYNC_WAIT_CTX_get_all_fds() + || !test_ASYNC_block_pause()) { + return 1; + } } -#endif printf("PASS\n"); return 0; }