another test

svn:r53
This commit is contained in:
Niels Provos 2003-03-08 20:14:39 +00:00
parent 28d248e006
commit adf0bb84cd

View File

@ -169,6 +169,51 @@ signal_cb(int fd, short event, void *arg)
test_ok = 1; test_ok = 1;
} }
struct both {
struct event ev;
int nread;
};
void
combined_read_cb(int fd, short event, void *arg)
{
struct both *both = arg;
char buf[128];
int len;
len = read(fd, buf, sizeof(buf));
if (len == -1)
fprintf(stderr, "%s: read\n", __func__);
if (len <= 0)
return;
both->nread += len;
event_add(&both->ev, NULL);
}
void
combined_write_cb(int fd, short event, void *arg)
{
struct both *both = arg;
char buf[128];
int len;
len = sizeof(buf);
if (len > both->nread)
len = both->nread;
len = write(fd, buf, len);
if (len == -1)
fprintf(stderr, "%s: write\n", __func__);
if (len <= 0) {
shutdown(fd, SHUT_WR);
return;
}
both->nread -= len;
event_add(&both->ev, NULL);
}
/* Test infrastructure */ /* Test infrastructure */
int int
@ -209,6 +254,7 @@ main (int argc, char **argv)
struct event ev, ev2; struct event ev, ev2;
struct timeval tv; struct timeval tv;
struct itimerval itv; struct itimerval itv;
struct both r1, r2, w1, w2;
int i; int i;
setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0);
@ -277,6 +323,32 @@ main (int argc, char **argv)
cleanup_test(); cleanup_test();
setup_test("Combined read/write: ");
memset(&r1, 0, sizeof(r1));
memset(&r2, 0, sizeof(r2));
memset(&w1, 0, sizeof(w1));
memset(&w2, 0, sizeof(w2));
w1.nread = 4096;
w2.nread = 8192;
event_set(&r1.ev, pair[0], EV_READ, combined_read_cb, &r1);
event_set(&w1.ev, pair[0], EV_WRITE, combined_write_cb, &w1);
event_set(&r2.ev, pair[1], EV_READ, combined_read_cb, &r2);
event_set(&w2.ev, pair[1], EV_WRITE, combined_write_cb, &w2);
event_add(&r1.ev, NULL);
event_add(&w1.ev, NULL);
event_add(&r2.ev, NULL);
event_add(&w2.ev, NULL);
event_dispatch();
if (r1.nread == 8192 && r2.nread == 4096)
test_ok = 1;
cleanup_test();
setup_test("Simple timeout: "); setup_test("Simple timeout: ");
tv.tv_usec = 0; tv.tv_usec = 0;