1 #include <event2/event.h>
2 #if defined(EVENT_EXPORT_TEST_COMPONENT_EXTRA)
3 #include "event2/http.h"
4 #include "event2/rpc.h"
5 #include <event2/dns.h>
6 #elif defined(EVENT_EXPORT_TEST_COMPONENT_PTHREADS)
7 #include <event2/thread.h>
8 #elif defined(EVENT_EXPORT_TEST_COMPONENT_OPENSSL)
9 #include <openssl/ssl.h>
10 #include <openssl/err.h>
11 #include <event2/bufferevent_ssl.h>
12 #endif
13
14 #if defined(EVENT_EXPORT_TEST_COMPONENT_EXTRA)
15 static int
test()16 test()
17 {
18 struct event_base *base = NULL;
19 struct evhttp *http = NULL;
20 struct evdns_base *dns_base = NULL;
21 struct evrpc_base *rpc_base = NULL;
22
23 base = event_base_new();
24 if (base) {
25 http = evhttp_new(base);
26 dns_base = evdns_base_new(base,
27 EVDNS_BASE_DISABLE_WHEN_INACTIVE);
28 }
29 if (http)
30 rpc_base = evrpc_init(http);
31
32 if (base)
33 event_base_free(base);
34 if (http)
35 evhttp_free(http);
36 if (rpc_base)
37 evrpc_free(rpc_base);
38 if (dns_base)
39 evdns_base_free(dns_base, 0);
40
41 return 0;
42 }
43 #elif defined(EVENT_EXPORT_TEST_COMPONENT_PTHREADS)
44 static int
test()45 test()
46 {
47 return evthread_use_pthreads();
48 }
49 #elif defined(EVENT_EXPORT_TEST_COMPONENT_OPENSSL)
50 static int
test()51 test()
52 {
53 struct event_base *base = NULL;
54 SSL_CTX *ssl_ctx = NULL;
55 SSL *ssl = NULL;
56 struct bufferevent *bev;
57 int r = 1;
58
59 SSL_library_init();
60 ERR_load_crypto_strings();
61 SSL_load_error_strings();
62 OpenSSL_add_all_algorithms();
63
64 base = event_base_new();
65 if (!base) {
66 goto error;
67 }
68
69 ssl_ctx = SSL_CTX_new(SSLv23_method());
70 if (!ssl_ctx) {
71 goto error;
72 }
73 ssl = SSL_new(ssl_ctx);
74 if (ssl == NULL) {
75 goto error;
76 }
77 bev = bufferevent_openssl_socket_new(base, -1, ssl,
78 BUFFEREVENT_SSL_CONNECTING,
79 BEV_OPT_CLOSE_ON_FREE | BEV_OPT_DEFER_CALLBACKS);
80 if (bev == NULL) {
81 goto error;
82 }
83 r = 0;
84 error:
85 if (base)
86 event_base_free(base);
87 if (ssl_ctx)
88 SSL_CTX_free(ssl_ctx);
89 if (ssl)
90 SSL_free(ssl);
91 return r;
92 }
93 #else
94 static int
test()95 test()
96 {
97 struct event_base *base = NULL;
98
99 base = event_base_new();
100 if (base)
101 event_base_free(base);
102
103 return 0;
104 }
105 #endif
106
107 int
main(int argc,char const * argv[])108 main(int argc, char const *argv[])
109 {
110 int r = 0;
111 #ifdef _WIN32
112 {
113 WSADATA wsaData;
114 WSAStartup(MAKEWORD(2, 2), &wsaData);
115 }
116 #endif
117 r = test();
118 #ifdef _WIN32
119 WSACleanup();
120 #endif
121 return r;
122 }
123