diff options
author | yuangongji <82787816@qq.com> | 2019-11-14 18:28:31 +0800 |
---|---|---|
committer | yuangongji <82787816@qq.com> | 2019-11-14 18:28:31 +0800 |
commit | cd15112b620feadafe8fd3531043870a5c19a4a6 (patch) | |
tree | dbf77f66869155d055bce232c0a0714206c6329b /test-export/test-export.c | |
parent | dc4be869d5009f38e0ef02ff07dd799f9c2fef2f (diff) | |
download | libevent-cd15112b620feadafe8fd3531043870a5c19a4a6.tar.gz |
cmake: test for find_package()
Diffstat (limited to 'test-export/test-export.c')
-rw-r--r-- | test-export/test-export.c | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/test-export/test-export.c b/test-export/test-export.c new file mode 100644 index 00000000..90917775 --- /dev/null +++ b/test-export/test-export.c @@ -0,0 +1,122 @@ +#include <event2/event.h> +#if defined(EVENT_EXPORT_TEST_COMPONENT_EXTRA) +#include "event2/http.h" +#include "event2/rpc.h" +#include <event2/dns.h> +#elif defined(EVENT_EXPORT_TEST_COMPONENT_PTHREADS) +#include <event2/thread.h> +#elif defined(EVENT_EXPORT_TEST_COMPONENT_OPENSSL) +#include <openssl/ssl.h> +#include <openssl/err.h> +#include <event2/bufferevent_ssl.h> +#endif + +#if defined(EVENT_EXPORT_TEST_COMPONENT_EXTRA) +static int +test() +{ + struct event_base *base = NULL; + struct evhttp *http = NULL; + struct evdns_base *dns_base = NULL; + struct evrpc_base *rpc_base = NULL; + + base = event_base_new(); + if (base) { + http = evhttp_new(base); + dns_base = evdns_base_new(base, + EVDNS_BASE_DISABLE_WHEN_INACTIVE); + } + if (http) + rpc_base = evrpc_init(http); + + if (base) + event_base_free(base); + if (http) + evhttp_free(http); + if (rpc_base) + evrpc_free(rpc_base); + if (dns_base) + evdns_base_free(dns_base, 0); + + return 0; +} +#elif defined(EVENT_EXPORT_TEST_COMPONENT_PTHREADS) +static int +test() +{ + return evthread_use_pthreads(); +} +#elif defined(EVENT_EXPORT_TEST_COMPONENT_OPENSSL) +static int +test() +{ + struct event_base *base = NULL; + SSL_CTX *ssl_ctx = NULL; + SSL *ssl = NULL; + struct bufferevent *bev; + int r = 1; + + SSL_library_init(); + ERR_load_crypto_strings(); + SSL_load_error_strings(); + OpenSSL_add_all_algorithms(); + + base = event_base_new(); + if (!base) { + goto error; + } + + ssl_ctx = SSL_CTX_new(SSLv23_method()); + if (!ssl_ctx) { + goto error; + } + ssl = SSL_new(ssl_ctx); + if (ssl == NULL) { + goto error; + } + bev = bufferevent_openssl_socket_new(base, -1, ssl, + BUFFEREVENT_SSL_CONNECTING, + BEV_OPT_CLOSE_ON_FREE | BEV_OPT_DEFER_CALLBACKS); + if (bev == NULL) { + goto error; + } + r = 0; +error: + if (base) + event_base_free(base); + if (ssl_ctx) + SSL_CTX_free(ssl_ctx); + if (ssl) + SSL_free(ssl); + return r; +} +#else +static int +test() +{ + struct event_base *base = NULL; + + base = event_base_new(); + if (base) + event_base_free(base); + + return 0; +} +#endif + +int +main(int argc, char const *argv[]) +{ + int r = 0; +#ifdef _WIN32 + { + WSADATA wsaData; + WSAStartup(MAKEWORD(2, 2), &wsaData); + } +#endif + r = test(); +#ifdef _WIN32 + WSACleanup(); +#endif + return r; +} |