source: trunk/third/sendmail/libsm/t-event.c @ 19204

Revision 19204, 1.7 KB checked in by zacheiss, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r19203, which included commits to RCS files with non-trunk default branches.
Line 
1/*
2 * Copyright (c) 2001-2002 Sendmail, Inc. and its suppliers.
3 *      All rights reserved.
4 *
5 * By using this file, you agree to the terms and conditions set
6 * forth in the LICENSE file which can be found at the top level of
7 * the sendmail distribution.
8 */
9
10#include <sm/gen.h>
11SM_RCSID("@(#)$Id: t-event.c,v 1.1.1.1 2003-04-08 15:07:24 zacheiss Exp $")
12
13#include <stdio.h>
14
15#include <stdlib.h>
16#include <unistd.h>
17# include <sys/wait.h>
18#if SM_CONF_SETITIMER
19# include <sys/time.h>
20#endif /* SM_CONF_SETITIMER */
21
22#include <sm/clock.h>
23#include <sm/test.h>
24
25int check;
26
27void
28evcheck(arg)
29        int arg;
30{
31        SM_TEST(arg == 3);
32        SM_TEST(check == 0);
33        check++;
34}
35
36void
37ev1(arg)
38        int arg;
39{
40        SM_TEST(arg == 1);
41}
42
43/* define as x if you want debug output */
44#define DBG_OUT(x)
45
46int
47main(argc, argv)
48        int argc;
49        char *argv[];
50{
51        SM_EVENT *ev;
52
53        sm_test_begin(argc, argv, "test event handling");
54        fprintf(stdout, "This test may hang. If there is no output within twelve seconds, abort it\nand recompile with -DSM_CONF_SETITIMER=%d\n",
55                SM_CONF_SETITIMER == 0 ? 1 : 0);
56        sleep(1);
57        SM_TEST(1 == 1);
58        DBG_OUT(fprintf(stdout, "We're back, test 1 seems to work.\n"));
59        ev = sm_seteventm(1000, ev1, 1);
60        sleep(1);
61        SM_TEST(2 == 2);
62        DBG_OUT(fprintf(stdout, "We're back, test 2 seems to work.\n"));
63
64        /* schedule an event in 9s */
65        ev = sm_seteventm(9000, ev1, 2);
66        sleep(1);
67
68        /* clear the event before it can fire */
69        sm_clrevent(ev);
70        SM_TEST(3 == 3);
71        DBG_OUT(fprintf(stdout, "We're back, test 3 seems to work.\n"));
72
73        /* schedule an event in 1s */
74        check = 0;
75        ev = sm_seteventm(1000, evcheck, 3);
76        sleep(2);
77
78        /* clear the event */
79        sm_clrevent(ev);
80        SM_TEST(4 == 4);
81        SM_TEST(check == 1);
82        DBG_OUT(fprintf(stdout, "We're back, test 4 seems to work.\n"));
83
84        return sm_test_end();
85}
Note: See TracBrowser for help on using the repository browser.