mirror of
https://github.com/libevent/libevent.git
synced 2025-01-09 00:56:20 +08: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 bufferevent *bev1=NULL, *bev2=NULL;
|
||||
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;
|
||||
|
||||
if (strstr((char*)data->setup_data, "defer")) {
|
||||
@ -494,14 +497,21 @@ test_bufferevent_connect(void *arg)
|
||||
|
||||
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_family = AF_INET;
|
||||
|
||||
sa = (struct sockaddr *)&localhost;
|
||||
lev = evconnlistener_new_bind(data->base, listen_cb, data->base,
|
||||
LEV_OPT_CLOSE_ON_FREE|LEV_OPT_REUSEABLE,
|
||||
16, sa, sizeof(localhost));
|
||||
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));
|
||||
bev1 = 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;
|
||||
|
||||
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_family = AF_INET;
|
||||
|
||||
|
@ -364,6 +364,8 @@ dns_server(void)
|
||||
{
|
||||
evutil_socket_t sock=-1;
|
||||
struct sockaddr_in my_addr;
|
||||
struct sockaddr_storage ss;
|
||||
ev_socklen_t slen;
|
||||
struct evdns_server_port *port=NULL;
|
||||
struct in_addr resolve_addr;
|
||||
struct in6_addr resolve_addr6;
|
||||
@ -374,11 +376,6 @@ dns_server(void)
|
||||
|
||||
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. */
|
||||
sock = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (sock<0) {
|
||||
@ -389,13 +386,23 @@ dns_server(void)
|
||||
|
||||
memset(&my_addr, 0, sizeof(my_addr));
|
||||
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);
|
||||
if (bind(sock, (struct sockaddr*)&my_addr, sizeof(my_addr)) < 0) {
|
||||
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);
|
||||
|
||||
/* 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. */
|
||||
evdns_base_resolve_ipv4(base, "zz.example.com", DNS_QUERY_NO_SEARCH,
|
||||
dns_server_gethostbyname_cb, NULL);
|
||||
@ -496,14 +503,16 @@ dns_search_test(void *arg)
|
||||
struct basic_test_data *data = arg;
|
||||
struct event_base *base = data->base;
|
||||
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;
|
||||
|
||||
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);
|
||||
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, "b.example.com");
|
||||
@ -570,15 +579,17 @@ dns_search_cancel_test(void *arg)
|
||||
struct event_base *base = data->base;
|
||||
struct evdns_base *dns = 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;
|
||||
char buf[64];
|
||||
|
||||
port = regress_get_dnsserver(base, &portnum, NULL,
|
||||
search_cancel_server_cb, NULL);
|
||||
tt_assert(port);
|
||||
evutil_snprintf(buf, sizeof(buf), "127.0.0.1:%d", (int)portnum);
|
||||
|
||||
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, "b.example.com");
|
||||
@ -588,7 +599,7 @@ dns_search_cancel_test(void *arg)
|
||||
exit_base = base;
|
||||
request_count = 3;
|
||||
n_replies_left = 1;
|
||||
|
||||
|
||||
current_req = evdns_base_resolve_ipv4(dns, "host", 0,
|
||||
generic_dns_callback, &r1);
|
||||
event_base_dispatch(base);
|
||||
@ -644,16 +655,18 @@ dns_retry_test(void *arg)
|
||||
struct evdns_server_port *port = NULL;
|
||||
struct evdns_base *dns = NULL;
|
||||
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;
|
||||
|
||||
port = regress_get_dnsserver(base, &portnum, NULL,
|
||||
fail_server_cb, &drop_count);
|
||||
tt_assert(port);
|
||||
evutil_snprintf(buf, sizeof(buf), "127.0.0.1:%d", (int)portnum);
|
||||
|
||||
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, "max-timeouts:", "10"));
|
||||
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_base *dns = NULL;
|
||||
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,
|
||||
regress_dns_server_cb, internal_error_table);
|
||||
@ -739,9 +753,11 @@ dns_reissue_test(void *arg)
|
||||
port2 = regress_get_dnsserver(base, &portnum2, NULL,
|
||||
regress_dns_server_cb, reissue_table);
|
||||
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);
|
||||
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, "max-timeouts:", "2"));
|
||||
tt_assert(! evdns_base_set_option(dns, "attempts:", "5"));
|
||||
@ -751,7 +767,7 @@ dns_reissue_test(void *arg)
|
||||
generic_dns_callback, &r1);
|
||||
|
||||
/* 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;
|
||||
exit_base = base;
|
||||
@ -792,21 +808,17 @@ dns_inflight_test(void *arg)
|
||||
struct basic_test_data *data = arg;
|
||||
struct event_base *base = data->base;
|
||||
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];
|
||||
int i;
|
||||
|
||||
tt_assert(regress_dnsserver(base, &portnum, reissue_table));
|
||||
|
||||
#if 0
|
||||
/* Make sure that having another (very bad!) RNG doesn't mess us
|
||||
* up. */
|
||||
evdns_set_random_bytes_fn(dumb_bytes_fn);
|
||||
#endif
|
||||
evutil_snprintf(buf, sizeof(buf), "127.0.0.1:%d", (int)portnum);
|
||||
|
||||
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, "randomize-case:", "0"));
|
||||
|
||||
@ -1042,7 +1054,7 @@ test_bufferevent_connect_hostname(void *arg)
|
||||
|
||||
/* Start an evdns_base that uses the server as its resolver. */
|
||||
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);
|
||||
|
||||
/* 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_badreq_cb(struct evhttp_request *req, void *arg);
|
||||
static void http_dispatcher_cb(struct evhttp_request *req, void *arg);
|
||||
static struct evhttp *
|
||||
http_setup(short *pport, struct event_base *base)
|
||||
static int
|
||||
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;
|
||||
short port = -1;
|
||||
|
||||
/* Try a few different ports */
|
||||
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)
|
||||
event_errx(1, "Could not start web server");
|
||||
if (http_bind(myhttp, pport) < 0)
|
||||
return NULL;
|
||||
|
||||
/* Register a callback for certain types of requests */
|
||||
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, "/badrequest", http_badreq_cb, NULL);
|
||||
evhttp_set_cb(myhttp, "/", http_dispatcher_cb, NULL);
|
||||
|
||||
*pport = port;
|
||||
return (myhttp);
|
||||
}
|
||||
|
||||
@ -330,14 +338,14 @@ http_basic_test(void)
|
||||
struct bufferevent *bev;
|
||||
evutil_socket_t fd;
|
||||
const char *http_request;
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0, port2 = 0;
|
||||
|
||||
test_ok = 0;
|
||||
|
||||
http = http_setup(&port, NULL);
|
||||
|
||||
/* 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");
|
||||
exit(1);
|
||||
}
|
||||
@ -366,7 +374,7 @@ http_basic_test(void)
|
||||
bufferevent_free(bev);
|
||||
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 */
|
||||
bev = bufferevent_new(fd, http_readcb, http_writecb,
|
||||
@ -498,7 +506,7 @@ http_bad_request_test(void)
|
||||
struct bufferevent *bev = NULL;
|
||||
evutil_socket_t fd;
|
||||
const char *http_request;
|
||||
short port = -1;
|
||||
ev_uint16_t port, port2;
|
||||
|
||||
test_ok = 0;
|
||||
|
||||
@ -507,7 +515,7 @@ http_bad_request_test(void)
|
||||
http = http_setup(&port, NULL);
|
||||
|
||||
/* 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"));
|
||||
|
||||
/* NULL request test */
|
||||
@ -539,7 +547,7 @@ http_bad_request_test(void)
|
||||
/* Second answer (BAD REQUEST) on connection close */
|
||||
|
||||
/* 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 */
|
||||
bev = bufferevent_new(fd, http_badreq_readcb, http_writecb,
|
||||
@ -613,7 +621,7 @@ http_delete_test(void)
|
||||
struct bufferevent *bev;
|
||||
evutil_socket_t fd;
|
||||
const char *http_request;
|
||||
short port = -1;
|
||||
ev_uint16_t port;
|
||||
|
||||
test_ok = 0;
|
||||
|
||||
@ -651,7 +659,7 @@ static void http_request_empty_done(struct evhttp_request *, void *);
|
||||
static void
|
||||
_http_connection_test(int persistent)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
|
||||
@ -746,7 +754,7 @@ static struct regress_dns_server_table search_table[] = {
|
||||
static void
|
||||
http_connection_async_test(void)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
struct evdns_base *dns_base = NULL;
|
||||
@ -863,7 +871,7 @@ http_do_cancel(evutil_socket_t fd, short what, void *arg)
|
||||
static void
|
||||
http_cancel_test(void)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
struct timeval tv;
|
||||
@ -979,7 +987,7 @@ http_request_expect_error(struct evhttp_request *req, void *arg)
|
||||
static void
|
||||
http_virtual_host_test(void)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
struct evhttp *second = NULL, *third = NULL;
|
||||
@ -1150,7 +1158,7 @@ http_dispatcher_test_done(struct evhttp_request *req, void *arg)
|
||||
static void
|
||||
http_dispatcher_test(void)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
|
||||
@ -1199,7 +1207,7 @@ void http_postrequest_done(struct evhttp_request *, void *);
|
||||
static void
|
||||
http_post_test(void)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
|
||||
@ -1317,7 +1325,7 @@ void http_putrequest_done(struct evhttp_request *, void *);
|
||||
static void
|
||||
http_put_test(void)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
|
||||
@ -1444,7 +1452,7 @@ http_failure_test(void)
|
||||
struct bufferevent *bev;
|
||||
evutil_socket_t fd;
|
||||
const char *http_request;
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
|
||||
test_ok = 0;
|
||||
|
||||
@ -1527,7 +1535,7 @@ close_detect_cb(struct evhttp_request *req, void *arg)
|
||||
static void
|
||||
_http_close_detection(int with_delay)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
|
||||
@ -1663,7 +1671,7 @@ http_base_test(void *ptr)
|
||||
struct bufferevent *bev;
|
||||
evutil_socket_t fd;
|
||||
const char *http_request;
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
|
||||
test_ok = 0;
|
||||
base = event_init();
|
||||
@ -1741,7 +1749,7 @@ _http_incomplete_test(int use_timeout)
|
||||
struct bufferevent *bev;
|
||||
evutil_socket_t fd;
|
||||
const char *http_request;
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct timeval tv_start, tv_end;
|
||||
|
||||
test_ok = 0;
|
||||
@ -1943,7 +1951,7 @@ http_chunk_out_test(void)
|
||||
struct bufferevent *bev;
|
||||
evutil_socket_t fd;
|
||||
const char *http_request;
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct timeval tv_start, tv_end;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
@ -2014,7 +2022,7 @@ http_chunk_out_test(void)
|
||||
static void
|
||||
http_stream_out_test(void)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
|
||||
@ -2085,7 +2093,7 @@ _http_stream_in_test(char const *url,
|
||||
struct evhttp_connection *evcon;
|
||||
struct evbuffer *reply = evbuffer_new();
|
||||
struct evhttp_request *req = NULL;
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
|
||||
http = http_setup(&port, NULL);
|
||||
|
||||
@ -2154,7 +2162,7 @@ http_stream_in_cancel_test(void)
|
||||
{
|
||||
struct evhttp_connection *evcon;
|
||||
struct evhttp_request *req = NULL;
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
|
||||
http = http_setup(&port, NULL);
|
||||
|
||||
@ -2197,23 +2205,24 @@ http_connection_retry_done(struct evhttp_request *req, void *arg)
|
||||
static void
|
||||
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);
|
||||
}
|
||||
|
||||
static void
|
||||
http_connection_retry_test(void)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
struct timeval tv, tv_start, tv_end;
|
||||
|
||||
test_ok = 0;
|
||||
|
||||
/* auto detect the port */
|
||||
/* auto detect a port */
|
||||
http = http_setup(&port, NULL);
|
||||
evhttp_free(http);
|
||||
http = NULL;
|
||||
|
||||
evcon = evhttp_connection_new("127.0.0.1", port);
|
||||
tt_assert(evcon);
|
||||
@ -2299,7 +2308,7 @@ http_connection_retry_test(void)
|
||||
*/
|
||||
evutil_timerclear(&tv);
|
||||
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);
|
||||
event_dispatch();
|
||||
@ -2351,7 +2360,7 @@ http_multi_line_header_test(void)
|
||||
struct bufferevent *bev= NULL;
|
||||
evutil_socket_t fd = -1;
|
||||
const char *http_start_request;
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
|
||||
test_ok = 0;
|
||||
|
||||
@ -2402,7 +2411,7 @@ http_request_bad(struct evhttp_request *req, void *arg)
|
||||
static void
|
||||
http_negative_content_length_test(void)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
|
||||
@ -2450,7 +2459,7 @@ end:
|
||||
static void
|
||||
http_data_length_constraints_test(void)
|
||||
{
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
struct evhttp_request *req = NULL;
|
||||
char long_str[8192];
|
||||
@ -2596,7 +2605,7 @@ http_terminate_chunked_test(void)
|
||||
struct bufferevent *bev = NULL;
|
||||
struct timeval tv;
|
||||
const char *http_request;
|
||||
short port = -1;
|
||||
ev_uint16_t port = 0;
|
||||
evutil_socket_t fd = -1;
|
||||
|
||||
test_ok = 0;
|
||||
|
@ -63,25 +63,25 @@
|
||||
#include "regress.gen.h"
|
||||
|
||||
#include "regress.h"
|
||||
#include "regress_testutils.h"
|
||||
|
||||
static struct evhttp *
|
||||
http_setup(short *pport)
|
||||
http_setup(ev_uint16_t *pport)
|
||||
{
|
||||
int i;
|
||||
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 */
|
||||
for (i = 0; i < 50; ++i) {
|
||||
myhttp = evhttp_start("127.0.0.1", 8080 + i);
|
||||
if (myhttp != NULL) {
|
||||
port = 8080 + i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
sock = evhttp_bind_socket_with_handle(myhttp, "127.0.0.1", 0);
|
||||
if (!sock)
|
||||
event_errx(1, "Couldn't open web port");
|
||||
|
||||
if (port == -1)
|
||||
event_errx(1, "Could not start web server");
|
||||
port = regress_get_socket_port(evhttp_bound_socket_get_fd(sock));
|
||||
|
||||
*pport = port;
|
||||
return (myhttp);
|
||||
@ -126,9 +126,9 @@ NeverReplyCb(EVRPC_STRUCT(NeverReply)* rpc, void *arg)
|
||||
}
|
||||
|
||||
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 evrpc_base *base = NULL;
|
||||
|
||||
@ -175,7 +175,7 @@ rpc_postrequest_failure(struct evhttp_request *req, void *arg)
|
||||
static void
|
||||
rpc_basic_test(void)
|
||||
{
|
||||
short port;
|
||||
ev_uint16_t port;
|
||||
struct evhttp *http = NULL;
|
||||
struct evrpc_base *base = NULL;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
@ -244,7 +244,7 @@ rpc_postrequest_done(struct evhttp_request *req, void *arg)
|
||||
static void
|
||||
rpc_basic_message(void)
|
||||
{
|
||||
short port;
|
||||
ev_uint16_t port;
|
||||
struct evhttp *http = NULL;
|
||||
struct evrpc_base *base = NULL;
|
||||
struct evhttp_connection *evcon = NULL;
|
||||
@ -297,7 +297,7 @@ end:
|
||||
}
|
||||
|
||||
static struct evrpc_pool *
|
||||
rpc_pool_with_connection(short port)
|
||||
rpc_pool_with_connection(ev_uint16_t port)
|
||||
{
|
||||
struct evhttp_connection *evcon;
|
||||
struct evrpc_pool *pool;
|
||||
@ -435,7 +435,7 @@ rpc_hook_remove_header(void *ctx, struct evhttp_request *req,
|
||||
static void
|
||||
rpc_basic_client(void)
|
||||
{
|
||||
short port;
|
||||
ev_uint16_t port;
|
||||
struct evhttp *http = NULL;
|
||||
struct evrpc_base *base = NULL;
|
||||
struct evrpc_pool *pool = NULL;
|
||||
@ -519,7 +519,7 @@ end:
|
||||
static void
|
||||
rpc_basic_queued_client(void)
|
||||
{
|
||||
short port;
|
||||
ev_uint16_t port;
|
||||
struct evhttp *http = NULL;
|
||||
struct evrpc_base *base = NULL;
|
||||
struct evrpc_pool *pool = NULL;
|
||||
@ -617,7 +617,7 @@ rpc_hook_pause(void *ctx, struct evhttp_request *req, struct evbuffer *evbuf,
|
||||
static void
|
||||
rpc_basic_client_with_pause(void)
|
||||
{
|
||||
short port;
|
||||
ev_uint16_t port;
|
||||
struct evhttp *http = NULL;
|
||||
struct evrpc_base *base = NULL;
|
||||
struct evrpc_pool *pool = NULL;
|
||||
@ -668,7 +668,7 @@ end:
|
||||
static void
|
||||
rpc_client_timeout(void)
|
||||
{
|
||||
short port;
|
||||
ev_uint16_t port;
|
||||
struct evhttp *http = NULL;
|
||||
struct evrpc_base *base = NULL;
|
||||
struct evrpc_pool *pool = NULL;
|
||||
|
@ -27,6 +27,8 @@
|
||||
#ifndef _TESTUTILS_H
|
||||
#define _TESTUTILS_H
|
||||
|
||||
#include <event2/dns.h>
|
||||
|
||||
struct regress_dns_server_table {
|
||||
const char *q;
|
||||
const char *anstype;
|
||||
|
Loading…
x
Reference in New Issue
Block a user