Separate uv_getaddrinfo tests

This commit is contained in:
Bert Belder 2011-06-25 15:33:52 +02:00
parent 631a9bb626
commit 16f471fa2e
2 changed files with 43 additions and 76 deletions

View File

@ -27,120 +27,84 @@
#include <string.h> /* strlen */
#define CONCURRENT_COUNT 10
static uv_buf_t alloc_cb(uv_handle_t* handle, size_t size) {
uv_buf_t buf;
buf.base = (char*)malloc(size);
buf.len = size;
return buf;
}
int getaddrinfo_callbacks;
uv_getaddrinfo_t getaddrinfo_handle;
static void getaddrinfo_callback(uv_getaddrinfo_t* handle, int status, struct addrinfo* res) {
ASSERT(handle == &getaddrinfo_handle);
getaddrinfo_callbacks++;
}
static const char* name = "localhost";
static uv_getaddrinfo_t getaddrinfo_handle;
static int getaddrinfo_cbs = 0;
/* data used for running multiple calls concurrently */
#define CONCURRENT_COUNT 10
int callback_counts[CONCURRENT_COUNT];
uv_getaddrinfo_t getaddrinfo_handles[CONCURRENT_COUNT];
static uv_getaddrinfo_t getaddrinfo_handles[CONCURRENT_COUNT];
static int callback_counts[CONCURRENT_COUNT];
static void getaddrinfo_cuncurrent_cb(uv_getaddrinfo_t* handle, int status, struct addrinfo* res) {
static void getaddrinfo_basic_cb(uv_getaddrinfo_t* handle,
int status,
struct addrinfo* res) {
ASSERT(handle == &getaddrinfo_handle);
getaddrinfo_cbs++;
}
static void getaddrinfo_cuncurrent_cb(uv_getaddrinfo_t* handle,
int status,
struct addrinfo* res) {
int i;
for (i = 0; i < CONCURRENT_COUNT; i++) {
if (&getaddrinfo_handles[i] == handle) {
callback_counts[i]++;
break;
}
}
ASSERT (i < CONCURRENT_COUNT);
getaddrinfo_cbs++;
}
TEST_IMPL(getaddrinfo) {
int rc = 0;
char* name = "localhost";
int i;
TEST_IMPL(getaddrinfo_basic) {
int r;
uv_init();
printf("Start basic getaddrinfo test\n");
getaddrinfo_callbacks = 0;
uv_getaddrinfo(&getaddrinfo_handle,
&getaddrinfo_callback,
name,
NULL,
NULL);
r = uv_getaddrinfo(&getaddrinfo_handle,
&getaddrinfo_basic_cb,
name,
NULL,
NULL);
ASSERT(r == 0);
uv_run();
ASSERT(getaddrinfo_callbacks == 1);
ASSERT(getaddrinfo_cbs == 1);
printf("Done basic getaddrinfo test\n");
return 0;
}
printf("Start multiple getaddrinfo sequential test\n");
TEST_IMPL(getaddrinfo_concurrent) {
int i, r;
getaddrinfo_callbacks = 0;
uv_init();
uv_getaddrinfo(&getaddrinfo_handle,
&getaddrinfo_callback,
name,
NULL,
NULL);
uv_run();
ASSERT(getaddrinfo_callbacks == 1);
getaddrinfo_callbacks = 0;
uv_getaddrinfo(&getaddrinfo_handle,
&getaddrinfo_callback,
name,
NULL,
NULL);
uv_run();
ASSERT(getaddrinfo_callbacks == 1);
printf("Done multiple getaddrinfo sequential test test\n");
printf("Start multiple getaddrinfo concurrent test\n");
for (i = 0; i < CONCURRENT_COUNT; i++)
{
for (i = 0; i < CONCURRENT_COUNT; i++) {
callback_counts[i] = 0;
uv_getaddrinfo(&getaddrinfo_handles[i],
r = uv_getaddrinfo(&getaddrinfo_handles[i],
&getaddrinfo_cuncurrent_cb,
name,
NULL,
NULL);
ASSERT(r == 0);
}
uv_run();
for (i = 0; i < CONCURRENT_COUNT; i++)
{
for (i = 0; i < CONCURRENT_COUNT; i++) {
ASSERT(callback_counts[i] == 1);
}
printf("Done multiple getaddrinfo concurrent test\n");
return 0;
}

View File

@ -43,8 +43,9 @@ TEST_DECLARE (check_ref)
TEST_DECLARE (async)
TEST_DECLARE (get_currentexe)
TEST_DECLARE (hrtime)
TEST_DECLARE (getaddrinfo_basic)
TEST_DECLARE (getaddrinfo_concurrent)
TEST_DECLARE (gethostbyname)
TEST_DECLARE (getaddrinfo)
TEST_DECLARE (fail_always)
TEST_DECLARE (pass_always)
HELPER_DECLARE (echo_server)
@ -97,7 +98,9 @@ TASK_LIST_START
TEST_ENTRY (get_currentexe)
TEST_ENTRY (hrtime)
TEST_ENTRY (getaddrinfo)
TEST_ENTRY (getaddrinfo_basic)
TEST_ENTRY (getaddrinfo_concurrent)
TEST_ENTRY (gethostbyname)
TEST_HELPER (gethostbyname, echo_server)