From 57a51a161dd9a453bc1abf2ffa9b6149d1ce9ae2 Mon Sep 17 00:00:00 2001 From: Niels Provos Date: Sun, 4 Apr 2004 02:19:08 +0000 Subject: [PATCH] provide more regression tests svn:r98 --- test/regress.c | 168 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 154 insertions(+), 14 deletions(-) diff --git a/test/regress.c b/test/regress.c index a3e4e472..7361f227 100644 --- a/test/regress.c +++ b/test/regress.c @@ -1,5 +1,5 @@ /* - * Copyright 2003 Niels Provos + * Copyright (c) 2003, 2004 Niels Provos * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -245,19 +245,10 @@ cleanup_test(void) return (0); } -int -main (int argc, char **argv) +void +test1(void) { - struct event ev, ev2; - 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(); + struct event ev; /* Very simple read test */ setup_test("Simple read: "); @@ -270,6 +261,12 @@ main (int argc, char **argv) event_dispatch(); cleanup_test(); +} + +void +test2(void) +{ + struct event ev; /* Very simple write test */ setup_test("Simple write: "); @@ -279,6 +276,13 @@ main (int argc, char **argv) event_dispatch(); cleanup_test(); +} + +void +test3(void) +{ + struct event ev, ev2; + int i; /* Multiple read and write test */ setup_test("Multiple read/write: "); @@ -299,6 +303,13 @@ main (int argc, char **argv) test_ok = memcmp(rbuf, wbuf, sizeof(wbuf)) == 0; cleanup_test(); +} + +void +test4(void) +{ + struct event ev, ev2; + int i; /* Multiple read and write test with persist */ setup_test("Persist read/write: "); @@ -319,6 +330,12 @@ main (int argc, char **argv) test_ok = memcmp(rbuf, wbuf, sizeof(wbuf)) == 0; cleanup_test(); +} + +void +test5(void) +{ + struct both r1, r2, w1, w2; setup_test("Combined read/write: "); memset(&r1, 0, sizeof(r1)); @@ -344,7 +361,13 @@ main (int argc, char **argv) test_ok = 1; cleanup_test(); - +} + +void +test6(void) +{ + struct timeval tv; + struct event ev; setup_test("Simple timeout: "); @@ -357,6 +380,13 @@ main (int argc, char **argv) event_dispatch(); cleanup_test(); +} + +void +test7(void) +{ + struct event ev; + struct itimerval itv; setup_test("Simple signal: "); signal_set(&ev, SIGALRM, signal_cb, &ev); @@ -372,6 +402,116 @@ main (int argc, char **argv) signal_del(&ev); 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); } -- 2.50.1