mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-15 07:15:03 -04:00
Allow more than one copy of regression tests to run at once
Mostly this was a matter of just removing all the hardwired ports in the test code. The http/connection_retry test is still a little screwy, though.
This commit is contained in:
parent
195214360c
commit
a97320ac57
@ -470,7 +470,10 @@ test_bufferevent_connect(void *arg)
|
|||||||
struct evconnlistener *lev=NULL;
|
struct evconnlistener *lev=NULL;
|
||||||
struct bufferevent *bev1=NULL, *bev2=NULL;
|
struct bufferevent *bev1=NULL, *bev2=NULL;
|
||||||
struct sockaddr_in localhost;
|
struct sockaddr_in localhost;
|
||||||
struct sockaddr *sa = (struct sockaddr*)&localhost;
|
struct sockaddr_storage ss;
|
||||||
|
struct sockaddr *sa;
|
||||||
|
ev_socklen_t slen;
|
||||||
|
|
||||||
int be_flags=BEV_OPT_CLOSE_ON_FREE;
|
int be_flags=BEV_OPT_CLOSE_ON_FREE;
|
||||||
|
|
||||||
if (strstr((char*)data->setup_data, "defer")) {
|
if (strstr((char*)data->setup_data, "defer")) {
|
||||||
@ -494,14 +497,21 @@ test_bufferevent_connect(void *arg)
|
|||||||
|
|
||||||
memset(&localhost, 0, sizeof(localhost));
|
memset(&localhost, 0, sizeof(localhost));
|
||||||
|
|
||||||
localhost.sin_port = htons(27015);
|
localhost.sin_port = 0; /* pick-a-port */
|
||||||
localhost.sin_addr.s_addr = htonl(0x7f000001L);
|
localhost.sin_addr.s_addr = htonl(0x7f000001L);
|
||||||
localhost.sin_family = AF_INET;
|
localhost.sin_family = AF_INET;
|
||||||
|
sa = (struct sockaddr *)&localhost;
|
||||||
lev = evconnlistener_new_bind(data->base, listen_cb, data->base,
|
lev = evconnlistener_new_bind(data->base, listen_cb, data->base,
|
||||||
LEV_OPT_CLOSE_ON_FREE|LEV_OPT_REUSEABLE,
|
LEV_OPT_CLOSE_ON_FREE|LEV_OPT_REUSEABLE,
|
||||||
16, sa, sizeof(localhost));
|
16, sa, sizeof(localhost));
|
||||||
tt_assert(lev);
|
tt_assert(lev);
|
||||||
|
|
||||||
|
sa = (struct sockaddr *)&ss;
|
||||||
|
slen = sizeof(ss);
|
||||||
|
if (evconnlistener_get_address(lev, sa, &slen) < 0) {
|
||||||
|
tt_abort_perror("getsockname");
|
||||||
|
}
|
||||||
|
|
||||||
tt_assert(!evconnlistener_enable(lev));
|
tt_assert(!evconnlistener_enable(lev));
|
||||||
bev1 = bufferevent_socket_new(data->base, -1, be_flags);
|
bev1 = bufferevent_socket_new(data->base, -1, be_flags);
|
||||||
bev2 = bufferevent_socket_new(data->base, -1, be_flags);
|
bev2 = bufferevent_socket_new(data->base, -1, be_flags);
|
||||||
@ -584,7 +594,7 @@ test_bufferevent_connect_fail(void *arg)
|
|||||||
test_ok = 0;
|
test_ok = 0;
|
||||||
|
|
||||||
memset(&localhost, 0, sizeof(localhost));
|
memset(&localhost, 0, sizeof(localhost));
|
||||||
localhost.sin_port = 0;
|
localhost.sin_port = 0; /* have the kernel pick a port */
|
||||||
localhost.sin_addr.s_addr = htonl(0x7f000001L);
|
localhost.sin_addr.s_addr = htonl(0x7f000001L);
|
||||||
localhost.sin_family = AF_INET;
|
localhost.sin_family = AF_INET;
|
||||||
|
|
||||||
|
@ -364,6 +364,8 @@ dns_server(void)
|
|||||||
{
|
{
|
||||||
evutil_socket_t sock=-1;
|
evutil_socket_t sock=-1;
|
||||||
struct sockaddr_in my_addr;
|
struct sockaddr_in my_addr;
|
||||||
|
struct sockaddr_storage ss;
|
||||||
|
ev_socklen_t slen;
|
||||||
struct evdns_server_port *port=NULL;
|
struct evdns_server_port *port=NULL;
|
||||||
struct in_addr resolve_addr;
|
struct in_addr resolve_addr;
|
||||||
struct in6_addr resolve_addr6;
|
struct in6_addr resolve_addr6;
|
||||||
@ -374,11 +376,6 @@ dns_server(void)
|
|||||||
|
|
||||||
base = evdns_base_new(NULL, 0);
|
base = evdns_base_new(NULL, 0);
|
||||||
|
|
||||||
/* Add ourself as the only nameserver, and make sure we really are
|
|
||||||
* the only nameserver. */
|
|
||||||
evdns_base_nameserver_ip_add(base, "127.0.0.1:35353");
|
|
||||||
|
|
||||||
tt_int_op(evdns_base_count_nameservers(base), ==, 1);
|
|
||||||
/* Now configure a nameserver port. */
|
/* Now configure a nameserver port. */
|
||||||
sock = socket(AF_INET, SOCK_DGRAM, 0);
|
sock = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
if (sock<0) {
|
if (sock<0) {
|
||||||
@ -389,13 +386,23 @@ dns_server(void)
|
|||||||
|
|
||||||
memset(&my_addr, 0, sizeof(my_addr));
|
memset(&my_addr, 0, sizeof(my_addr));
|
||||||
my_addr.sin_family = AF_INET;
|
my_addr.sin_family = AF_INET;
|
||||||
my_addr.sin_port = htons(35353);
|
my_addr.sin_port = 0; /* kernel picks */
|
||||||
my_addr.sin_addr.s_addr = htonl(0x7f000001UL);
|
my_addr.sin_addr.s_addr = htonl(0x7f000001UL);
|
||||||
if (bind(sock, (struct sockaddr*)&my_addr, sizeof(my_addr)) < 0) {
|
if (bind(sock, (struct sockaddr*)&my_addr, sizeof(my_addr)) < 0) {
|
||||||
tt_abort_perror("bind");
|
tt_abort_perror("bind");
|
||||||
}
|
}
|
||||||
|
slen = sizeof(ss);
|
||||||
|
if (getsockname(sock, (struct sockaddr*)&ss, &slen) < 0) {
|
||||||
|
tt_abort_perror("getsockname");
|
||||||
|
}
|
||||||
|
|
||||||
port = evdns_add_server_port(sock, 0, dns_server_request_cb, NULL);
|
port = evdns_add_server_port(sock, 0, dns_server_request_cb, NULL);
|
||||||
|
|
||||||
|
/* Add ourself as the only nameserver, and make sure we really are
|
||||||
|
* the only nameserver. */
|
||||||
|
evdns_base_nameserver_sockaddr_add(base, (struct sockaddr*)&ss, slen, 0);
|
||||||
|
tt_int_op(evdns_base_count_nameservers(base), ==, 1);
|
||||||
|
|
||||||
/* Send some queries. */
|
/* Send some queries. */
|
||||||
evdns_base_resolve_ipv4(base, "zz.example.com", DNS_QUERY_NO_SEARCH,
|
evdns_base_resolve_ipv4(base, "zz.example.com", DNS_QUERY_NO_SEARCH,
|
||||||
dns_server_gethostbyname_cb, NULL);
|
dns_server_gethostbyname_cb, NULL);
|
||||||
@ -496,14 +503,16 @@ dns_search_test(void *arg)
|
|||||||
struct basic_test_data *data = arg;
|
struct basic_test_data *data = arg;
|
||||||
struct event_base *base = data->base;
|
struct event_base *base = data->base;
|
||||||
struct evdns_base *dns = NULL;
|
struct evdns_base *dns = NULL;
|
||||||
ev_uint16_t portnum = 53900;/*XXXX let the code pick a port*/
|
ev_uint16_t portnum = 0;
|
||||||
|
char buf[64];
|
||||||
|
|
||||||
struct generic_dns_callback_result r1, r2, r3, r4, r5;
|
struct generic_dns_callback_result r1, r2, r3, r4, r5;
|
||||||
|
|
||||||
tt_assert(regress_dnsserver(base, &portnum, search_table));
|
tt_assert(regress_dnsserver(base, &portnum, search_table));
|
||||||
|
evutil_snprintf(buf, sizeof(buf), "127.0.0.1:%d", (int)portnum);
|
||||||
|
|
||||||
dns = evdns_base_new(base, 0);
|
dns = evdns_base_new(base, 0);
|
||||||
tt_assert(!evdns_base_nameserver_ip_add(dns, "127.0.0.1:53900"));
|
tt_assert(!evdns_base_nameserver_ip_add(dns, buf));
|
||||||
|
|
||||||
evdns_base_search_add(dns, "a.example.com");
|
evdns_base_search_add(dns, "a.example.com");
|
||||||
evdns_base_search_add(dns, "b.example.com");
|
evdns_base_search_add(dns, "b.example.com");
|
||||||
@ -570,15 +579,17 @@ dns_search_cancel_test(void *arg)
|
|||||||
struct event_base *base = data->base;
|
struct event_base *base = data->base;
|
||||||
struct evdns_base *dns = NULL;
|
struct evdns_base *dns = NULL;
|
||||||
struct evdns_server_port *port = NULL;
|
struct evdns_server_port *port = NULL;
|
||||||
ev_uint16_t portnum = 53900;/*XXXX let the code pick a port*/
|
ev_uint16_t portnum = 0;
|
||||||
struct generic_dns_callback_result r1;
|
struct generic_dns_callback_result r1;
|
||||||
|
char buf[64];
|
||||||
|
|
||||||
port = regress_get_dnsserver(base, &portnum, NULL,
|
port = regress_get_dnsserver(base, &portnum, NULL,
|
||||||
search_cancel_server_cb, NULL);
|
search_cancel_server_cb, NULL);
|
||||||
tt_assert(port);
|
tt_assert(port);
|
||||||
|
evutil_snprintf(buf, sizeof(buf), "127.0.0.1:%d", (int)portnum);
|
||||||
|
|
||||||
dns = evdns_base_new(base, 0);
|
dns = evdns_base_new(base, 0);
|
||||||
tt_assert(!evdns_base_nameserver_ip_add(dns, "127.0.0.1:53900"));
|
tt_assert(!evdns_base_nameserver_ip_add(dns, buf));
|
||||||
|
|
||||||
evdns_base_search_add(dns, "a.example.com");
|
evdns_base_search_add(dns, "a.example.com");
|
||||||
evdns_base_search_add(dns, "b.example.com");
|
evdns_base_search_add(dns, "b.example.com");
|
||||||
@ -588,7 +599,7 @@ dns_search_cancel_test(void *arg)
|
|||||||
exit_base = base;
|
exit_base = base;
|
||||||
request_count = 3;
|
request_count = 3;
|
||||||
n_replies_left = 1;
|
n_replies_left = 1;
|
||||||
|
|
||||||
current_req = evdns_base_resolve_ipv4(dns, "host", 0,
|
current_req = evdns_base_resolve_ipv4(dns, "host", 0,
|
||||||
generic_dns_callback, &r1);
|
generic_dns_callback, &r1);
|
||||||
event_base_dispatch(base);
|
event_base_dispatch(base);
|
||||||
@ -644,16 +655,18 @@ dns_retry_test(void *arg)
|
|||||||
struct evdns_server_port *port = NULL;
|
struct evdns_server_port *port = NULL;
|
||||||
struct evdns_base *dns = NULL;
|
struct evdns_base *dns = NULL;
|
||||||
int drop_count = 2;
|
int drop_count = 2;
|
||||||
ev_uint16_t portnum = 53900;/*XXXX let the code pick a port*/
|
ev_uint16_t portnum = 0;
|
||||||
|
char buf[64];
|
||||||
|
|
||||||
struct generic_dns_callback_result r1;
|
struct generic_dns_callback_result r1;
|
||||||
|
|
||||||
port = regress_get_dnsserver(base, &portnum, NULL,
|
port = regress_get_dnsserver(base, &portnum, NULL,
|
||||||
fail_server_cb, &drop_count);
|
fail_server_cb, &drop_count);
|
||||||
tt_assert(port);
|
tt_assert(port);
|
||||||
|
evutil_snprintf(buf, sizeof(buf), "127.0.0.1:%d", (int)portnum);
|
||||||
|
|
||||||
dns = evdns_base_new(base, 0);
|
dns = evdns_base_new(base, 0);
|
||||||
tt_assert(!evdns_base_nameserver_ip_add(dns, "127.0.0.1:53900"));
|
tt_assert(!evdns_base_nameserver_ip_add(dns, buf));
|
||||||
tt_assert(! evdns_base_set_option(dns, "timeout", "0.3"));
|
tt_assert(! evdns_base_set_option(dns, "timeout", "0.3"));
|
||||||
tt_assert(! evdns_base_set_option(dns, "max-timeouts:", "10"));
|
tt_assert(! evdns_base_set_option(dns, "max-timeouts:", "10"));
|
||||||
tt_assert(! evdns_base_set_option(dns, "initial-probe-timeout", "0.5"));
|
tt_assert(! evdns_base_set_option(dns, "initial-probe-timeout", "0.5"));
|
||||||
@ -731,7 +744,8 @@ dns_reissue_test(void *arg)
|
|||||||
struct evdns_server_port *port1 = NULL, *port2 = NULL;
|
struct evdns_server_port *port1 = NULL, *port2 = NULL;
|
||||||
struct evdns_base *dns = NULL;
|
struct evdns_base *dns = NULL;
|
||||||
struct generic_dns_callback_result r1;
|
struct generic_dns_callback_result r1;
|
||||||
ev_uint16_t portnum1 = 53900, portnum2=53901;
|
ev_uint16_t portnum1 = 0, portnum2=0;
|
||||||
|
char buf1[64], buf2[64];
|
||||||
|
|
||||||
port1 = regress_get_dnsserver(base, &portnum1, NULL,
|
port1 = regress_get_dnsserver(base, &portnum1, NULL,
|
||||||
regress_dns_server_cb, internal_error_table);
|
regress_dns_server_cb, internal_error_table);
|
||||||
@ -739,9 +753,11 @@ dns_reissue_test(void *arg)
|
|||||||
port2 = regress_get_dnsserver(base, &portnum2, NULL,
|
port2 = regress_get_dnsserver(base, &portnum2, NULL,
|
||||||
regress_dns_server_cb, reissue_table);
|
regress_dns_server_cb, reissue_table);
|
||||||
tt_assert(port2);
|
tt_assert(port2);
|
||||||
|
evutil_snprintf(buf1, sizeof(buf1), "127.0.0.1:%d", (int)portnum1);
|
||||||
|
evutil_snprintf(buf2, sizeof(buf2), "127.0.0.1:%d", (int)portnum2);
|
||||||
|
|
||||||
dns = evdns_base_new(base, 0);
|
dns = evdns_base_new(base, 0);
|
||||||
tt_assert(!evdns_base_nameserver_ip_add(dns, "127.0.0.1:53900"));
|
tt_assert(!evdns_base_nameserver_ip_add(dns, buf1));
|
||||||
tt_assert(! evdns_base_set_option(dns, "timeout:", "0.3"));
|
tt_assert(! evdns_base_set_option(dns, "timeout:", "0.3"));
|
||||||
tt_assert(! evdns_base_set_option(dns, "max-timeouts:", "2"));
|
tt_assert(! evdns_base_set_option(dns, "max-timeouts:", "2"));
|
||||||
tt_assert(! evdns_base_set_option(dns, "attempts:", "5"));
|
tt_assert(! evdns_base_set_option(dns, "attempts:", "5"));
|
||||||
@ -751,7 +767,7 @@ dns_reissue_test(void *arg)
|
|||||||
generic_dns_callback, &r1);
|
generic_dns_callback, &r1);
|
||||||
|
|
||||||
/* Add this after, so that we are sure to get a reissue. */
|
/* Add this after, so that we are sure to get a reissue. */
|
||||||
tt_assert(!evdns_base_nameserver_ip_add(dns, "127.0.0.1:53901"));
|
tt_assert(!evdns_base_nameserver_ip_add(dns, buf2));
|
||||||
|
|
||||||
n_replies_left = 1;
|
n_replies_left = 1;
|
||||||
exit_base = base;
|
exit_base = base;
|
||||||
@ -792,21 +808,17 @@ dns_inflight_test(void *arg)
|
|||||||
struct basic_test_data *data = arg;
|
struct basic_test_data *data = arg;
|
||||||
struct event_base *base = data->base;
|
struct event_base *base = data->base;
|
||||||
struct evdns_base *dns = NULL;
|
struct evdns_base *dns = NULL;
|
||||||
ev_uint16_t portnum = 53900;/*XXXX let the code pick a port*/
|
ev_uint16_t portnum = 0;
|
||||||
|
char buf[64];
|
||||||
|
|
||||||
struct generic_dns_callback_result r[20];
|
struct generic_dns_callback_result r[20];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
tt_assert(regress_dnsserver(base, &portnum, reissue_table));
|
tt_assert(regress_dnsserver(base, &portnum, reissue_table));
|
||||||
|
evutil_snprintf(buf, sizeof(buf), "127.0.0.1:%d", (int)portnum);
|
||||||
#if 0
|
|
||||||
/* Make sure that having another (very bad!) RNG doesn't mess us
|
|
||||||
* up. */
|
|
||||||
evdns_set_random_bytes_fn(dumb_bytes_fn);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
dns = evdns_base_new(base, 0);
|
dns = evdns_base_new(base, 0);
|
||||||
tt_assert(!evdns_base_nameserver_ip_add(dns, "127.0.0.1:53900"));
|
tt_assert(!evdns_base_nameserver_ip_add(dns, buf));
|
||||||
tt_assert(! evdns_base_set_option(dns, "max-inflight:", "3"));
|
tt_assert(! evdns_base_set_option(dns, "max-inflight:", "3"));
|
||||||
tt_assert(! evdns_base_set_option(dns, "randomize-case:", "0"));
|
tt_assert(! evdns_base_set_option(dns, "randomize-case:", "0"));
|
||||||
|
|
||||||
@ -1042,7 +1054,7 @@ test_bufferevent_connect_hostname(void *arg)
|
|||||||
|
|
||||||
/* Start an evdns_base that uses the server as its resolver. */
|
/* Start an evdns_base that uses the server as its resolver. */
|
||||||
dns = evdns_base_new(data->base, 0);
|
dns = evdns_base_new(data->base, 0);
|
||||||
evutil_snprintf(buf, sizeof(buf), "127.0.0.1:%d", dns_port);
|
evutil_snprintf(buf, sizeof(buf), "127.0.0.1:%d", (int)dns_port);
|
||||||
evdns_base_nameserver_ip_add(dns, buf);
|
evdns_base_nameserver_ip_add(dns, buf);
|
||||||
|
|
||||||
/* Now, finally, at long last, launch the bufferevents. One should do
|
/* Now, finally, at long last, launch the bufferevents. One should do
|
||||||
|
@ -75,24 +75,34 @@ static void http_delay_cb(struct evhttp_request *req, void *arg);
|
|||||||
static void http_large_delay_cb(struct evhttp_request *req, void *arg);
|
static void http_large_delay_cb(struct evhttp_request *req, void *arg);
|
||||||
static void http_badreq_cb(struct evhttp_request *req, void *arg);
|
static void http_badreq_cb(struct evhttp_request *req, void *arg);
|
||||||
static void http_dispatcher_cb(struct evhttp_request *req, void *arg);
|
static void http_dispatcher_cb(struct evhttp_request *req, void *arg);
|
||||||
static struct evhttp *
|
static int
|
||||||
http_setup(short *pport, struct event_base *base)
|
http_bind(struct evhttp *myhttp, ev_uint16_t *pport)
|
||||||
|
{
|
||||||
|
int port;
|
||||||
|
struct evhttp_bound_socket *sock;
|
||||||
|
|
||||||
|
sock = evhttp_bind_socket_with_handle(myhttp, "127.0.0.1", *pport);
|
||||||
|
if (sock == NULL)
|
||||||
|
event_errx(1, "Could not start web server");
|
||||||
|
|
||||||
|
port = regress_get_socket_port(evhttp_bound_socket_get_fd(sock));
|
||||||
|
if (port < 0)
|
||||||
|
return -1;
|
||||||
|
*pport = (ev_uint16_t) port;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct evhttp *
|
||||||
|
http_setup(ev_uint16_t *pport, struct event_base *base)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
struct evhttp *myhttp;
|
struct evhttp *myhttp;
|
||||||
short port = -1;
|
|
||||||
|
|
||||||
/* Try a few different ports */
|
/* Try a few different ports */
|
||||||
myhttp = evhttp_new(base);
|
myhttp = evhttp_new(base);
|
||||||
for (i = 0; i < 50; ++i) {
|
|
||||||
if (evhttp_bind_socket(myhttp, "127.0.0.1", 8080 + i) != -1) {
|
|
||||||
port = 8080 + i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (port == -1)
|
if (http_bind(myhttp, pport) < 0)
|
||||||
event_errx(1, "Could not start web server");
|
return NULL;
|
||||||
|
|
||||||
/* Register a callback for certain types of requests */
|
/* Register a callback for certain types of requests */
|
||||||
evhttp_set_cb(myhttp, "/test", http_basic_cb, NULL);
|
evhttp_set_cb(myhttp, "/test", http_basic_cb, NULL);
|
||||||
@ -105,8 +115,6 @@ http_setup(short *pport, struct event_base *base)
|
|||||||
evhttp_set_cb(myhttp, "/largedelay", http_large_delay_cb, NULL);
|
evhttp_set_cb(myhttp, "/largedelay", http_large_delay_cb, NULL);
|
||||||
evhttp_set_cb(myhttp, "/badrequest", http_badreq_cb, NULL);
|
evhttp_set_cb(myhttp, "/badrequest", http_badreq_cb, NULL);
|
||||||
evhttp_set_cb(myhttp, "/", http_dispatcher_cb, NULL);
|
evhttp_set_cb(myhttp, "/", http_dispatcher_cb, NULL);
|
||||||
|
|
||||||
*pport = port;
|
|
||||||
return (myhttp);
|
return (myhttp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -330,14 +338,14 @@ http_basic_test(void)
|
|||||||
struct bufferevent *bev;
|
struct bufferevent *bev;
|
||||||
evutil_socket_t fd;
|
evutil_socket_t fd;
|
||||||
const char *http_request;
|
const char *http_request;
|
||||||
short port = -1;
|
ev_uint16_t port = 0, port2 = 0;
|
||||||
|
|
||||||
test_ok = 0;
|
test_ok = 0;
|
||||||
|
|
||||||
http = http_setup(&port, NULL);
|
http = http_setup(&port, NULL);
|
||||||
|
|
||||||
/* bind to a second socket */
|
/* bind to a second socket */
|
||||||
if (evhttp_bind_socket(http, "127.0.0.1", port + 1) == -1) {
|
if (http_bind(http, &port2) == -1) {
|
||||||
fprintf(stdout, "FAILED (bind)\n");
|
fprintf(stdout, "FAILED (bind)\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -366,7 +374,7 @@ http_basic_test(void)
|
|||||||
bufferevent_free(bev);
|
bufferevent_free(bev);
|
||||||
evutil_closesocket(fd);
|
evutil_closesocket(fd);
|
||||||
|
|
||||||
fd = http_connect("127.0.0.1", port + 1);
|
fd = http_connect("127.0.0.1", port2);
|
||||||
|
|
||||||
/* Stupid thing to send a request */
|
/* Stupid thing to send a request */
|
||||||
bev = bufferevent_new(fd, http_readcb, http_writecb,
|
bev = bufferevent_new(fd, http_readcb, http_writecb,
|
||||||
@ -498,7 +506,7 @@ http_bad_request_test(void)
|
|||||||
struct bufferevent *bev = NULL;
|
struct bufferevent *bev = NULL;
|
||||||
evutil_socket_t fd;
|
evutil_socket_t fd;
|
||||||
const char *http_request;
|
const char *http_request;
|
||||||
short port = -1;
|
ev_uint16_t port, port2;
|
||||||
|
|
||||||
test_ok = 0;
|
test_ok = 0;
|
||||||
|
|
||||||
@ -507,7 +515,7 @@ http_bad_request_test(void)
|
|||||||
http = http_setup(&port, NULL);
|
http = http_setup(&port, NULL);
|
||||||
|
|
||||||
/* bind to a second socket */
|
/* bind to a second socket */
|
||||||
if (evhttp_bind_socket(http, "127.0.0.1", port + 1) == -1)
|
if (http_bind(http, &port2) == -1)
|
||||||
TT_DIE(("Bind socket failed"));
|
TT_DIE(("Bind socket failed"));
|
||||||
|
|
||||||
/* NULL request test */
|
/* NULL request test */
|
||||||
@ -539,7 +547,7 @@ http_bad_request_test(void)
|
|||||||
/* Second answer (BAD REQUEST) on connection close */
|
/* Second answer (BAD REQUEST) on connection close */
|
||||||
|
|
||||||
/* connect to the second port */
|
/* connect to the second port */
|
||||||
fd = http_connect("127.0.0.1", port + 1);
|
fd = http_connect("127.0.0.1", port2);
|
||||||
|
|
||||||
/* Stupid thing to send a request */
|
/* Stupid thing to send a request */
|
||||||
bev = bufferevent_new(fd, http_badreq_readcb, http_writecb,
|
bev = bufferevent_new(fd, http_badreq_readcb, http_writecb,
|
||||||
@ -613,7 +621,7 @@ http_delete_test(void)
|
|||||||
struct bufferevent *bev;
|
struct bufferevent *bev;
|
||||||
evutil_socket_t fd;
|
evutil_socket_t fd;
|
||||||
const char *http_request;
|
const char *http_request;
|
||||||
short port = -1;
|
ev_uint16_t port;
|
||||||
|
|
||||||
test_ok = 0;
|
test_ok = 0;
|
||||||
|
|
||||||
@ -651,7 +659,7 @@ static void http_request_empty_done(struct evhttp_request *, void *);
|
|||||||
static void
|
static void
|
||||||
_http_connection_test(int persistent)
|
_http_connection_test(int persistent)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
|
|
||||||
@ -746,7 +754,7 @@ static struct regress_dns_server_table search_table[] = {
|
|||||||
static void
|
static void
|
||||||
http_connection_async_test(void)
|
http_connection_async_test(void)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
struct evdns_base *dns_base = NULL;
|
struct evdns_base *dns_base = NULL;
|
||||||
@ -863,7 +871,7 @@ http_do_cancel(evutil_socket_t fd, short what, void *arg)
|
|||||||
static void
|
static void
|
||||||
http_cancel_test(void)
|
http_cancel_test(void)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
@ -979,7 +987,7 @@ http_request_expect_error(struct evhttp_request *req, void *arg)
|
|||||||
static void
|
static void
|
||||||
http_virtual_host_test(void)
|
http_virtual_host_test(void)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
struct evhttp *second = NULL, *third = NULL;
|
struct evhttp *second = NULL, *third = NULL;
|
||||||
@ -1150,7 +1158,7 @@ http_dispatcher_test_done(struct evhttp_request *req, void *arg)
|
|||||||
static void
|
static void
|
||||||
http_dispatcher_test(void)
|
http_dispatcher_test(void)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
|
|
||||||
@ -1199,7 +1207,7 @@ void http_postrequest_done(struct evhttp_request *, void *);
|
|||||||
static void
|
static void
|
||||||
http_post_test(void)
|
http_post_test(void)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
|
|
||||||
@ -1317,7 +1325,7 @@ void http_putrequest_done(struct evhttp_request *, void *);
|
|||||||
static void
|
static void
|
||||||
http_put_test(void)
|
http_put_test(void)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
|
|
||||||
@ -1444,7 +1452,7 @@ http_failure_test(void)
|
|||||||
struct bufferevent *bev;
|
struct bufferevent *bev;
|
||||||
evutil_socket_t fd;
|
evutil_socket_t fd;
|
||||||
const char *http_request;
|
const char *http_request;
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
|
|
||||||
test_ok = 0;
|
test_ok = 0;
|
||||||
|
|
||||||
@ -1527,7 +1535,7 @@ close_detect_cb(struct evhttp_request *req, void *arg)
|
|||||||
static void
|
static void
|
||||||
_http_close_detection(int with_delay)
|
_http_close_detection(int with_delay)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
|
|
||||||
@ -1663,7 +1671,7 @@ http_base_test(void *ptr)
|
|||||||
struct bufferevent *bev;
|
struct bufferevent *bev;
|
||||||
evutil_socket_t fd;
|
evutil_socket_t fd;
|
||||||
const char *http_request;
|
const char *http_request;
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
|
|
||||||
test_ok = 0;
|
test_ok = 0;
|
||||||
base = event_init();
|
base = event_init();
|
||||||
@ -1741,7 +1749,7 @@ _http_incomplete_test(int use_timeout)
|
|||||||
struct bufferevent *bev;
|
struct bufferevent *bev;
|
||||||
evutil_socket_t fd;
|
evutil_socket_t fd;
|
||||||
const char *http_request;
|
const char *http_request;
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct timeval tv_start, tv_end;
|
struct timeval tv_start, tv_end;
|
||||||
|
|
||||||
test_ok = 0;
|
test_ok = 0;
|
||||||
@ -1943,7 +1951,7 @@ http_chunk_out_test(void)
|
|||||||
struct bufferevent *bev;
|
struct bufferevent *bev;
|
||||||
evutil_socket_t fd;
|
evutil_socket_t fd;
|
||||||
const char *http_request;
|
const char *http_request;
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct timeval tv_start, tv_end;
|
struct timeval tv_start, tv_end;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
@ -2014,7 +2022,7 @@ http_chunk_out_test(void)
|
|||||||
static void
|
static void
|
||||||
http_stream_out_test(void)
|
http_stream_out_test(void)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
|
|
||||||
@ -2085,7 +2093,7 @@ _http_stream_in_test(char const *url,
|
|||||||
struct evhttp_connection *evcon;
|
struct evhttp_connection *evcon;
|
||||||
struct evbuffer *reply = evbuffer_new();
|
struct evbuffer *reply = evbuffer_new();
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
|
|
||||||
http = http_setup(&port, NULL);
|
http = http_setup(&port, NULL);
|
||||||
|
|
||||||
@ -2154,7 +2162,7 @@ http_stream_in_cancel_test(void)
|
|||||||
{
|
{
|
||||||
struct evhttp_connection *evcon;
|
struct evhttp_connection *evcon;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
|
|
||||||
http = http_setup(&port, NULL);
|
http = http_setup(&port, NULL);
|
||||||
|
|
||||||
@ -2197,23 +2205,24 @@ http_connection_retry_done(struct evhttp_request *req, void *arg)
|
|||||||
static void
|
static void
|
||||||
http_make_web_server(evutil_socket_t fd, short what, void *arg)
|
http_make_web_server(evutil_socket_t fd, short what, void *arg)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = *(ev_uint16_t*)arg;
|
||||||
http = http_setup(&port, NULL);
|
http = http_setup(&port, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
http_connection_retry_test(void)
|
http_connection_retry_test(void)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
struct timeval tv, tv_start, tv_end;
|
struct timeval tv, tv_start, tv_end;
|
||||||
|
|
||||||
test_ok = 0;
|
test_ok = 0;
|
||||||
|
|
||||||
/* auto detect the port */
|
/* auto detect a port */
|
||||||
http = http_setup(&port, NULL);
|
http = http_setup(&port, NULL);
|
||||||
evhttp_free(http);
|
evhttp_free(http);
|
||||||
|
http = NULL;
|
||||||
|
|
||||||
evcon = evhttp_connection_new("127.0.0.1", port);
|
evcon = evhttp_connection_new("127.0.0.1", port);
|
||||||
tt_assert(evcon);
|
tt_assert(evcon);
|
||||||
@ -2299,7 +2308,7 @@ http_connection_retry_test(void)
|
|||||||
*/
|
*/
|
||||||
evutil_timerclear(&tv);
|
evutil_timerclear(&tv);
|
||||||
tv.tv_sec = 1;
|
tv.tv_sec = 1;
|
||||||
event_once(-1, EV_TIMEOUT, http_make_web_server, NULL, &tv);
|
event_once(-1, EV_TIMEOUT, http_make_web_server, &port, &tv);
|
||||||
|
|
||||||
evutil_gettimeofday(&tv_start, NULL);
|
evutil_gettimeofday(&tv_start, NULL);
|
||||||
event_dispatch();
|
event_dispatch();
|
||||||
@ -2351,7 +2360,7 @@ http_multi_line_header_test(void)
|
|||||||
struct bufferevent *bev= NULL;
|
struct bufferevent *bev= NULL;
|
||||||
evutil_socket_t fd = -1;
|
evutil_socket_t fd = -1;
|
||||||
const char *http_start_request;
|
const char *http_start_request;
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
|
|
||||||
test_ok = 0;
|
test_ok = 0;
|
||||||
|
|
||||||
@ -2402,7 +2411,7 @@ http_request_bad(struct evhttp_request *req, void *arg)
|
|||||||
static void
|
static void
|
||||||
http_negative_content_length_test(void)
|
http_negative_content_length_test(void)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
|
|
||||||
@ -2450,7 +2459,7 @@ end:
|
|||||||
static void
|
static void
|
||||||
http_data_length_constraints_test(void)
|
http_data_length_constraints_test(void)
|
||||||
{
|
{
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
struct evhttp_request *req = NULL;
|
struct evhttp_request *req = NULL;
|
||||||
char long_str[8192];
|
char long_str[8192];
|
||||||
@ -2596,7 +2605,7 @@ http_terminate_chunked_test(void)
|
|||||||
struct bufferevent *bev = NULL;
|
struct bufferevent *bev = NULL;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
const char *http_request;
|
const char *http_request;
|
||||||
short port = -1;
|
ev_uint16_t port = 0;
|
||||||
evutil_socket_t fd = -1;
|
evutil_socket_t fd = -1;
|
||||||
|
|
||||||
test_ok = 0;
|
test_ok = 0;
|
||||||
|
@ -63,25 +63,25 @@
|
|||||||
#include "regress.gen.h"
|
#include "regress.gen.h"
|
||||||
|
|
||||||
#include "regress.h"
|
#include "regress.h"
|
||||||
|
#include "regress_testutils.h"
|
||||||
|
|
||||||
static struct evhttp *
|
static struct evhttp *
|
||||||
http_setup(short *pport)
|
http_setup(ev_uint16_t *pport)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
struct evhttp *myhttp;
|
struct evhttp *myhttp;
|
||||||
short port = -1;
|
ev_uint16_t port;
|
||||||
|
struct evhttp_bound_socket *sock;
|
||||||
|
|
||||||
|
myhttp = evhttp_new(NULL);
|
||||||
|
if (!myhttp)
|
||||||
|
event_errx(1, "Could not start web server");
|
||||||
|
|
||||||
/* Try a few different ports */
|
/* Try a few different ports */
|
||||||
for (i = 0; i < 50; ++i) {
|
sock = evhttp_bind_socket_with_handle(myhttp, "127.0.0.1", 0);
|
||||||
myhttp = evhttp_start("127.0.0.1", 8080 + i);
|
if (!sock)
|
||||||
if (myhttp != NULL) {
|
event_errx(1, "Couldn't open web port");
|
||||||
port = 8080 + i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (port == -1)
|
port = regress_get_socket_port(evhttp_bound_socket_get_fd(sock));
|
||||||
event_errx(1, "Could not start web server");
|
|
||||||
|
|
||||||
*pport = port;
|
*pport = port;
|
||||||
return (myhttp);
|
return (myhttp);
|
||||||
@ -126,9 +126,9 @@ NeverReplyCb(EVRPC_STRUCT(NeverReply)* rpc, void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
rpc_setup(struct evhttp **phttp, short *pport, struct evrpc_base **pbase)
|
rpc_setup(struct evhttp **phttp, ev_uint16_t *pport, struct evrpc_base **pbase)
|
||||||
{
|
{
|
||||||
short port;
|
ev_uint16_t port;
|
||||||
struct evhttp *http = NULL;
|
struct evhttp *http = NULL;
|
||||||
struct evrpc_base *base = NULL;
|
struct evrpc_base *base = NULL;
|
||||||
|
|
||||||
@ -175,7 +175,7 @@ rpc_postrequest_failure(struct evhttp_request *req, void *arg)
|
|||||||
static void
|
static void
|
||||||
rpc_basic_test(void)
|
rpc_basic_test(void)
|
||||||
{
|
{
|
||||||
short port;
|
ev_uint16_t port;
|
||||||
struct evhttp *http = NULL;
|
struct evhttp *http = NULL;
|
||||||
struct evrpc_base *base = NULL;
|
struct evrpc_base *base = NULL;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
@ -244,7 +244,7 @@ rpc_postrequest_done(struct evhttp_request *req, void *arg)
|
|||||||
static void
|
static void
|
||||||
rpc_basic_message(void)
|
rpc_basic_message(void)
|
||||||
{
|
{
|
||||||
short port;
|
ev_uint16_t port;
|
||||||
struct evhttp *http = NULL;
|
struct evhttp *http = NULL;
|
||||||
struct evrpc_base *base = NULL;
|
struct evrpc_base *base = NULL;
|
||||||
struct evhttp_connection *evcon = NULL;
|
struct evhttp_connection *evcon = NULL;
|
||||||
@ -297,7 +297,7 @@ end:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct evrpc_pool *
|
static struct evrpc_pool *
|
||||||
rpc_pool_with_connection(short port)
|
rpc_pool_with_connection(ev_uint16_t port)
|
||||||
{
|
{
|
||||||
struct evhttp_connection *evcon;
|
struct evhttp_connection *evcon;
|
||||||
struct evrpc_pool *pool;
|
struct evrpc_pool *pool;
|
||||||
@ -435,7 +435,7 @@ rpc_hook_remove_header(void *ctx, struct evhttp_request *req,
|
|||||||
static void
|
static void
|
||||||
rpc_basic_client(void)
|
rpc_basic_client(void)
|
||||||
{
|
{
|
||||||
short port;
|
ev_uint16_t port;
|
||||||
struct evhttp *http = NULL;
|
struct evhttp *http = NULL;
|
||||||
struct evrpc_base *base = NULL;
|
struct evrpc_base *base = NULL;
|
||||||
struct evrpc_pool *pool = NULL;
|
struct evrpc_pool *pool = NULL;
|
||||||
@ -519,7 +519,7 @@ end:
|
|||||||
static void
|
static void
|
||||||
rpc_basic_queued_client(void)
|
rpc_basic_queued_client(void)
|
||||||
{
|
{
|
||||||
short port;
|
ev_uint16_t port;
|
||||||
struct evhttp *http = NULL;
|
struct evhttp *http = NULL;
|
||||||
struct evrpc_base *base = NULL;
|
struct evrpc_base *base = NULL;
|
||||||
struct evrpc_pool *pool = NULL;
|
struct evrpc_pool *pool = NULL;
|
||||||
@ -617,7 +617,7 @@ rpc_hook_pause(void *ctx, struct evhttp_request *req, struct evbuffer *evbuf,
|
|||||||
static void
|
static void
|
||||||
rpc_basic_client_with_pause(void)
|
rpc_basic_client_with_pause(void)
|
||||||
{
|
{
|
||||||
short port;
|
ev_uint16_t port;
|
||||||
struct evhttp *http = NULL;
|
struct evhttp *http = NULL;
|
||||||
struct evrpc_base *base = NULL;
|
struct evrpc_base *base = NULL;
|
||||||
struct evrpc_pool *pool = NULL;
|
struct evrpc_pool *pool = NULL;
|
||||||
@ -668,7 +668,7 @@ end:
|
|||||||
static void
|
static void
|
||||||
rpc_client_timeout(void)
|
rpc_client_timeout(void)
|
||||||
{
|
{
|
||||||
short port;
|
ev_uint16_t port;
|
||||||
struct evhttp *http = NULL;
|
struct evhttp *http = NULL;
|
||||||
struct evrpc_base *base = NULL;
|
struct evrpc_base *base = NULL;
|
||||||
struct evrpc_pool *pool = NULL;
|
struct evrpc_pool *pool = NULL;
|
||||||
|
@ -27,6 +27,8 @@
|
|||||||
#ifndef _TESTUTILS_H
|
#ifndef _TESTUTILS_H
|
||||||
#define _TESTUTILS_H
|
#define _TESTUTILS_H
|
||||||
|
|
||||||
|
#include <event2/dns.h>
|
||||||
|
|
||||||
struct regress_dns_server_table {
|
struct regress_dns_server_table {
|
||||||
const char *q;
|
const char *q;
|
||||||
const char *anstype;
|
const char *anstype;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user