mirror of
https://github.com/libevent/libevent.git
synced 2025-01-09 00:56:20 +08:00
provide more regression tests
svn:r98
This commit is contained in:
parent
85fbdbb243
commit
57a51a161d
166
test/regress.c
166
test/regress.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2003 Niels Provos <provos@citi.umich.edu>
|
* Copyright (c) 2003, 2004 Niels Provos <provos@citi.umich.edu>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -245,19 +245,10 @@ cleanup_test(void)
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
void
|
||||||
main (int argc, char **argv)
|
test1(void)
|
||||||
{
|
{
|
||||||
struct event ev, ev2;
|
struct event ev;
|
||||||
struct timeval tv;
|
|
||||||
struct itimerval itv;
|
|
||||||
struct both r1, r2, w1, w2;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
setvbuf(stdout, NULL, _IONBF, 0);
|
|
||||||
|
|
||||||
/* Initalize the event library */
|
|
||||||
event_init();
|
|
||||||
|
|
||||||
/* Very simple read test */
|
/* Very simple read test */
|
||||||
setup_test("Simple read: ");
|
setup_test("Simple read: ");
|
||||||
@ -270,6 +261,12 @@ main (int argc, char **argv)
|
|||||||
event_dispatch();
|
event_dispatch();
|
||||||
|
|
||||||
cleanup_test();
|
cleanup_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test2(void)
|
||||||
|
{
|
||||||
|
struct event ev;
|
||||||
|
|
||||||
/* Very simple write test */
|
/* Very simple write test */
|
||||||
setup_test("Simple write: ");
|
setup_test("Simple write: ");
|
||||||
@ -279,6 +276,13 @@ main (int argc, char **argv)
|
|||||||
event_dispatch();
|
event_dispatch();
|
||||||
|
|
||||||
cleanup_test();
|
cleanup_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test3(void)
|
||||||
|
{
|
||||||
|
struct event ev, ev2;
|
||||||
|
int i;
|
||||||
|
|
||||||
/* Multiple read and write test */
|
/* Multiple read and write test */
|
||||||
setup_test("Multiple read/write: ");
|
setup_test("Multiple read/write: ");
|
||||||
@ -299,6 +303,13 @@ main (int argc, char **argv)
|
|||||||
test_ok = memcmp(rbuf, wbuf, sizeof(wbuf)) == 0;
|
test_ok = memcmp(rbuf, wbuf, sizeof(wbuf)) == 0;
|
||||||
|
|
||||||
cleanup_test();
|
cleanup_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test4(void)
|
||||||
|
{
|
||||||
|
struct event ev, ev2;
|
||||||
|
int i;
|
||||||
|
|
||||||
/* Multiple read and write test with persist */
|
/* Multiple read and write test with persist */
|
||||||
setup_test("Persist read/write: ");
|
setup_test("Persist read/write: ");
|
||||||
@ -319,6 +330,12 @@ main (int argc, char **argv)
|
|||||||
test_ok = memcmp(rbuf, wbuf, sizeof(wbuf)) == 0;
|
test_ok = memcmp(rbuf, wbuf, sizeof(wbuf)) == 0;
|
||||||
|
|
||||||
cleanup_test();
|
cleanup_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test5(void)
|
||||||
|
{
|
||||||
|
struct both r1, r2, w1, w2;
|
||||||
|
|
||||||
setup_test("Combined read/write: ");
|
setup_test("Combined read/write: ");
|
||||||
memset(&r1, 0, sizeof(r1));
|
memset(&r1, 0, sizeof(r1));
|
||||||
@ -344,7 +361,13 @@ main (int argc, char **argv)
|
|||||||
test_ok = 1;
|
test_ok = 1;
|
||||||
|
|
||||||
cleanup_test();
|
cleanup_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test6(void)
|
||||||
|
{
|
||||||
|
struct timeval tv;
|
||||||
|
struct event ev;
|
||||||
|
|
||||||
setup_test("Simple timeout: ");
|
setup_test("Simple timeout: ");
|
||||||
|
|
||||||
@ -357,6 +380,13 @@ main (int argc, char **argv)
|
|||||||
event_dispatch();
|
event_dispatch();
|
||||||
|
|
||||||
cleanup_test();
|
cleanup_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test7(void)
|
||||||
|
{
|
||||||
|
struct event ev;
|
||||||
|
struct itimerval itv;
|
||||||
|
|
||||||
setup_test("Simple signal: ");
|
setup_test("Simple signal: ");
|
||||||
signal_set(&ev, SIGALRM, signal_cb, &ev);
|
signal_set(&ev, SIGALRM, signal_cb, &ev);
|
||||||
@ -372,6 +402,116 @@ main (int argc, char **argv)
|
|||||||
signal_del(&ev);
|
signal_del(&ev);
|
||||||
|
|
||||||
cleanup_test();
|
cleanup_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test8(void)
|
||||||
|
{
|
||||||
|
struct timeval tv, tv_start, tv_end;
|
||||||
|
struct event ev;
|
||||||
|
|
||||||
|
setup_test("Loop exit: ");
|
||||||
|
|
||||||
|
tv.tv_usec = 0;
|
||||||
|
tv.tv_sec = 60*60*24;
|
||||||
|
evtimer_set(&ev, timeout_cb, NULL);
|
||||||
|
evtimer_add(&ev, &tv);
|
||||||
|
|
||||||
|
tv.tv_usec = 0;
|
||||||
|
tv.tv_sec = 1;
|
||||||
|
event_loopexit(&tv);
|
||||||
|
|
||||||
|
gettimeofday(&tv_start, NULL);
|
||||||
|
event_dispatch();
|
||||||
|
gettimeofday(&tv_end, NULL);
|
||||||
|
timersub(&tv_end, &tv_start, &tv_end);
|
||||||
|
|
||||||
|
evtimer_del(&ev);
|
||||||
|
|
||||||
|
if (tv.tv_sec < 2)
|
||||||
|
test_ok = 1;
|
||||||
|
|
||||||
|
cleanup_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
readcb(struct bufferevent *bev, void *arg)
|
||||||
|
{
|
||||||
|
if (EVBUFFER_LENGTH(bev->input) == 4096) {
|
||||||
|
bufferevent_disable(bev, EV_READ);
|
||||||
|
test_ok++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
writecb(struct bufferevent *bev, void *arg)
|
||||||
|
{
|
||||||
|
if (EVBUFFER_LENGTH(bev->output) == 0)
|
||||||
|
test_ok++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
errorcb(struct bufferevent *bev, short what, void *arg)
|
||||||
|
{
|
||||||
|
test_ok = -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test9(void)
|
||||||
|
{
|
||||||
|
struct bufferevent *bev1, *bev2;
|
||||||
|
char buffer[4096];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
setup_test("Bufferevent: ");
|
||||||
|
|
||||||
|
bev1 = bufferevent_new(pair[0], readcb, writecb, errorcb, NULL);
|
||||||
|
bev2 = bufferevent_new(pair[1], readcb, writecb, errorcb, NULL);
|
||||||
|
|
||||||
|
bufferevent_disable(bev1, EV_READ);
|
||||||
|
bufferevent_enable(bev2, EV_READ);
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof(buffer); i++)
|
||||||
|
buffer[0] = i;
|
||||||
|
|
||||||
|
bufferevent_write(bev1, buffer, sizeof(buffer));
|
||||||
|
|
||||||
|
event_dispatch();
|
||||||
|
|
||||||
|
bufferevent_free(bev1);
|
||||||
|
bufferevent_free(bev2);
|
||||||
|
|
||||||
|
if (test_ok != 2)
|
||||||
|
test_ok = 0;
|
||||||
|
|
||||||
|
cleanup_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
setvbuf(stdout, NULL, _IONBF, 0);
|
||||||
|
|
||||||
|
/* Initalize the event library */
|
||||||
|
event_init();
|
||||||
|
|
||||||
|
test1();
|
||||||
|
|
||||||
|
test2();
|
||||||
|
|
||||||
|
test3();
|
||||||
|
|
||||||
|
test4();
|
||||||
|
|
||||||
|
test5();
|
||||||
|
|
||||||
|
test6();
|
||||||
|
|
||||||
|
test7();
|
||||||
|
|
||||||
|
test8();
|
||||||
|
|
||||||
|
test9();
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user