Add more IOCP tests. They might not pass yet.

svn:r1487
This commit is contained in:
Nick Mathewson 2009-11-02 17:42:16 +00:00
parent 5d2c1650f3
commit 5f1d6e640f
4 changed files with 44 additions and 1 deletions

View File

@ -38,6 +38,7 @@ extern struct testcase_t main_testcases[];
extern struct testcase_t evtag_testcases[]; extern struct testcase_t evtag_testcases[];
extern struct testcase_t evbuffer_testcases[]; extern struct testcase_t evbuffer_testcases[];
extern struct testcase_t bufferevent_testcases[]; extern struct testcase_t bufferevent_testcases[];
extern struct testcase_t bufferevent_iocp_testcases[];
extern struct testcase_t util_testcases[]; extern struct testcase_t util_testcases[];
extern struct testcase_t signal_testcases[]; extern struct testcase_t signal_testcases[];
extern struct testcase_t http_testcases[]; extern struct testcase_t http_testcases[];
@ -82,6 +83,7 @@ void run_legacy_test_fn(void *ptr);
#define TT_LEGACY (TT_FIRST_USER_FLAG<<3) #define TT_LEGACY (TT_FIRST_USER_FLAG<<3)
#define TT_NEED_THREADS (TT_FIRST_USER_FLAG<<4) #define TT_NEED_THREADS (TT_FIRST_USER_FLAG<<4)
#define TT_NO_LOGS (TT_FIRST_USER_FLAG<<5) #define TT_NO_LOGS (TT_FIRST_USER_FLAG<<5)
#define TT_ENABLE_IOCP (TT_FIRST_USER_FLAG<<6)
/* All the flags that a legacy test needs. */ /* All the flags that a legacy test needs. */
#define TT_ISOLATED TT_FORK|TT_NEED_SOCKETPAIR|TT_NEED_BASE #define TT_ISOLATED TT_FORK|TT_NEED_SOCKETPAIR|TT_NEED_BASE

View File

@ -609,3 +609,25 @@ struct testcase_t bufferevent_testcases[] = {
END_OF_TESTCASES, END_OF_TESTCASES,
}; };
struct testcase_t bufferevent_iocp_testcases[] = {
LEGACY(bufferevent, TT_ISOLATED|TT_ENABLE_IOCP),
LEGACY(bufferevent_watermarks, TT_ISOLATED|TT_ENABLE_IOCP),
LEGACY(bufferevent_filters, TT_ISOLATED|TT_ENABLE_IOCP),
#if 0
{ "bufferevent_connect", test_bufferevent_connect, TT_FORK|TT_NEED_BASE,
&basic_setup, (void*)"" },
{ "bufferevent_connect_defer", test_bufferevent_connect,
TT_FORK|TT_NEED_BASE, &basic_setup, (void*)"defer" },
{ "bufferevent_connect_lock", test_bufferevent_connect,
TT_FORK|TT_NEED_BASE|TT_NEED_THREADS, &basic_setup, (void*)"lock" },
{ "bufferevent_connect_lock_defer", test_bufferevent_connect,
TT_FORK|TT_NEED_BASE|TT_NEED_THREADS, &basic_setup,
(void*)"defer lock" },
{ "bufferevent_connect_fail", test_bufferevent_connect_fail,
TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
#endif
END_OF_TESTCASES,
};

View File

@ -131,5 +131,9 @@ struct testcase_t listener_testcases[] = {
{ "randport", regress_pick_a_port, TT_FORK|TT_NEED_BASE, { "randport", regress_pick_a_port, TT_FORK|TT_NEED_BASE,
&basic_setup, NULL}, &basic_setup, NULL},
{ "iocp/randport", regress_pick_a_port,
TT_FORK|TT_NEED_BASE|TT_ENABLE_IOCP,
&basic_setup, NULL},
END_OF_TESTCASES, END_OF_TESTCASES,
}; };

View File

@ -75,6 +75,8 @@
#include "regress.h" #include "regress.h"
#include "tinytest.h" #include "tinytest.h"
#include "tinytest_macros.h" #include "tinytest_macros.h"
#include "../iocp-internal.h"
/* ============================================================ */ /* ============================================================ */
/* Code to wrap up old legacy test cases that used setup() and cleanup(). /* Code to wrap up old legacy test cases that used setup() and cleanup().
@ -132,6 +134,11 @@ basic_test_setup(const struct testcase_t *testcase)
int spair[2] = { -1, -1 }; int spair[2] = { -1, -1 };
struct basic_test_data *data = NULL; struct basic_test_data *data = NULL;
#ifndef WIN32
if (testcase->flags & TT_ENABLE_IOCP)
return (void*)TT_SKIP;
#endif
if (testcase->flags & TT_NEED_THREADS) { if (testcase->flags & TT_NEED_THREADS) {
if (!(testcase->flags & TT_FORK)) if (!(testcase->flags & TT_FORK))
return NULL; return NULL;
@ -170,7 +177,12 @@ basic_test_setup(const struct testcase_t *testcase)
if (!base) if (!base)
exit(1); exit(1);
} }
if (testcase->flags & TT_ENABLE_IOCP) {
if (event_base_start_iocp(base)<0) {
event_base_free(base);
return (void*)TT_SKIP;
}
}
if (testcase->flags & TT_NEED_DNS) { if (testcase->flags & TT_NEED_DNS) {
evdns_set_log_fn(dnslogcb); evdns_set_log_fn(dnslogcb);
@ -232,6 +244,8 @@ static void *
legacy_test_setup(const struct testcase_t *testcase) legacy_test_setup(const struct testcase_t *testcase)
{ {
struct basic_test_data *data = basic_test_setup(testcase); struct basic_test_data *data = basic_test_setup(testcase);
if (data == (void*)TT_SKIP)
return data;
global_base = data->base; global_base = data->base;
pair[0] = data->pair[0]; pair[0] = data->pair[0];
pair[1] = data->pair[1]; pair[1] = data->pair[1];
@ -306,6 +320,7 @@ struct testgroup_t testgroups[] = {
#ifdef WIN32 #ifdef WIN32
{ "iocp/", iocp_testcases }, { "iocp/", iocp_testcases },
#endif #endif
{ "iocp/bufferevent/", bufferevent_iocp_testcases },
#ifdef _EVENT_HAVE_OPENSSL #ifdef _EVENT_HAVE_OPENSSL
{ "ssl/", ssl_testcases }, { "ssl/", ssl_testcases },
#endif #endif