]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
migrate t_timers to lib/isc/tests/timer_test
authorEvan Hunt <each@isc.org>
Tue, 27 Feb 2018 22:29:49 +0000 (14:29 -0800)
committerEvan Hunt <each@isc.org>
Sat, 10 Mar 2018 02:40:05 +0000 (18:40 -0800)
(cherry picked from commit e2b8699df9643c90ed196900fd80174430ada5a2)
(cherry picked from commit efccdad0ea85036adb816e0f2b451b2f65a454a2)
(cherry picked from commit 274ee0b425babc818296a1a3d5a456f6ee6a76ef)

32 files changed:
bin/tests/.gitignore
bin/tests/Makefile.in
bin/tests/timers/Makefile.in [deleted file]
bin/tests/timers/t_timers.c [deleted file]
bin/tests/timers/win32/t_timers.dsp.in [deleted file]
bin/tests/timers/win32/t_timers.dsw [deleted file]
bin/tests/timers/win32/t_timers.mak.in [deleted file]
bin/tests/timers/win32/t_timers.vcxproj.filters.in [deleted file]
bin/tests/timers/win32/t_timers.vcxproj.in [deleted file]
bin/tests/timers/win32/t_timers.vcxproj.user [deleted file]
configure
configure.in
lib/isc/tests/Atffile
lib/isc/tests/Makefile.in
lib/isc/tests/atomic_test.c
lib/isc/tests/counter_test.c
lib/isc/tests/isctest.c
lib/isc/tests/isctest.h
lib/isc/tests/mem_test.c
lib/isc/tests/parse_test.c
lib/isc/tests/pool_test.c
lib/isc/tests/queue_test.c
lib/isc/tests/radix_test.c
lib/isc/tests/sockaddr_test.c
lib/isc/tests/socket_test.c
lib/isc/tests/symtab_test.c
lib/isc/tests/task_test.c
lib/isc/tests/taskpool_test.c
lib/isc/tests/timer_test.c [new file with mode: 0644]
util/copyrights
win32utils/Configure
win32utils/bind9.sln.in

index 332a28d98725e9a021d51397ab74ce6b53011749..ec5d6864d413cedd7de1eba4e8f45d5d02fe1daa 100644 (file)
@@ -17,5 +17,4 @@ keycreate
 keydelete
 gssapi_krb
 t_tasks
-t_timers
 makejournal
index 30a3ba117dc22a02b029010bb1d39045da1ae9ca..a337ebb2bb8c79693b2aa1265e9293bb486f6832 100644 (file)
@@ -40,8 +40,8 @@ ISCCFGDEPLIBS = ../../lib/isccfg/libisccfg.@A@
 
 LIBS =         @LIBS@
 
-SUBDIRS =      db dst names \
-               rbt resolver tasks timers system @PKCS11_TOOLS@ optional
+SUBDIRS =      db dst names rbt resolver tasks system \
+               @PKCS11_TOOLS@ optional
 
 # Test programs that are built by default:
 # cfg_test is needed for regenerating doc/misc/options
diff --git a/bin/tests/timers/Makefile.in b/bin/tests/timers/Makefile.in
deleted file mode 100644 (file)
index 75c3787..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (C) 2004, 2007, 2009, 2012, 2014  Internet Systems Consortium, Inc. ("ISC")
-# Copyright (C) 1999-2002  Internet Software Consortium.
-#
-# Permission to use, copy, modify, and/or distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-# $Id: Makefile.in,v 1.32 2009/12/05 23:31:40 each Exp $
-
-srcdir =       @srcdir@
-VPATH =                @srcdir@
-top_srcdir =   @top_srcdir@
-
-@BIND9_MAKE_INCLUDES@
-
-CINCLUDES =    ${TEST_INCLUDES} ${ISC_INCLUDES}
-
-CDEFINES =
-CWARNINGS =
-
-ISCLIBS =      ../../../lib/isc/libisc.@A@ @ISC_OPENSSL_LIBS@
-
-ISCDEPLIBS =   ../../../lib/isc/libisc.@A@
-
-DEPLIBS =      ${ISCDEPLIBS}
-
-LIBS =         ${ISCLIBS} @LIBS@
-
-TLIB =         ../../../lib/tests/libt_api.@A@
-
-TARGETS =      t_timers@EXEEXT@
-
-SRCS =         t_timers.c
-
-@BIND9_MAKE_RULES@
-
-t_timers@EXEEXT@: t_timers.@O@ ${DEPLIBS} ${TLIB}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ t_timers.@O@ ${TLIB} ${LIBS}
-
-test: t_timers@EXEEXT@
-       -@./t_timers@EXEEXT@ -c @top_srcdir@/t_config -b @srcdir@ -q 60 -a
-
-testhelp:
-       @./t_timers@EXEEXT@ -h
-
-clean distclean::
-       rm -f ${TARGETS}
diff --git a/bin/tests/timers/t_timers.c b/bin/tests/timers/t_timers.c
deleted file mode 100644 (file)
index 94fb4f9..0000000
+++ /dev/null
@@ -1,1133 +0,0 @@
-/*
- * Copyright (C) 2004, 2007-2009, 2011, 2013  Internet Systems Consortium, Inc. ("ISC")
- * Copyright (C) 1999-2001  Internet Software Consortium.
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/* $Id: t_timers.c,v 1.33 2011/03/14 14:13:10 fdupont Exp $ */
-
-#include <config.h>
-
-#include <stdlib.h>
-
-#include <isc/condition.h>
-#include <isc/mem.h>
-#include <isc/platform.h>
-#include <isc/task.h>
-#include <isc/time.h>
-#include <isc/timer.h>
-#include <isc/util.h>
-
-#include <tests/t_api.h>
-
-#ifdef ISC_PLATFORM_USETHREADS
-isc_boolean_t threaded = ISC_TRUE;
-#else
-isc_boolean_t threaded = ISC_FALSE;
-#endif
-
-#define        Tx_FUDGE_SECONDS        0            /* in absence of clock_getres() */
-#define        Tx_FUDGE_NANOSECONDS    500000000    /* in absence of clock_getres() */
-
-static isc_time_t      Tx_endtime;
-static isc_time_t      Tx_lasttime;
-static int             Tx_eventcnt;
-static int             Tx_nevents;
-static isc_mutex_t     Tx_mx;
-static isc_condition_t Tx_cv;
-static int             Tx_nfails;
-static int             Tx_nprobs;
-static isc_timer_t    *Tx_timer;
-static int             Tx_seconds;
-static int             Tx_nanoseconds;
-
-static void
-require_threads(void) {
-       t_info("This test requires threads\n");
-       t_result(T_THREADONLY);
-       return;
-}
-
-static void
-tx_sde(isc_task_t *task, isc_event_t *event) {
-       isc_result_t    isc_result;
-
-       UNUSED(task);
-       UNUSED(event);
-
-       /*
-        * Signal shutdown processing complete.
-        */
-       isc_result = isc_mutex_lock(&Tx_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_lock failed %s\n",
-                      isc_result_totext(isc_result));
-               ++Tx_nprobs;
-       }
-
-       isc_result = isc_condition_signal(&Tx_cv);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_condition_signal failed %s\n",
-                      isc_result_totext(isc_result));
-               ++Tx_nprobs;
-       }
-
-       isc_result = isc_mutex_unlock(&Tx_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_unlock failed %s\n",
-                      isc_result_totext(isc_result));
-               ++Tx_nprobs;
-       }
-
-       isc_event_free(&event);
-}
-
-static void
-tx_te(isc_task_t *task, isc_event_t *event) {
-       isc_result_t    isc_result;
-       isc_time_t      now;
-       isc_time_t      base;
-       isc_time_t      ulim;
-       isc_time_t      llim;
-       isc_interval_t  interval;
-       isc_eventtype_t expected_event_type;
-
-       ++Tx_eventcnt;
-
-       t_info("tick %d\n", Tx_eventcnt);
-
-       expected_event_type = ISC_TIMEREVENT_LIFE;
-       if ((isc_timertype_t) event->ev_arg == isc_timertype_ticker)
-               expected_event_type = ISC_TIMEREVENT_TICK;
-
-       if (event->ev_type != expected_event_type) {
-               t_info("expected event type %d, got %d\n",
-                       expected_event_type, (int) event->ev_type);
-               ++Tx_nfails;
-       }
-
-       isc_result = isc_time_now(&now);
-       if (isc_result == ISC_R_SUCCESS) {
-               isc_interval_set(&interval, Tx_seconds, Tx_nanoseconds);
-               isc_result = isc_time_add(&Tx_lasttime, &interval, &base);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_time_add failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-       } else {
-               t_info("isc_time_now failed %s\n",
-                       isc_result_totext(isc_result));
-               ++Tx_nprobs;
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               isc_interval_set(&interval,
-                                Tx_FUDGE_SECONDS, Tx_FUDGE_NANOSECONDS);
-               isc_result = isc_time_add(&base, &interval, &ulim);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_time_add failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               isc_result = isc_time_subtract(&base, &interval, &llim);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_time_subtract failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               if (isc_time_compare(&llim, &now) > 0) {
-                       t_info("timer range error: early by "
-                              "%lu microseconds\n",
-                              (unsigned long)isc_time_microdiff(&base, &now));
-                       ++Tx_nfails;
-               } else if (isc_time_compare(&ulim, &now) < 0) {
-                       t_info("timer range error: late by "
-                              "%lu microseconds\n",
-                              (unsigned long)isc_time_microdiff(&now, &base));
-                       ++Tx_nfails;
-               }
-               Tx_lasttime = now;
-       }
-
-       if (Tx_eventcnt == Tx_nevents) {
-               isc_result = isc_time_now(&Tx_endtime);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_time_now failed %s\n",
-                               isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-               isc_timer_detach(&Tx_timer);
-               isc_task_shutdown(task);
-       }
-
-       isc_event_free(&event);
-}
-
-static void
-t_timers_x(isc_timertype_t timertype, isc_time_t *expires,
-          isc_interval_t *interval,
-          void (*action)(isc_task_t *, isc_event_t *))
-{
-       char            *p;
-       isc_mem_t       *mctx;
-       isc_taskmgr_t   *tmgr;
-       isc_task_t      *task;
-       unsigned int    workers;
-       isc_result_t    isc_result;
-       isc_timermgr_t  *timermgr;
-
-       Tx_eventcnt = 0;
-       isc_time_settoepoch(&Tx_endtime);
-
-       workers = 2;
-       p = t_getenv("ISC_TASK_WORKERS");
-       if (p != NULL)
-               workers = atoi(p);
-
-       mctx = NULL;
-       isc_result = isc_mem_create(0, 0, &mctx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mem_create failed %s\n",
-                      isc_result_totext(isc_result));
-               ++Tx_nprobs;
-               return;
-       }
-
-       isc_result = isc_mutex_init(&Tx_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_init failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_mem_destroy(&mctx);
-               ++Tx_nprobs;
-               return;
-       }
-
-       isc_result = isc_condition_init(&Tx_cv);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_condition_init failed %s\n",
-                      isc_result_totext(isc_result));
-               DESTROYLOCK(&Tx_mx);
-               isc_mem_destroy(&mctx);
-               ++Tx_nprobs;
-               return;
-       }
-
-       tmgr = NULL;
-       isc_result = isc_taskmgr_create(mctx, workers, 0, &tmgr);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_taskmgr_create failed %s\n",
-                      isc_result_totext(isc_result));
-               DESTROYLOCK(&Tx_mx);
-               (void) isc_condition_destroy(&Tx_cv);
-               isc_mem_destroy(&mctx);
-               ++Tx_nprobs;
-               return;
-       }
-
-       timermgr = NULL;
-       isc_result = isc_timermgr_create(mctx, &timermgr);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_timermgr_create failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&Tx_mx);
-               (void) isc_condition_destroy(&Tx_cv);
-               isc_mem_destroy(&mctx);
-               ++Tx_nprobs;
-               return;
-       }
-
-       isc_result = isc_mutex_lock(&Tx_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_lock failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_timermgr_destroy(&timermgr);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&Tx_mx);
-               (void) isc_condition_destroy(&Tx_cv);
-               isc_mem_destroy(&mctx);
-               ++Tx_nprobs;
-               return;
-       }
-
-       task = NULL;
-       isc_result = isc_task_create(tmgr, 0, &task);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_task_create failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_timermgr_destroy(&timermgr);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&Tx_mx);
-               (void) isc_condition_destroy(&Tx_cv);
-               isc_mem_destroy(&mctx);
-               ++Tx_nprobs;
-               return;
-       }
-
-       isc_result = isc_task_onshutdown(task, tx_sde, NULL);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_task_onshutdown failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_timermgr_destroy(&timermgr);
-               isc_task_destroy(&task);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&Tx_mx);
-               (void) isc_condition_destroy(&Tx_cv);
-               isc_mem_destroy(&mctx);
-               ++Tx_nprobs;
-               return;
-       }
-
-       isc_result = isc_time_now(&Tx_lasttime);
-       if (isc_result != ISC_R_SUCCESS) {
-               isc_timermgr_destroy(&timermgr);
-               isc_task_destroy(&task);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&Tx_mx);
-               (void) isc_condition_destroy(&Tx_cv);
-               isc_mem_destroy(&mctx);
-               ++Tx_nprobs;
-               return;
-       }
-
-       Tx_timer = NULL;
-       isc_result = isc_timer_create(timermgr, timertype, expires, interval,
-                                     task, action, (void *)timertype,
-                                     &Tx_timer);
-
-       if (isc_result != ISC_R_SUCCESS) {
-               isc_timermgr_destroy(&timermgr);
-               isc_task_destroy(&task);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&Tx_mx);
-               (void) isc_condition_destroy(&Tx_cv);
-               isc_mem_destroy(&mctx);
-               ++Tx_nprobs;
-               return;
-       }
-
-       /*
-        * Wait for shutdown processing to complete.
-        */
-       while (Tx_eventcnt != Tx_nevents) {
-               isc_result = isc_condition_wait(&Tx_cv, &Tx_mx);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_condition_waituntil failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-       }
-
-       isc_result = isc_mutex_unlock(&Tx_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_unlock failed %s\n",
-                      isc_result_totext(isc_result));
-               ++Tx_nprobs;
-       }
-
-       isc_task_detach(&task);
-       isc_taskmgr_destroy(&tmgr);
-       isc_timermgr_destroy(&timermgr);
-       DESTROYLOCK(&Tx_mx);
-       (void) isc_condition_destroy(&Tx_cv);
-       isc_mem_destroy(&mctx);
-
-}
-
-#define        T1_SECONDS      2
-#define        T1_NANOSECONDS  500000000
-
-static const char *a1 =
-       "When type is isc_timertype_ticker, a call to isc_timer_create() "
-       "creates a timer that posts an ISC_TIMEREVENT_TICK event to the "
-       "specified task every 'interval' seconds and returns ISC_R_SUCCESS.";
-
-static void
-t1(void) {
-       int             result;
-       isc_time_t      expires;
-       isc_interval_t  interval;
-
-       t_assert("isc_timer_create", 1, T_REQUIRED, "%s", a1);
-
-       if (threaded) {
-               Tx_nfails       = 0;
-               Tx_nprobs       = 0;
-               Tx_nevents      = 12;
-               Tx_seconds      = T1_SECONDS;
-               Tx_nanoseconds  = T1_NANOSECONDS;
-               isc_interval_set(&interval, Tx_seconds, Tx_nanoseconds);
-               isc_time_settoepoch(&expires);
-
-               t_timers_x(isc_timertype_ticker, &expires, &interval, tx_te);
-
-               result = T_UNRESOLVED;
-
-               if ((Tx_nfails == 0) && (Tx_nprobs == 0))
-                       result = T_PASS;
-               else if (Tx_nfails)
-                       result = T_FAIL;
-
-               t_result(result);
-       } else
-               require_threads();
-}
-
-#define        T2_SECONDS      5
-#define        T2_NANOSECONDS  300000000;
-
-static const char *a2 =
-       "When type is isc_timertype_once, a call to isc_timer_create() "
-       "creates a timer that posts an ISC_TIMEEVENT_LIFE event to the "
-       "specified task when the current time reaches or exceeds the time "
-       "specified by 'expires'.";
-
-static void
-t2(void) {
-       int             result;
-       int             isc_result;
-       isc_time_t      expires;
-       isc_interval_t  interval;
-
-       t_assert("isc_timer_create", 2, T_REQUIRED, "%s", a2);
-
-       if (threaded) {
-               Tx_nfails       = 0;
-               Tx_nprobs       = 0;
-               Tx_nevents      = 1;
-               Tx_seconds      = T2_SECONDS;
-               Tx_nanoseconds  = T2_NANOSECONDS;
-               isc_interval_set(&interval, Tx_seconds, Tx_nanoseconds);
-
-               isc_result = isc_time_nowplusinterval(&expires, &interval);
-               if (isc_result == ISC_R_SUCCESS) {
-
-                       isc_interval_set(&interval, 0, 0);
-                       t_timers_x(isc_timertype_once, &expires, &interval,
-                                  tx_te);
-
-               } else {
-                       t_info("isc_time_nowplusinterval failed %s\n",
-                              isc_result_totext(isc_result));
-               }
-
-               result = T_UNRESOLVED;
-
-               if ((Tx_nfails == 0) && (Tx_nprobs == 0))
-                       result = T_PASS;
-               else if (Tx_nfails)
-                       result = T_FAIL;
-
-               t_result(result);
-       } else
-               require_threads();
-}
-
-static void
-t3_te(isc_task_t *task, isc_event_t *event) {
-       isc_result_t    isc_result;
-       isc_time_t      now;
-       isc_time_t      base;
-       isc_time_t      ulim;
-       isc_time_t      llim;
-       isc_interval_t  interval;
-
-       ++Tx_eventcnt;
-
-       t_info("tick %d\n", Tx_eventcnt);
-
-       isc_result = isc_time_now(&now);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_time_now failed %s\n",
-                      isc_result_totext(isc_result));
-               ++Tx_nprobs;
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               isc_interval_set(&interval, Tx_seconds, Tx_nanoseconds);
-               isc_result = isc_time_add(&Tx_lasttime, &interval, &base);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_time_add failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               isc_interval_set(&interval,
-                                Tx_FUDGE_SECONDS, Tx_FUDGE_NANOSECONDS);
-               isc_result = isc_time_add(&base, &interval, &ulim);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_time_add failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               isc_result = isc_time_subtract(&base, &interval, &llim);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_time_subtract failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               if (isc_time_compare(&llim, &now) > 0) {
-                       t_info("timer range error: early by "
-                              "%lu microseconds\n",
-                              (unsigned long)isc_time_microdiff(&base, &now));
-                       ++Tx_nfails;
-               } else if (isc_time_compare(&ulim, &now) < 0) {
-                       t_info("timer range error: late by "
-                              "%lu microseconds\n",
-                              (unsigned long)isc_time_microdiff(&now, &base));
-                       ++Tx_nfails;
-               }
-               Tx_lasttime = now;
-       }
-
-       if (event->ev_type != ISC_TIMEREVENT_IDLE) {
-               t_info("received event type %d, expected type %d\n",
-                      event->ev_type, ISC_TIMEREVENT_IDLE);
-               ++Tx_nfails;
-       }
-
-       isc_timer_detach(&Tx_timer);
-       isc_task_shutdown(task);
-       isc_event_free(&event);
-}
-
-#define        T3_SECONDS      4
-#define        T3_NANOSECONDS  400000000
-
-static const char *a3 =
-       "When type is isc_timertype_once, a call to isc_timer_create() "
-       "creates a timer that posts an ISC_TIMEEVENT_IDLE event to the "
-       "specified task when the timer has been idle for 'interval' seconds.";
-
-static void
-t3(void) {
-       int             result;
-       int             isc_result;
-       isc_time_t      expires;
-       isc_interval_t  interval;
-
-       t_assert("isc_timer_create", 3, T_REQUIRED, "%s", a3);
-
-       if (threaded) {
-               Tx_nfails       = 0;
-               Tx_nprobs       = 0;
-               Tx_nevents      = 1;
-               Tx_seconds      = T3_SECONDS;
-               Tx_nanoseconds  = T3_NANOSECONDS;
-
-               isc_interval_set(&interval, Tx_seconds + 1, Tx_nanoseconds);
-
-               isc_result = isc_time_nowplusinterval(&expires, &interval);
-               if (isc_result == ISC_R_SUCCESS) {
-                       isc_interval_set(&interval, Tx_seconds,
-                                        Tx_nanoseconds);
-                       t_timers_x(isc_timertype_once, &expires, &interval,
-                                  t3_te);
-               } else {
-                       t_info("isc_time_nowplusinterval failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-
-               result = T_UNRESOLVED;
-
-               if ((Tx_nfails == 0) && (Tx_nprobs == 0))
-                       result = T_PASS;
-               else if (Tx_nfails)
-                       result = T_FAIL;
-
-               t_result(result);
-       } else
-               require_threads();
-}
-
-#define        T4_SECONDS      2
-#define        T4_NANOSECONDS  500000000
-
-static void
-t4_te(isc_task_t *task, isc_event_t *event) {
-
-       isc_result_t    isc_result;
-       isc_time_t      now;
-       isc_time_t      base;
-       isc_time_t      ulim;
-       isc_time_t      llim;
-       isc_time_t      expires;
-       isc_interval_t  interval;
-
-       ++Tx_eventcnt;
-
-       t_info("tick %d\n", Tx_eventcnt);
-
-       /*
-        * Check expired time.
-        */
-
-       isc_result = isc_time_now(&now);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_time_now failed %s\n",
-                      isc_result_totext(isc_result));
-               ++Tx_nprobs;
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               isc_interval_set(&interval, Tx_seconds, Tx_nanoseconds);
-               isc_result = isc_time_add(&Tx_lasttime, &interval, &base);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_time_add failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               isc_interval_set(&interval,
-                                Tx_FUDGE_SECONDS, Tx_FUDGE_NANOSECONDS);
-               isc_result = isc_time_add(&base, &interval, &ulim);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_time_add failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               isc_result = isc_time_subtract(&base, &interval, &llim);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_time_subtract failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++Tx_nprobs;
-               }
-       }
-
-       if (isc_result == ISC_R_SUCCESS) {
-               if (isc_time_compare(&llim, &now) > 0) {
-                       t_info("timer range error: early by "
-                              "%lu microseconds\n",
-                              (unsigned long)isc_time_microdiff(&base, &now));
-                       ++Tx_nfails;
-               } else if (isc_time_compare(&ulim, &now) < 0) {
-                       t_info("timer range error: late by "
-                              "%lu microseconds\n",
-                              (unsigned long)isc_time_microdiff(&now, &base));
-                       ++Tx_nfails;
-               }
-               Tx_lasttime = now;
-       }
-
-       if (Tx_eventcnt < 3) {
-               if (event->ev_type != ISC_TIMEREVENT_TICK) {
-                       t_info("received event type %d, expected type %d\n",
-                              event->ev_type, ISC_TIMEREVENT_IDLE);
-                       ++Tx_nfails;
-               }
-               if (Tx_eventcnt == 2) {
-                       isc_interval_set(&interval, T4_SECONDS,
-                                        T4_NANOSECONDS);
-                       isc_result = isc_time_nowplusinterval(&expires,
-                                                             &interval);
-                       if (isc_result == ISC_R_SUCCESS) {
-                               isc_interval_set(&interval, 0, 0);
-                               isc_result =
-                                       isc_timer_reset(Tx_timer,
-                                                       isc_timertype_once,
-                                                       &expires, &interval,
-                                                       ISC_FALSE);
-                               if (isc_result != ISC_R_SUCCESS) {
-                                       t_info("isc_timer_reset failed %s\n",
-                                              isc_result_totext(isc_result));
-                                       ++Tx_nfails;
-                               }
-                       } else {
-                               t_info("isc_time_nowplusinterval failed %s\n",
-                                      isc_result_totext(isc_result));
-                               ++Tx_nprobs;
-                       }
-               }
-       } else {
-               if (event->ev_type != ISC_TIMEREVENT_LIFE) {
-                       t_info("received event type %d, expected type %d\n",
-                              event->ev_type, ISC_TIMEREVENT_IDLE);
-                       ++Tx_nfails;
-               }
-
-               isc_timer_detach(&Tx_timer);
-               isc_task_shutdown(task);
-       }
-
-       isc_event_free(&event);
-}
-
-static const char *a4 =
-       "A call to isc_timer_reset() changes the timer's type, expires and "
-       "interval values to the given values.";
-
-static void
-t4(void) {
-       int             result;
-       isc_time_t      expires;
-       isc_interval_t  interval;
-
-       t_assert("isc_timer_reset", 4, T_REQUIRED, "%s", a4);
-
-       if (threaded) {
-               Tx_nfails = 0;
-               Tx_nprobs = 0;
-               Tx_nevents = 3;
-               Tx_seconds = T4_SECONDS;
-               Tx_nanoseconds = T4_NANOSECONDS;
-
-               isc_interval_set(&interval, T4_SECONDS, T4_NANOSECONDS);
-               isc_time_settoepoch(&expires);
-               t_timers_x(isc_timertype_ticker, &expires, &interval, t4_te);
-
-               result = T_UNRESOLVED;
-
-               if ((Tx_nfails == 0) && (Tx_nprobs == 0))
-                       result = T_PASS;
-               else if (Tx_nfails)
-                       result = T_FAIL;
-
-               t_result(result);
-       } else
-               require_threads();
-}
-
-#define        T5_NTICKS       4
-#define        T5_SECONDS      3
-
-static int             T5_startflag;
-static int             T5_shutdownflag;
-static int             T5_eventcnt;
-static isc_mutex_t     T5_mx;
-static isc_condition_t T5_cv;
-static int             T5_nfails;
-static int             T5_nprobs;
-static isc_timer_t     *T5_tickertimer;
-static isc_timer_t     *T5_oncetimer;
-static isc_task_t      *T5_task1;
-static isc_task_t      *T5_task2;
-
-/*
- * T5_task1 blocks on T5_mx while events accumulate
- * in it's queue, until signaled by T5_task2.
- */
-
-static void
-t5_start_event(isc_task_t *task, isc_event_t *event) {
-       isc_result_t    isc_result;
-
-       UNUSED(task);
-
-       t_info("t5_start_event\n");
-
-       isc_result = isc_mutex_lock(&T5_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_lock failed %s\n",
-                      isc_result_totext(isc_result));
-               ++T5_nprobs;
-       }
-
-       while (! T5_startflag) {
-               (void) isc_condition_wait(&T5_cv, &T5_mx);
-       }
-
-       isc_result = isc_mutex_unlock(&T5_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_unlock failed %s\n",
-                      isc_result_totext(isc_result));
-               ++T5_nprobs;
-       }
-       isc_event_free(&event);
-}
-
-static void
-t5_tick_event(isc_task_t *task, isc_event_t *event) {
-       isc_result_t    isc_result;
-       isc_time_t      expires;
-       isc_interval_t  interval;
-
-       UNUSED(task);
-
-       ++T5_eventcnt;
-       t_info("t5_tick_event %d\n", T5_eventcnt);
-
-       /*
-        * On the first tick, purge all remaining tick events
-        * and then shut down the task.
-        */
-       if (T5_eventcnt == 1) {
-               isc_time_settoepoch(&expires);
-               isc_interval_set(&interval, T5_SECONDS, 0);
-               isc_result = isc_timer_reset(T5_tickertimer,
-                                            isc_timertype_ticker, &expires,
-                                            &interval, ISC_TRUE);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_timer_reset failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++T5_nfails;
-               }
-               isc_task_shutdown(task);
-       }
-       isc_event_free(&event);
-}
-
-static void
-t5_once_event(isc_task_t *task, isc_event_t *event) {
-
-       isc_result_t    isc_result;
-
-       t_info("t5_once_event\n");
-
-       /*
-        * Allow task1 to start processing events.
-        */
-       isc_result = isc_mutex_lock(&T5_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_lock failed %s\n",
-                      isc_result_totext(isc_result));
-               ++T5_nprobs;
-       }
-
-       T5_startflag = 1;
-
-       isc_result = isc_condition_broadcast(&T5_cv);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_condition_broadcast failed %s\n",
-                      isc_result_totext(isc_result));
-               ++T5_nprobs;
-       }
-
-       isc_result = isc_mutex_unlock(&T5_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_unlock failed %s\n",
-                      isc_result_totext(isc_result));
-               ++T5_nprobs;
-       }
-
-       isc_event_free(&event);
-       isc_task_shutdown(task);
-}
-
-static void
-t5_shutdown_event(isc_task_t *task, isc_event_t *event) {
-
-       isc_result_t    isc_result;
-
-       UNUSED(task);
-       UNUSED(event);
-
-       t_info("t5_shutdown_event\n");
-
-       /*
-        * Signal shutdown processing complete.
-        */
-       isc_result = isc_mutex_lock(&T5_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_lock failed %s\n",
-                      isc_result_totext(isc_result));
-               ++T5_nprobs;
-       }
-
-       T5_shutdownflag = 1;
-
-       isc_result = isc_condition_signal(&T5_cv);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_condition_signal failed %s\n",
-                      isc_result_totext(isc_result));
-               ++T5_nprobs;
-       }
-
-       isc_result = isc_mutex_unlock(&T5_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_unlock failed %s\n",
-                      isc_result_totext(isc_result));
-               ++T5_nprobs;
-       }
-       isc_event_free(&event);
-}
-
-static int
-t_timers5(void) {
-       char            *p;
-       int             result;
-       isc_mem_t       *mctx;
-       isc_taskmgr_t   *tmgr;
-       unsigned int    workers;
-       isc_result_t    isc_result;
-       isc_timermgr_t  *timermgr;
-       isc_event_t     *event;
-       isc_time_t      expires;
-       isc_interval_t  interval;
-
-       T5_startflag = 0;
-       T5_shutdownflag = 0;
-       T5_eventcnt = 0;
-
-       workers = 2;
-       p = t_getenv("ISC_TASK_WORKERS");
-       if (p != NULL)
-               workers = atoi(p);
-
-       mctx = NULL;
-       isc_result = isc_mem_create(0, 0, &mctx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mem_create failed %s\n",
-                      isc_result_totext(isc_result));
-               return(T_UNRESOLVED);
-       }
-
-       isc_result = isc_mutex_init(&T5_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_init failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_mem_destroy(&mctx);
-               return(T_UNRESOLVED);
-       }
-
-       isc_result = isc_condition_init(&T5_cv);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_condition_init failed %s\n",
-                      isc_result_totext(isc_result));
-               DESTROYLOCK(&T5_mx);
-               isc_mem_destroy(&mctx);
-               return(T_UNRESOLVED);
-       }
-
-       tmgr = NULL;
-       isc_result = isc_taskmgr_create(mctx, workers, 0, &tmgr);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_taskmgr_create failed %s\n",
-                      isc_result_totext(isc_result));
-               DESTROYLOCK(&T5_mx);
-               (void) isc_condition_destroy(&T5_cv);
-               isc_mem_destroy(&mctx);
-               return(T_UNRESOLVED);
-       }
-
-       timermgr = NULL;
-       isc_result = isc_timermgr_create(mctx, &timermgr);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_timermgr_create failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&T5_mx);
-               (void) isc_condition_destroy(&T5_cv);
-               isc_mem_destroy(&mctx);
-               return(T_UNRESOLVED);
-       }
-
-       T5_task1 = NULL;
-       isc_result = isc_task_create(tmgr, 0, &T5_task1);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_task_create failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_timermgr_destroy(&timermgr);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&T5_mx);
-               (void) isc_condition_destroy(&T5_cv);
-               isc_mem_destroy(&mctx);
-               return(T_UNRESOLVED);
-       }
-
-       isc_result = isc_task_onshutdown(T5_task1, t5_shutdown_event, NULL);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_task_onshutdown failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_timermgr_destroy(&timermgr);
-               isc_task_destroy(&T5_task1);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&T5_mx);
-               (void) isc_condition_destroy(&T5_cv);
-               isc_mem_destroy(&mctx);
-               return(T_UNRESOLVED);
-       }
-
-       T5_task2 = NULL;
-       isc_result = isc_task_create(tmgr, 0, &T5_task2);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_task_create failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_timermgr_destroy(&timermgr);
-               isc_task_destroy(&T5_task1);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&T5_mx);
-               (void) isc_condition_destroy(&T5_cv);
-               isc_mem_destroy(&mctx);
-               return(T_UNRESOLVED);
-       }
-
-       isc_result = isc_mutex_lock(&T5_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_lock failed %s\n",
-                      isc_result_totext(isc_result));
-               isc_timermgr_destroy(&timermgr);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&T5_mx);
-               (void) isc_condition_destroy(&T5_cv);
-               isc_mem_destroy(&mctx);
-               return(T_UNRESOLVED);
-       }
-
-       event = isc_event_allocate(mctx, (void *)1 , (isc_eventtype_t)1,
-                                  t5_start_event, NULL, sizeof(*event));
-       isc_task_send(T5_task1, &event);
-
-       isc_time_settoepoch(&expires);
-       isc_interval_set(&interval, T5_SECONDS, 0);
-
-       T5_tickertimer = NULL;
-       isc_result = isc_timer_create(timermgr, isc_timertype_ticker,
-                                     &expires, &interval, T5_task1,
-                                     t5_tick_event, NULL, &T5_tickertimer);
-
-       if (isc_result != ISC_R_SUCCESS) {
-               isc_timermgr_destroy(&timermgr);
-               (void) isc_condition_signal(&T5_cv);
-               (void) isc_mutex_unlock(&T5_mx);
-               isc_task_destroy(&T5_task1);
-               isc_task_destroy(&T5_task2);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&T5_mx);
-               (void) isc_condition_destroy(&T5_cv);
-               isc_mem_destroy(&mctx);
-               return(T_UNRESOLVED);
-       }
-
-       T5_oncetimer = NULL;
-       isc_interval_set(&interval, (T5_SECONDS * T5_NTICKS) + 2, 0);
-       isc_result = isc_time_nowplusinterval(&expires, &interval);
-       if (isc_result != ISC_R_SUCCESS) {
-               isc_timer_detach(&T5_tickertimer);
-               isc_timermgr_destroy(&timermgr);
-               (void)isc_condition_signal(&T5_cv);
-               (void)isc_mutex_unlock(&T5_mx);
-               isc_task_destroy(&T5_task1);
-               isc_task_destroy(&T5_task2);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&T5_mx);
-               (void) isc_condition_destroy(&T5_cv);
-               isc_mem_destroy(&mctx);
-               return(T_UNRESOLVED);
-       }
-
-       isc_interval_set(&interval, 0, 0);
-       isc_result = isc_timer_create(timermgr, isc_timertype_once,
-                                     &expires, &interval, T5_task2,
-                                     t5_once_event, NULL, &T5_oncetimer);
-
-       if (isc_result != ISC_R_SUCCESS) {
-               isc_timer_detach(&T5_tickertimer);
-               isc_timermgr_destroy(&timermgr);
-               (void) isc_condition_signal(&T5_cv);
-               (void) isc_mutex_unlock(&T5_mx);
-               isc_task_destroy(&T5_task1);
-               isc_task_destroy(&T5_task2);
-               isc_taskmgr_destroy(&tmgr);
-               DESTROYLOCK(&T5_mx);
-               (void) isc_condition_destroy(&T5_cv);
-               isc_mem_destroy(&mctx);
-               ++T5_nprobs;
-               return(T_UNRESOLVED);
-       }
-
-       /*
-        * Wait for shutdown processing to complete.
-        */
-       while (! T5_shutdownflag) {
-               isc_result = isc_condition_wait(&T5_cv, &T5_mx);
-               if (isc_result != ISC_R_SUCCESS) {
-                       t_info("isc_condition_waituntil failed %s\n",
-                              isc_result_totext(isc_result));
-                       ++T5_nprobs;
-               }
-       }
-
-       isc_result = isc_mutex_unlock(&T5_mx);
-       if (isc_result != ISC_R_SUCCESS) {
-               t_info("isc_mutex_unlock failed %s\n",
-                      isc_result_totext(isc_result));
-               ++T5_nprobs;
-       }
-
-       if (T5_eventcnt != 1) {
-               t_info("processed %d events\n", T5_eventcnt);
-               ++T5_nfails;
-       }
-
-       isc_timer_detach(&T5_tickertimer);
-       isc_timer_detach(&T5_oncetimer);
-       isc_timermgr_destroy(&timermgr);
-       isc_task_destroy(&T5_task1);
-       isc_task_destroy(&T5_task2);
-       isc_taskmgr_destroy(&tmgr);
-       DESTROYLOCK(&T5_mx);
-       (void) isc_condition_destroy(&T5_cv);
-       isc_mem_destroy(&mctx);
-
-       result = T_UNRESOLVED;
-
-       if ((T5_nfails == 0) && (T5_nprobs == 0))
-               result = T_PASS;
-       else if (T5_nfails)
-               result = T_FAIL;
-
-       return (result);
-}
-
-static const char *a5 =
-       "When 'purge' is TRUE, a call to isc_timer_reset() purges any pending "
-       "events from 'timer' from the task's event queue.";
-
-static void
-t5(void) {
-       t_assert("isc_timer_reset", 5, T_REQUIRED, "%s", a5);
-
-       if (threaded)
-               t_result(t_timers5());
-       else
-               require_threads();
-}
-
-testspec_t     T_testlist[] = {
-       {       (PFV) t1,               "timer_create"          },
-       {       (PFV) t2,               "timer_create"          },
-       {       (PFV) t3,               "timer_create"          },
-       {       (PFV) t4,               "timer_reset"           },
-       {       (PFV) t5,               "timer_reset"           },
-       {       (PFV) NULL,             NULL                    }
-};
-
-#ifdef WIN32
-int
-main(int argc, char **argv) {
-       t_settests(T_testlist);
-       return (t_main(argc, argv));
-}
-#endif
diff --git a/bin/tests/timers/win32/t_timers.dsp.in b/bin/tests/timers/win32/t_timers.dsp.in
deleted file mode 100644 (file)
index aadadb8..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-# Microsoft Developer Studio Project File - Name="t_timers" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "@PLATFORM@ (x86) Console Application" 0x0103
-
-CFG=t_timers - @PLATFORM@ Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "t_timers.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "t_timers.mak" CFG="t_timers - @PLATFORM@ Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "t_timers - @PLATFORM@ Release" (based on "@PLATFORM@ (x86) Console Application")
-!MESSAGE "t_timers - @PLATFORM@ Debug" (based on "@PLATFORM@ (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "t_timers - @PLATFORM@ Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 @COPTX@ @COPTI@ /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" @COPTY@ /FD /c
-# ADD CPP /nologo /MD /W3 @COPTX@ @COPTI@ /O2 /I "./" /I "../../../../" @LIBXML2_INC@ /I "../../../../lib/isc/win32" /I "../../../../lib/isc/win32/include" /I "../../../../lib/isc/include" /I "../../../../lib/tests/include" /D "WIN32" /D "NDEBUG" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" @COPTY@ /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console @MACHINE@
-# ADD LINK32 @LIBXML2_LIB@ user32.lib advapi32.lib kernel32.lib ws2_32.lib ../../../../lib/isc/win32/Release/libisc.lib ../../../../lib/tests/win32/Release/libtests.lib /nologo /subsystem:console @MACHINE@ /out:"../../../../Build/Release/t_timers.exe"
-
-!ELSEIF  "$(CFG)" == "t_timers - @PLATFORM@ Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm @COPTX@ @COPTI@ /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" @COPTY@ /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm @COPTX@ @COPTI@ /ZI /Od /I "./" /I "../../../../" @LIBXML2_INC@ /I "../../../../lib/isc/win32" /I "../../../../lib/isc/win32/include" /I "../../../../lib/isc/include" /I "../../../../lib/tests/include" /I "../../../../lib/bind9/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "i386" /FR /FD /GZ /c
-# SUBTRACT CPP /X @COPTY@
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug @MACHINE@ /pdbtype:sept
-# ADD LINK32 @LIBXML2_LIB@ user32.lib advapi32.lib kernel32.lib ws2_32.lib ../../../../lib/isc/win32/Debug/libisc.lib ../../../../lib/tests/win32/Debug/libtests.lib /nologo /subsystem:console /map /debug @MACHINE@ /out:"../../../../Build/Debug/t_timers.exe" /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "t_timers - @PLATFORM@ Release"
-# Name "t_timers - @PLATFORM@ Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\t_timers.c
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/bin/tests/timers/win32/t_timers.dsw b/bin/tests/timers/win32/t_timers.dsw
deleted file mode 100644 (file)
index 8f39dd5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "t_timers"=".\t_timers.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/bin/tests/timers/win32/t_timers.mak.in b/bin/tests/timers/win32/t_timers.mak.in
deleted file mode 100644 (file)
index b804e0d..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-# Microsoft Developer Studio Generated NMAKE File, Based on t_timers.dsp
-!IF "$(CFG)" == ""
-CFG=t_timers - @PLATFORM@ Debug
-!MESSAGE No configuration specified. Defaulting to t_timers - @PLATFORM@ Debug.
-!ENDIF 
-
-!IF "$(CFG)" != "t_timers - @PLATFORM@ Release" && "$(CFG)" != "t_timers - @PLATFORM@ Debug"
-!MESSAGE Invalid configuration "$(CFG)" specified.
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "t_timers.mak" CFG="t_timers - @PLATFORM@ Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "t_timers - @PLATFORM@ Release" (based on "@PLATFORM@ (x86) Console Application")
-!MESSAGE "t_timers - @PLATFORM@ Debug" (based on "@PLATFORM@ (x86) Console Application")
-!MESSAGE 
-!ERROR An invalid configuration is specified.
-!ENDIF 
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE 
-NULL=nul
-!ENDIF 
-
-CPP=cl.exe
-RSC=rc.exe
-LIBXML=@LIBXML2_LIB@
-
-!IF  "$(CFG)" == "t_timers - @PLATFORM@ Release"
-_VC_MANIFEST_INC=0
-_VC_MANIFEST_BASENAME=__VC80
-!ELSE
-_VC_MANIFEST_INC=1
-_VC_MANIFEST_BASENAME=__VC80.Debug
-!ENDIF
-
-####################################################
-# Specifying name of temporary resource file used only in incremental builds:
-
-!if "$(_VC_MANIFEST_INC)" == "1"
-_VC_MANIFEST_AUTO_RES=$(_VC_MANIFEST_BASENAME).auto.res
-!else
-_VC_MANIFEST_AUTO_RES=
-!endif
-
-####################################################
-# _VC_MANIFEST_EMBED_EXE - command to embed manifest in EXE:
-
-!if "$(_VC_MANIFEST_INC)" == "1"
-
-#MT_SPECIAL_RETURN=1090650113
-#MT_SPECIAL_SWITCH=-notify_resource_update
-MT_SPECIAL_RETURN=0
-MT_SPECIAL_SWITCH=
-_VC_MANIFEST_EMBED_EXE= \
-if exist $@.manifest mt.exe -manifest $@.manifest -out:$(_VC_MANIFEST_BASENAME).auto.manifest $(MT_SPECIAL_SWITCH) & \
-if "%ERRORLEVEL%" == "$(MT_SPECIAL_RETURN)" \
-rc /r $(_VC_MANIFEST_BASENAME).auto.rc & \
-link $** /out:$@ $(LFLAGS)
-
-!else
-
-_VC_MANIFEST_EMBED_EXE= \
-if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;1
-
-!endif
-
-####################################################
-# _VC_MANIFEST_EMBED_DLL - command to embed manifest in DLL:
-
-!if "$(_VC_MANIFEST_INC)" == "1"
-
-#MT_SPECIAL_RETURN=1090650113
-#MT_SPECIAL_SWITCH=-notify_resource_update
-MT_SPECIAL_RETURN=0
-MT_SPECIAL_SWITCH=
-_VC_MANIFEST_EMBED_EXE= \
-if exist $@.manifest mt.exe -manifest $@.manifest -out:$(_VC_MANIFEST_BASENAME).auto.manifest $(MT_SPECIAL_SWITCH) & \
-if "%ERRORLEVEL%" == "$(MT_SPECIAL_RETURN)" \
-rc /r $(_VC_MANIFEST_BASENAME).auto.rc & \
-link $** /out:$@ $(LFLAGS)
-
-!else
-
-_VC_MANIFEST_EMBED_EXE= \
-if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;2
-
-!endif
-####################################################
-# _VC_MANIFEST_CLEAN - command to clean resources files generated temporarily:
-
-!if "$(_VC_MANIFEST_INC)" == "1"
-
-_VC_MANIFEST_CLEAN=-del $(_VC_MANIFEST_BASENAME).auto.res \
-    $(_VC_MANIFEST_BASENAME).auto.rc \
-    $(_VC_MANIFEST_BASENAME).auto.manifest
-
-!else
-
-_VC_MANIFEST_CLEAN=
-
-!endif
-
-!IF  "$(CFG)" == "t_timers - @PLATFORM@ Release"
-
-OUTDIR=.\Release
-INTDIR=.\Release
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "..\..\..\..\Build\Release\t_timers.exe"
-
-!ELSE 
-
-ALL : "libtests - @PLATFORM@ Release" "libisc - @PLATFORM@ Release" "..\..\..\..\Build\Release\t_timers.exe"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"libisc - @PLATFORM@ ReleaseCLEAN" "libtests - @PLATFORM@ ReleaseCLEAN"
-!ELSE 
-CLEAN :
-!ENDIF 
-       -@erase "$(INTDIR)\t_timers.obj"
-       -@erase "$(INTDIR)\vc60.idb"
-       -@erase "..\..\..\..\Build\Release\t_timers.exe"
-       -@$(_VC_MANIFEST_CLEAN)
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP_PROJ=/nologo /MD /W3 @COPTX@ @COPTI@ /O2 /I "./" /I "../../../../" @LIBXML2_INC@ /I "../../../../lib/isc/win32" /I "../../../../lib/isc/win32/include" /I "../../../../lib/isc/include" /I "../../../../lib/tests/include" /D "WIN32" /D "NDEBUG" /D "__STDC__" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\t_timers.pch" @COPTY@ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\t_timers.bsc" 
-BSC32_SBRS= \
-       
-LINK32=link.exe
-LINK32_FLAGS=user32.lib advapi32.lib kernel32.lib ws2_32.lib ../../../../lib/isc/win32/Release/libisc.lib ../../../../lib/tests/win32/Release/libtests.lib $(LIBXML) /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\t_timers.pdb" @MACHINE@ /out:"../../../../Build/Release/t_timers.exe" 
-LINK32_OBJS= \
-       "$(INTDIR)\t_timers.obj" \
-       "..\..\..\..\lib\isc\win32\Release\libisc.lib" \
-       "..\..\..\..\lib\tests\win32\Release\libtests.lib"
-
-"..\..\..\..\Build\Release\t_timers.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-    $(_VC_MANIFEST_EMBED_EXE)
-
-!ELSEIF  "$(CFG)" == "t_timers - @PLATFORM@ Debug"
-
-OUTDIR=.\Debug
-INTDIR=.\Debug
-# Begin Custom Macros
-OutDir=.\Debug
-# End Custom Macros
-
-!IF "$(RECURSE)" == "0" 
-
-ALL : "..\..\..\..\Build\Debug\t_timers.exe" "$(OUTDIR)\t_timers.bsc"
-
-!ELSE 
-
-ALL : "libtests - @PLATFORM@ Debug" "libisc - @PLATFORM@ Debug" "..\..\..\..\Build\Debug\t_timers.exe" "$(OUTDIR)\t_timers.bsc"
-
-!ENDIF 
-
-!IF "$(RECURSE)" == "1" 
-CLEAN :"libisc - @PLATFORM@ DebugCLEAN" "libtests - @PLATFORM@ DebugCLEAN"
-!ELSE 
-CLEAN :
-!ENDIF 
-       -@erase "$(INTDIR)\t_timers.obj"
-       -@erase "$(INTDIR)\t_timers.sbr"
-       -@erase "$(INTDIR)\vc60.idb"
-       -@erase "$(INTDIR)\vc60.pdb"
-       -@erase "$(OUTDIR)\t_timers.bsc"
-       -@erase "$(OUTDIR)\t_timers.map"
-       -@erase "$(OUTDIR)\t_timers.pdb"
-       -@erase "..\..\..\..\Build\Debug\t_timers.exe"
-       -@erase "..\..\..\..\Build\Debug\t_timers.ilk"
-       -@$(_VC_MANIFEST_CLEAN)
-
-"$(OUTDIR)" :
-    if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP_PROJ=/nologo /MDd /W3 /Gm @COPTX@ @COPTI@ /ZI /Od /I "./" /I "../../../../" @LIBXML2_INC@ /I "../../../../lib/isc/win32" /I "../../../../lib/isc/win32/include" /I "../../../../lib/isc/include" /I "../../../../lib/tests/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "i386" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\t_timers.bsc" 
-BSC32_SBRS= \
-       "$(INTDIR)\t_timers.sbr"
-
-"$(OUTDIR)\t_timers.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
-    $(BSC32) @<<
-  $(BSC32_FLAGS) $(BSC32_SBRS)
-<<
-
-LINK32=link.exe
-LINK32_FLAGS=user32.lib advapi32.lib kernel32.lib ws2_32.lib ../../../../lib/isc/win32/Debug/libisc.lib ../../../../lib/tests/win32/Debug/libtests.lib $(LIBXML) /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\t_timers.pdb" /map:"$(INTDIR)\t_timers.map" /debug @MACHINE@ /out:"../../../../Build/Debug/t_timers.exe" /pdbtype:sept 
-LINK32_OBJS= \
-       "$(INTDIR)\t_timers.obj" \
-       "..\..\..\..\lib\isc\win32\Debug\libisc.lib" \
-       "..\..\..\..\lib\tests\win32\Debug\libtests.lib"
-
-"..\..\..\..\Build\Debug\t_timers.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-    $(_VC_MANIFEST_EMBED_EXE)
-
-!ENDIF 
-
-.c{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.obj::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("t_timers.dep")
-!INCLUDE "t_timers.dep"
-!ELSE 
-!MESSAGE Warning: cannot find "t_timers.dep"
-!ENDIF 
-!ENDIF 
-
-
-!IF "$(CFG)" == "t_timers - @PLATFORM@ Release" || "$(CFG)" == "t_timers - @PLATFORM@ Debug"
-SOURCE=..\t_timers.c
-
-!IF  "$(CFG)" == "t_timers - @PLATFORM@ Release"
-
-
-"$(INTDIR)\t_timers.obj" : $(SOURCE) "$(INTDIR)"
-       $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF  "$(CFG)" == "t_timers - @PLATFORM@ Debug"
-
-
-"$(INTDIR)\t_timers.obj"       "$(INTDIR)\t_timers.sbr" : $(SOURCE) "$(INTDIR)"
-       $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
-!IF  "$(CFG)" == "t_timers - @PLATFORM@ Release"
-
-"libisc - @PLATFORM@ Release" : 
-   cd "..\..\..\..\lib\isc\win32"
-   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - @PLATFORM@ Release" 
-   cd "..\..\..\bin\tests\timers\win32"
-
-"libisc - @PLATFORM@ ReleaseCLEAN" : 
-   cd "..\..\..\..\lib\isc\win32"
-   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - @PLATFORM@ Release" RECURSE=1 CLEAN 
-   cd "..\..\..\bin\tests\timers\win32"
-
-!ELSEIF  "$(CFG)" == "t_timers - @PLATFORM@ Debug"
-
-"libisc - @PLATFORM@ Debug" : 
-   cd "..\..\..\..\lib\isc\win32"
-   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - @PLATFORM@ Debug" 
-   cd "..\..\..\bin\tests\timers\win32"
-
-"libisc - @PLATFORM@ DebugCLEAN" : 
-   cd "..\..\..\..\lib\isc\win32"
-   $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - @PLATFORM@ Debug" RECURSE=1 CLEAN 
-   cd "..\..\..\bin\tests\timers\win32"
-
-!ENDIF 
-
-!IF  "$(CFG)" == "t_timers - @PLATFORM@ Release"
-
-"libtests - @PLATFORM@ Release" : 
-   cd "..\..\..\..\lib\tests\win32"
-   $(MAKE) /$(MAKEFLAGS) /F ".\libtests.mak" CFG="libtests - @PLATFORM@ Release" 
-   cd "..\..\..\bin\tests\timers\win32"
-
-"libtests - @PLATFORM@ ReleaseCLEAN" : 
-   cd "..\..\..\..\lib\tests\win32"
-   $(MAKE) /$(MAKEFLAGS) /F ".\libtests.mak" CFG="libtests - @PLATFORM@ Release" RECURSE=1 CLEAN 
-   cd "..\..\..\bin\tests\timers\win32"
-
-!ELSEIF  "$(CFG)" == "t_timers - @PLATFORM@ Debug"
-
-"libtests - @PLATFORM@ Debug" : 
-   cd "..\..\..\..\lib\tests\win32"
-   $(MAKE) /$(MAKEFLAGS) /F ".\libtests.mak" CFG="libtests - @PLATFORM@ Debug" 
-   cd "..\..\..\bin\tests\timers\win32"
-
-"libtests - @PLATFORM@ DebugCLEAN" : 
-   cd "..\..\..\..\lib\tests\win32"
-   $(MAKE) /$(MAKEFLAGS) /F ".\libtests.mak" CFG="libtests - @PLATFORM@ Debug" RECURSE=1 CLEAN 
-   cd "..\..\..\bin\tests\timers\win32"
-
-!ENDIF 
-
-
-!ENDIF 
-
-####################################################
-# Commands to generate initial empty manifest file and the RC file
-# that references it, and for generating the .res file:
-
-$(_VC_MANIFEST_BASENAME).auto.res : $(_VC_MANIFEST_BASENAME).auto.rc
-
-$(_VC_MANIFEST_BASENAME).auto.rc : $(_VC_MANIFEST_BASENAME).auto.manifest
-    type <<$@
-#include <winuser.h>
-1RT_MANIFEST"$(_VC_MANIFEST_BASENAME).auto.manifest"
-<< KEEP
-
-$(_VC_MANIFEST_BASENAME).auto.manifest :
-    type <<$@
-<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
-</assembly>
-<< KEEP
diff --git a/bin/tests/timers/win32/t_timers.vcxproj.filters.in b/bin/tests/timers/win32/t_timers.vcxproj.filters.in
deleted file mode 100644 (file)
index f98be97..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\t_timers.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/bin/tests/timers/win32/t_timers.vcxproj.in b/bin/tests/timers/win32/t_timers.vcxproj.in
deleted file mode 100644 (file)
index 511a21a..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|@PLATFORM@">
-      <Configuration>Debug</Configuration>
-      <Platform>@PLATFORM@</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|@PLATFORM@">
-      <Configuration>Release</Configuration>
-      <Platform>@PLATFORM@</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{4E6F5A7C-89AA-4259-99DB-F89DAE418B3F}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>t_timers</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>..\..\..\..\Build\$(Configuration)\</OutDir>
-    <IntDir>.\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>..\..\..\..\Build\$(Configuration)\</OutDir>
-    <IntDir>.\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|@PLATFORM@'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>.\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
-      <BrowseInformation>true</BrowseInformation>
-      <AdditionalIncludeDirectories>.\;..\..\..\..\;@LIBXML2_INC@..\..\..\..\lib\isc\win32;..\..\..\..\lib\isc\win32\include;..\..\..\..\lib\isc\include;..\..\..\..\lib\tests\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);..\..\..\..\lib\tests\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>@LIBXML2_LIB@libisc.lib;libtests.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|@PLATFORM@'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>@INTRINSIC@</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <WholeProgramOptimization>false</WholeProgramOptimization>
-      <StringPooling>true</StringPooling>
-      <PrecompiledHeaderOutputFile>.\$(Configuration)\$(TargetName).pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>.\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>.\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(OutDir)$(TargetName).pdb</ProgramDataBaseFileName>
-      <AdditionalIncludeDirectories>.\;..\..\..\..\;@LIBXML2_INC@..\..\..\..\lib\isc\win32;..\..\..\..\lib\isc\win32\include;..\..\..\..\lib\isc\include;..\..\..\..\lib\tests\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <CompileAs>CompileAsC</CompileAs>
-    </ClCompile>
-    <Link>
-      <SubSystem>Console</SubSystem>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <OutputFile>..\..\..\..\Build\$(Configuration)\$(TargetName)$(TargetExt)</OutputFile>
-      <LinkTimeCodeGeneration>Default</LinkTimeCodeGeneration>
-      <AdditionalLibraryDirectories>..\..\..\..\lib\isc\win32\$(Configuration);..\..\..\..\lib\tests\win32\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>@LIBXML2_LIB@libisc.lib;libtests.lib;ws2_32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\t_timers.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
diff --git a/bin/tests/timers/win32/t_timers.vcxproj.user b/bin/tests/timers/win32/t_timers.vcxproj.user
deleted file mode 100644 (file)
index 695b5c7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-</Project>
\ No newline at end of file
index 4e8797b4d34d9ce5219e09c5e3916a9ea1814683..fb0e011b7109d8977511deef2677d8a2bcb11dbd 100755 (executable)
--- a/configure
+++ b/configure
@@ -23000,7 +23000,7 @@ ac_config_commands="$ac_config_commands chmod"
 # elsewhere if there's a good reason for doing so.
 #
 
-ac_config_files="$ac_config_files make/Makefile make/mkdep Makefile bin/Makefile bin/check/Makefile bin/confgen/Makefile bin/confgen/unix/Makefile bin/delv/Makefile bin/dig/Makefile bin/dnssec/Makefile bin/named/Makefile bin/named/unix/Makefile bin/nsupdate/Makefile bin/pkcs11/Makefile bin/python/Makefile bin/python/isc/Makefile bin/python/isc/utils.py bin/python/isc/tests/Makefile bin/python/dnssec-checkds.py bin/python/dnssec-coverage.py bin/python/isc/__init__.py bin/python/isc/checkds.py bin/python/isc/coverage.py bin/python/isc/dnskey.py bin/python/isc/eventlist.py bin/python/isc/keydict.py bin/python/isc/keyevent.py bin/python/isc/keyzone.py bin/python/isc/tests/dnskey_test.py bin/rndc/Makefile bin/tests/Makefile bin/tests/db/Makefile bin/tests/dst/Makefile bin/tests/dst/Kdh.+002+18602.key bin/tests/dst/Kdh.+002+18602.private bin/tests/dst/Kdh.+002+48957.key bin/tests/dst/Kdh.+002+48957.private bin/tests/dst/Ktest.+001+00002.key bin/tests/dst/Ktest.+001+54622.key bin/tests/dst/Ktest.+001+54622.private bin/tests/dst/Ktest.+003+23616.key bin/tests/dst/Ktest.+003+23616.private bin/tests/dst/Ktest.+003+49667.key bin/tests/dst/dst_2_data bin/tests/dst/t2_data_1 bin/tests/dst/t2_data_2 bin/tests/dst/t2_dsasig bin/tests/dst/t2_rsasig bin/tests/headerdep_test.sh bin/tests/names/Makefile bin/tests/optional/Makefile bin/tests/pkcs11/Makefile bin/tests/pkcs11/benchmarks/Makefile bin/tests/rbt/Makefile bin/tests/resolver/Makefile bin/tests/system/Makefile bin/tests/system/conf.sh bin/tests/system/dlz/prereq.sh bin/tests/system/dlzredir/prereq.sh bin/tests/system/dlzexternal/Makefile bin/tests/system/dlzexternal/ns1/dlzs.conf bin/tests/system/inline/checkdsa.sh bin/tests/system/lwresd/Makefile bin/tests/system/rsabigexponent/Makefile bin/tests/system/cookie/prereq.sh bin/tests/system/tkey/Makefile bin/tests/tasks/Makefile bin/tests/timers/Makefile bin/tests/virtual-time/Makefile bin/tests/virtual-time/conf.sh bin/tools/Makefile contrib/scripts/check-secure-delegation.pl contrib/scripts/zone-edit.sh doc/Makefile doc/arm/Makefile doc/arm/noteversion.xml doc/arm/pkgversion.xml doc/arm/releaseinfo.xml doc/doxygen/Doxyfile doc/doxygen/Makefile doc/doxygen/doxygen-input-filter doc/misc/Makefile doc/tex/Makefile doc/tex/armstyle.sty doc/xsl/Makefile doc/xsl/isc-docbook-chunk.xsl doc/xsl/isc-docbook-html.xsl doc/xsl/isc-manpage.xsl doc/xsl/isc-notes-html.xsl isc-config.sh lib/Makefile lib/bind9/Makefile lib/bind9/include/Makefile lib/bind9/include/bind9/Makefile lib/dns/Makefile lib/dns/include/Makefile lib/dns/include/dns/Makefile lib/dns/include/dst/Makefile lib/dns/tests/Makefile lib/irs/Makefile lib/irs/include/Makefile lib/irs/include/irs/Makefile lib/irs/include/irs/netdb.h lib/irs/include/irs/platform.h lib/irs/tests/Makefile lib/isc/$arch/Makefile lib/isc/$arch/include/Makefile lib/isc/$arch/include/isc/Makefile lib/isc/$thread_dir/Makefile lib/isc/$thread_dir/include/Makefile lib/isc/$thread_dir/include/isc/Makefile lib/isc/Makefile lib/isc/include/Makefile lib/isc/include/isc/Makefile lib/isc/include/isc/platform.h lib/isc/include/pk11/Makefile lib/isc/include/pkcs11/Makefile lib/isc/tests/Makefile lib/isc/nls/Makefile lib/isc/unix/Makefile lib/isc/unix/include/Makefile lib/isc/unix/include/isc/Makefile lib/isc/unix/include/pkcs11/Makefile lib/isccc/Makefile lib/isccc/include/Makefile lib/isccc/include/isccc/Makefile lib/isccfg/Makefile lib/isccfg/include/Makefile lib/isccfg/include/isccfg/Makefile lib/lwres/Makefile lib/lwres/include/Makefile lib/lwres/include/lwres/Makefile lib/lwres/include/lwres/netdb.h lib/lwres/include/lwres/platform.h lib/lwres/man/Makefile lib/lwres/tests/Makefile lib/lwres/unix/Makefile lib/lwres/unix/include/Makefile lib/lwres/unix/include/lwres/Makefile lib/tests/Makefile lib/tests/include/Makefile lib/tests/include/tests/Makefile lib/samples/Makefile lib/samples/Makefile-postinstall unit/Makefile unit/unittest.sh"
+ac_config_files="$ac_config_files make/Makefile make/mkdep Makefile bin/Makefile bin/check/Makefile bin/confgen/Makefile bin/confgen/unix/Makefile bin/delv/Makefile bin/dig/Makefile bin/dnssec/Makefile bin/named/Makefile bin/named/unix/Makefile bin/nsupdate/Makefile bin/pkcs11/Makefile bin/python/Makefile bin/python/isc/Makefile bin/python/isc/utils.py bin/python/isc/tests/Makefile bin/python/dnssec-checkds.py bin/python/dnssec-coverage.py bin/python/isc/__init__.py bin/python/isc/checkds.py bin/python/isc/coverage.py bin/python/isc/dnskey.py bin/python/isc/eventlist.py bin/python/isc/keydict.py bin/python/isc/keyevent.py bin/python/isc/keyzone.py bin/python/isc/tests/dnskey_test.py bin/rndc/Makefile bin/tests/Makefile bin/tests/db/Makefile bin/tests/dst/Makefile bin/tests/dst/Kdh.+002+18602.key bin/tests/dst/Kdh.+002+18602.private bin/tests/dst/Kdh.+002+48957.key bin/tests/dst/Kdh.+002+48957.private bin/tests/dst/Ktest.+001+00002.key bin/tests/dst/Ktest.+001+54622.key bin/tests/dst/Ktest.+001+54622.private bin/tests/dst/Ktest.+003+23616.key bin/tests/dst/Ktest.+003+23616.private bin/tests/dst/Ktest.+003+49667.key bin/tests/dst/dst_2_data bin/tests/dst/t2_data_1 bin/tests/dst/t2_data_2 bin/tests/dst/t2_dsasig bin/tests/dst/t2_rsasig bin/tests/headerdep_test.sh bin/tests/names/Makefile bin/tests/optional/Makefile bin/tests/pkcs11/Makefile bin/tests/pkcs11/benchmarks/Makefile bin/tests/rbt/Makefile bin/tests/resolver/Makefile bin/tests/system/Makefile bin/tests/system/conf.sh bin/tests/system/dlz/prereq.sh bin/tests/system/dlzredir/prereq.sh bin/tests/system/dlzexternal/Makefile bin/tests/system/dlzexternal/ns1/dlzs.conf bin/tests/system/inline/checkdsa.sh bin/tests/system/lwresd/Makefile bin/tests/system/rsabigexponent/Makefile bin/tests/system/cookie/prereq.sh bin/tests/system/tkey/Makefile bin/tests/tasks/Makefile bin/tests/virtual-time/Makefile bin/tests/virtual-time/conf.sh bin/tools/Makefile contrib/scripts/check-secure-delegation.pl contrib/scripts/zone-edit.sh doc/Makefile doc/arm/Makefile doc/arm/noteversion.xml doc/arm/pkgversion.xml doc/arm/releaseinfo.xml doc/doxygen/Doxyfile doc/doxygen/Makefile doc/doxygen/doxygen-input-filter doc/misc/Makefile doc/tex/Makefile doc/tex/armstyle.sty doc/xsl/Makefile doc/xsl/isc-docbook-chunk.xsl doc/xsl/isc-docbook-html.xsl doc/xsl/isc-manpage.xsl doc/xsl/isc-notes-html.xsl isc-config.sh lib/Makefile lib/bind9/Makefile lib/bind9/include/Makefile lib/bind9/include/bind9/Makefile lib/dns/Makefile lib/dns/include/Makefile lib/dns/include/dns/Makefile lib/dns/include/dst/Makefile lib/dns/tests/Makefile lib/irs/Makefile lib/irs/include/Makefile lib/irs/include/irs/Makefile lib/irs/include/irs/netdb.h lib/irs/include/irs/platform.h lib/irs/tests/Makefile lib/isc/$arch/Makefile lib/isc/$arch/include/Makefile lib/isc/$arch/include/isc/Makefile lib/isc/$thread_dir/Makefile lib/isc/$thread_dir/include/Makefile lib/isc/$thread_dir/include/isc/Makefile lib/isc/Makefile lib/isc/include/Makefile lib/isc/include/isc/Makefile lib/isc/include/isc/platform.h lib/isc/include/pk11/Makefile lib/isc/include/pkcs11/Makefile lib/isc/tests/Makefile lib/isc/nls/Makefile lib/isc/unix/Makefile lib/isc/unix/include/Makefile lib/isc/unix/include/isc/Makefile lib/isc/unix/include/pkcs11/Makefile lib/isccc/Makefile lib/isccc/include/Makefile lib/isccc/include/isccc/Makefile lib/isccfg/Makefile lib/isccfg/include/Makefile lib/isccfg/include/isccfg/Makefile lib/lwres/Makefile lib/lwres/include/Makefile lib/lwres/include/lwres/Makefile lib/lwres/include/lwres/netdb.h lib/lwres/include/lwres/platform.h lib/lwres/man/Makefile lib/lwres/tests/Makefile lib/lwres/unix/Makefile lib/lwres/unix/include/Makefile lib/lwres/unix/include/lwres/Makefile lib/tests/Makefile lib/tests/include/Makefile lib/tests/include/tests/Makefile lib/samples/Makefile lib/samples/Makefile-postinstall unit/Makefile unit/unittest.sh"
 
 
 #
@@ -24061,7 +24061,6 @@ do
     "bin/tests/system/cookie/prereq.sh") CONFIG_FILES="$CONFIG_FILES bin/tests/system/cookie/prereq.sh" ;;
     "bin/tests/system/tkey/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/system/tkey/Makefile" ;;
     "bin/tests/tasks/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/tasks/Makefile" ;;
-    "bin/tests/timers/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/timers/Makefile" ;;
     "bin/tests/virtual-time/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tests/virtual-time/Makefile" ;;
     "bin/tests/virtual-time/conf.sh") CONFIG_FILES="$CONFIG_FILES bin/tests/virtual-time/conf.sh" ;;
     "bin/tools/Makefile") CONFIG_FILES="$CONFIG_FILES bin/tools/Makefile" ;;
index eb0ed24dab8396521ab05c64a9c82393e8ec392e..219d7f355e9e3506cd03e759b59fc0863b9384d3 100644 (file)
@@ -5187,7 +5187,6 @@ AC_CONFIG_FILES([
        bin/tests/system/cookie/prereq.sh
        bin/tests/system/tkey/Makefile
        bin/tests/tasks/Makefile
-       bin/tests/timers/Makefile
        bin/tests/virtual-time/Makefile
        bin/tests/virtual-time/conf.sh
        bin/tools/Makefile
index 5a074d9564cbfd6791f50aeba75ee293bdfd496a..d673ee5f3e34e34eba52565bf94ac5f3ef3403f4 100644 (file)
@@ -23,4 +23,5 @@ tp: socket_test
 tp: symtab_test
 tp: task_test
 tp: taskpool_test
+tp: timer_test
 tp: time_test
index f5e3b8441d5700a64737e25cf370021508527f21..1cab83c41cf8be46e711c760471e0231db28b6d6 100644 (file)
@@ -39,7 +39,8 @@ SRCS =                isctest.c aes_test.c atomic_test.c \
                mem_test.c netaddr_test.c parse_test.c pool_test.c \
                print_test.c queue_test.c radix_test.c regex_test.c \
                safe_test.c sockaddr_test.c socket_test.c socket_test.c \
-               symtab_test.c task_test.c taskpool_test.c time_test.c
+               symtab_test.c task_test.c taskpool_test.c time_test.c \
+               timer_test.c
 
 SUBDIRS =
 TARGETS =      aes_test@EXEEXT@ atomic_test@EXEEXT@ \
@@ -50,7 +51,7 @@ TARGETS =     aes_test@EXEEXT@ atomic_test@EXEEXT@ \
                queue_test@EXEEXT@ radix_test@EXEEXT@ regex_test@EXEEXT@ \
                safe_test@EXEEXT@ sockaddr_test@EXEEXT@ socket_test@EXEEXT@ \
                socket_test@EXEEXT@ symtab_test@EXEEXT@ task_test@EXEEXT@ \
-               taskpool_test@EXEEXT@ time_test@EXEEXT@
+               taskpool_test@EXEEXT@ time_test@EXEEXT@ timer_test@EXEEXT@
 
 @BIND9_MAKE_RULES@
 
@@ -148,6 +149,10 @@ time_test@EXEEXT@: time_test.@O@ ${ISCDEPLIBS}
        ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
                        time_test.@O@ ${ISCLIBS} ${LIBS}
 
+timer_test@EXEEXT@: timer_test.@O@ isctest.@O@ ${ISCDEPLIBS}
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
+                       timer_test.@O@ isctest.@O@ ${ISCLIBS} ${LIBS}
+
 unit::
        sh ${top_builddir}/unit/unittest.sh
 
index 82320118cca94799a9755b3f68764854c12132e1..1280c61fc692b6d277f075a8ef8a88537857543e 100644 (file)
@@ -70,7 +70,7 @@ ATF_TC_BODY(atomic_xadd, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        memset(counters, 0, sizeof(counters));
@@ -132,7 +132,7 @@ ATF_TC_BODY(atomic_xaddq, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        memset(counters, 0, sizeof(counters));
@@ -202,7 +202,7 @@ ATF_TC_BODY(atomic_store, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        memset(counters, 0, sizeof(counters));
@@ -279,7 +279,7 @@ ATF_TC_BODY(atomic_storeq, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        memset(counters, 0, sizeof(counters));
index a7a19972aab28ee50e00a9de45f1494a9cefd35b..872111b91bd88a2f442efbd5fd8bcb5ef088d7d0 100644 (file)
@@ -33,7 +33,7 @@ ATF_TC_BODY(isc_counter, tc) {
        isc_counter_t *counter = NULL;
        int i;
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_counter_create(mctx, 0, &counter);
index b8c60fad37a2e8eb35f930fb77c3b4d21b9ac0c7..fb8f4410ab7c39c4b4b8695f6e4567ec4ab5dd9f 100644 (file)
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id$ */
-
 /*! \file */
 
 #include <config.h>
 
+#include <stdlib.h>
 #include <time.h>
 
 #include <isc/app.h>
@@ -75,15 +74,24 @@ cleanup_managers(void) {
 }
 
 static isc_result_t
-create_managers(void) {
+create_managers(unsigned int workers) {
        isc_result_t result;
+       char *p;
+
+       if (workers == 0) {
 #ifdef ISC_PLATFORM_USETHREADS
-       ncpus = isc_os_ncpus();
+               workers = isc_os_ncpus();
 #else
-       ncpus = 1;
+               workers = 1;
 #endif
+       }
+
+       p = getenv("ISC_TASK_WORKERS");
+       if (p != NULL) {
+               workers = atoi(p);
+       }
 
-       CHECK(isc_taskmgr_create(mctx, ncpus, 0, &taskmgr));
+       CHECK(isc_taskmgr_create(mctx, workers, 0, &taskmgr));
        CHECK(isc_task_create(taskmgr, 0, &maintask));
        isc_taskmgr_setexcltask(taskmgr, maintask);
 
@@ -97,7 +105,9 @@ create_managers(void) {
 }
 
 isc_result_t
-isc_test_begin(FILE *logfile, isc_boolean_t start_managers) {
+isc_test_begin(FILE *logfile, isc_boolean_t start_managers,
+              unsigned int workers)
+{
        isc_result_t result;
 
        isc_mem_debugging |= ISC_MEM_DEBUGRECORD;
@@ -132,8 +142,9 @@ isc_test_begin(FILE *logfile, isc_boolean_t start_managers) {
        ncpus = 1;
 #endif
 
-       if (start_managers)
-               CHECK(create_managers());
+       if (start_managers) {
+               CHECK(create_managers(workers));
+       }
 
        return (ISC_R_SUCCESS);
 
index 31c82c72b4586eaa0d3c9bc1d08542d3c56af079..614d1b82b67136e012976d7c18705a3e65856393 100644 (file)
@@ -14,8 +14,6 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id$ */
-
 /*! \file */
 
 #include <config.h>
@@ -48,7 +46,18 @@ extern isc_socketmgr_t *socketmgr;
 extern int ncpus;
 
 isc_result_t
-isc_test_begin(FILE *logfile, isc_boolean_t start_managers);
+isc_test_begin(FILE *logfile, isc_boolean_t start_managers,
+              unsigned int workers);
+/*%<
+ * Begin test, logging to 'logfile' or default if not specified.
+ *
+ * If 'start_managers' is set, start a task manager, timer manager,
+ * and socket manager.
+ *
+ * If 'workers' is zero, use the number of CPUs on the system as a default;
+ * otherwise, set up the task manager with the specified number of worker
+ * threads. The environment variable ISC_TASK_WORKERS overrides this value.
+ */
 
 void
 isc_test_end(void);
index 9afecd17fce7f8df4221873cc2d35a5922064848..79b792241550a67d17a1a4e3f2433c84e8fb2c9f 100644 (file)
@@ -63,7 +63,7 @@ ATF_TC_BODY(isc_mem, tc) {
        unsigned int i, j;
        int rval;
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_mem_create(0, 0, &localmctx);
@@ -155,7 +155,7 @@ ATF_TC_BODY(isc_mem_total, tc) {
        ssize_t diff;
        int i;
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        /* Local alloc, free */
@@ -222,7 +222,7 @@ ATF_TC_BODY(isc_mem_inuse, tc) {
        ssize_t diff;
        void *ptr;
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        mctx2 = NULL;
index 00a9fb74f30d8bf3803d5cdceb933b5f77f8f5f6..a2fb6c7fada1a34b22a5050c96e722f29efb0cd4 100644 (file)
@@ -14,8 +14,6 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id$ */
-
 /*! \file */
 
 #include <config.h>
@@ -43,7 +41,7 @@ ATF_TC_BODY(parse_overflow, tc) {
        isc_uint32_t output;
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_parse_uint32(&output, "1234567890", 10);
index 9f7c156484c47a148215c88731fa9f21b8d3dd4c..28b2dd132f2fe7e44a568b4b449bd29b63f1a9bc 100644 (file)
@@ -14,8 +14,6 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id$ */
-
 /*! \file */
 
 #include <config.h>
@@ -65,7 +63,7 @@ ATF_TC_BODY(create_pool, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_pool_create(mctx, 8, poolfree, poolinit, taskmgr, &pool);
@@ -89,7 +87,7 @@ ATF_TC_BODY(expand_pool, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_pool_create(mctx, 10, poolfree, poolinit, taskmgr, &pool1);
@@ -143,7 +141,7 @@ ATF_TC_BODY(get_objects, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_pool_create(mctx, 2, poolfree, poolinit, taskmgr, &pool);
index c4a80c4c54b287b7cbc6c255b556cbb9490eeeae..dce834c448832553954377331f0c6c1d2f5b30a7 100644 (file)
@@ -14,8 +14,6 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id$ */
-
 /*! \file */
 
 #include <config.h>
@@ -68,7 +66,7 @@ ATF_TC_BODY(queue_valid, tc) {
        item_init(&four, 4);
        item_init(&five, 5);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        ATF_CHECK(ISC_QUEUE_EMPTY(queue));
index c0fc7035f1371c584449e8c000fc32a8a588e995..eb3800bd104a180ef48ade388df93bddd0dddb15 100644 (file)
@@ -43,7 +43,7 @@ ATF_TC_BODY(isc_radix_search, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_radix_create(mctx, &radix, 32);
index 85414de773fe69eaf022fb2082c0b1d77af20fe1..afd4320097dd1a01abf9e9fe1e93d22894bcc327 100644 (file)
@@ -46,7 +46,7 @@ ATF_TC_BODY(sockaddr_hash, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        in.s_addr = inet_addr("127.0.0.1");
index f4552f8ed8ee28ab3c31b17d866d263db9a18fc6..3c24034ed97acfc209525907b6b0d52c369fe375 100644 (file)
@@ -162,7 +162,7 @@ ATF_TC_BODY(udp_sendto, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        in.s_addr = inet_addr("127.0.0.1");
@@ -237,7 +237,7 @@ ATF_TC_BODY(udp_dup, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        in.s_addr = inet_addr("127.0.0.1");
@@ -339,7 +339,7 @@ ATF_TC_BODY(udp_dscp_v4, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        in.s_addr = inet_addr("127.0.0.1");
@@ -444,7 +444,7 @@ ATF_TC_BODY(udp_dscp_v6, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        n = inet_pton(AF_INET6, "::1", &in6.s6_addr);
@@ -549,7 +549,7 @@ ATF_TC_BODY(tcp_dscp_v4, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        in.s_addr = inet_addr("127.0.0.1");
@@ -649,7 +649,7 @@ ATF_TC_BODY(tcp_dscp_v6, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        n = inet_pton(AF_INET6, "::1", &in6.s6_addr);
index 39abd78366abec12f22f698b3f927edcaa06cff5..6a1955309fdadcfd91507de6878c583a5c9afa56 100644 (file)
@@ -14,8 +14,6 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id$ */
-
 /*! \file */
 
 #include <config.h>
@@ -55,7 +53,7 @@ ATF_TC_BODY(symtab_grow, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_symtab_create(mctx, 3, undefine, NULL, ISC_FALSE, &st);
index 7294d861d38a3fd99dc005880e804f8e2c2fc106..77d277148b09f32dd584376334726f457a393708 100644 (file)
@@ -14,8 +14,6 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id$ */
-
 /*! \file */
 
 #include <config.h>
@@ -79,7 +77,7 @@ ATF_TC_BODY(create_task, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_task_create(taskmgr, 0, &task);
@@ -110,7 +108,7 @@ ATF_TC_BODY(all_events, tc) {
        result = isc_mutex_init(&set_lock);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_task_create(taskmgr, 0, &task);
@@ -166,7 +164,7 @@ ATF_TC_BODY(privileged_events, tc) {
        result = isc_mutex_init(&set_lock);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
 #ifdef ISC_PLATFORM_USETHREADS
@@ -295,7 +293,7 @@ ATF_TC_BODY(privilege_drop, tc) {
        result = isc_mutex_init(&set_lock);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
 #ifdef ISC_PLATFORM_USETHREADS
index aecb694f2f3f0ba663ef8c5ed0ef927e92df0e1c..1cd479f563c30bf4cef178c100b2879f471ac4c8 100644 (file)
@@ -14,8 +14,6 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id$ */
-
 /*! \file */
 
 #include <config.h>
@@ -44,7 +42,7 @@ ATF_TC_BODY(create_pool, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_taskpool_create(taskmgr, mctx, 8, 2, &pool);
@@ -68,7 +66,7 @@ ATF_TC_BODY(expand_pool, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_taskpool_create(taskmgr, mctx, 10, 2, &pool1);
@@ -121,7 +119,7 @@ ATF_TC_BODY(get_tasks, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_taskpool_create(taskmgr, mctx, 2, 2, &pool);
@@ -160,7 +158,7 @@ ATF_TC_BODY(set_privilege, tc) {
 
        UNUSED(tc);
 
-       result = isc_test_begin(NULL, ISC_TRUE);
+       result = isc_test_begin(NULL, ISC_TRUE, 0);
        ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        result = isc_taskpool_create(taskmgr, mctx, 2, 2, &pool);
diff --git a/lib/isc/tests/timer_test.c b/lib/isc/tests/timer_test.c
new file mode 100644 (file)
index 0000000..e360419
--- /dev/null
@@ -0,0 +1,576 @@
+/*
+ * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * See the COPYRIGHT file distributed with this work for additional
+ * information regarding copyright ownership.
+ */
+
+/*! \file */
+
+#include <config.h>
+
+#include <atf-c.h>
+
+#include <unistd.h>
+
+#include <isc/condition.h>
+#include <isc/mem.h>
+#include <isc/platform.h>
+#include <isc/print.h>
+#include <isc/task.h>
+#include <isc/time.h>
+#include <isc/timer.h>
+#include <isc/util.h>
+#include <isc/util.h>
+
+#include "isctest.h"
+
+/*
+ * Helper functions
+ */
+#define        FUDGE_SECONDS   0            /* in absence of clock_getres() */
+#define        FUDGE_NANOSECONDS       500000000    /* in absence of clock_getres() */
+
+static isc_timer_t *timer = NULL;
+static isc_condition_t cv;
+static isc_mutex_t mx;
+static isc_time_t endtime;
+static isc_time_t lasttime;
+static int seconds;
+static int nanoseconds;
+static int eventcnt;
+static int nevents;
+
+static void
+shutdown(isc_task_t *task, isc_event_t *event) {
+       isc_result_t result;
+
+       UNUSED(task);
+
+       /*
+        * Signal shutdown processing complete.
+        */
+       result = isc_mutex_lock(&mx);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_condition_signal(&cv);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_mutex_unlock(&mx);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_event_free(&event);
+}
+
+static void
+setup_test(isc_timertype_t timertype, isc_time_t *expires,
+          isc_interval_t *interval,
+          void (*action)(isc_task_t *, isc_event_t *))
+{
+       isc_result_t result;
+       isc_task_t *task = NULL;
+       isc_time_settoepoch(&endtime);
+       eventcnt = 0;
+
+       result = isc_mutex_init(&mx);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_condition_init(&cv);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       LOCK(&mx);
+
+       result = isc_task_create(taskmgr, 0, &task);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_task_onshutdown(task, shutdown, NULL);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_time_now(&lasttime);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_timer_create(timermgr, timertype, expires, interval,
+                                 task, action, (void *)timertype,
+                                 &timer);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       /*
+        * Wait for shutdown processing to complete.
+        */
+       while (eventcnt != nevents) {
+               result = isc_condition_wait(&cv, &mx);
+               ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       }
+
+       UNLOCK(&mx);
+
+       isc_task_detach(&task);
+       DESTROYLOCK(&mx);
+       (void) isc_condition_destroy(&cv);
+}
+
+static void
+ticktock(isc_task_t *task, isc_event_t *event) {
+       isc_result_t result;
+       isc_time_t now;
+       isc_time_t base;
+       isc_time_t ulim;
+       isc_time_t llim;
+       isc_interval_t interval;
+       isc_eventtype_t expected_event_type;
+
+       ++eventcnt;
+
+       printf("tick %d\n", eventcnt);
+
+       expected_event_type = ISC_TIMEREVENT_LIFE;
+       if ((isc_timertype_t) event->ev_arg == isc_timertype_ticker) {
+               expected_event_type = ISC_TIMEREVENT_TICK;
+       }
+
+       if (event->ev_type != expected_event_type) {
+               printf("expected event type %d, got %d\n",
+                      expected_event_type, (int) event->ev_type);
+       }
+
+       result = isc_time_now(&now);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, seconds, nanoseconds);
+       result = isc_time_add(&lasttime, &interval, &base);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, FUDGE_SECONDS, FUDGE_NANOSECONDS);
+       result = isc_time_add(&base, &interval, &ulim);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_time_subtract(&base, &interval, &llim);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       ATF_CHECK(isc_time_compare(&llim, &now) <= 0);
+       ATF_CHECK(isc_time_compare(&ulim, &now) >= 0);
+       lasttime = now;
+
+       if (eventcnt == nevents) {
+               result = isc_time_now(&endtime);
+               ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+               isc_timer_detach(&timer);
+               isc_task_shutdown(task);
+       }
+
+       isc_event_free(&event);
+}
+
+/*
+ * Individual unit tests
+ */
+
+ATF_TC(ticker);
+ATF_TC_HEAD(ticker, tc) {
+       atf_tc_set_md_var(tc, "descr", "timer type ticker");
+}
+ATF_TC_BODY(ticker, tc) {
+       isc_result_t result;
+       isc_time_t expires;
+       isc_interval_t interval;
+
+       UNUSED(tc);
+
+       nevents = 12;
+       seconds = 0;
+       nanoseconds = 500000000;
+
+       result = isc_test_begin(NULL, ISC_TRUE, 2);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, seconds, nanoseconds);
+       isc_time_settoepoch(&expires);
+
+       setup_test(isc_timertype_ticker, &expires, &interval, ticktock);
+
+       isc_test_end();
+}
+
+ATF_TC(once_life);
+ATF_TC_HEAD(once_life, tc) {
+       atf_tc_set_md_var(tc, "descr", "timer type once reaches lifetime");
+}
+ATF_TC_BODY(once_life, tc) {
+       isc_result_t result;
+       isc_time_t expires;
+       isc_interval_t interval;
+
+       UNUSED(tc);
+
+       nevents = 1;
+       seconds = 1;
+       nanoseconds = 100000000;
+
+       result = isc_test_begin(NULL, ISC_TRUE, 2);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, seconds, nanoseconds);
+       result = isc_time_nowplusinterval(&expires, &interval);
+       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, 0, 0);
+
+       setup_test(isc_timertype_once, &expires, &interval, ticktock);
+
+       isc_test_end();
+}
+
+
+static void
+test_idle(isc_task_t *task, isc_event_t *event) {
+       isc_result_t result;
+       isc_time_t now;
+       isc_time_t base;
+       isc_time_t ulim;
+       isc_time_t llim;
+       isc_interval_t interval;
+
+       ++eventcnt;
+
+       printf("tick %d\n", eventcnt);
+
+       result = isc_time_now(&now);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, seconds, nanoseconds);
+       result = isc_time_add(&lasttime, &interval, &base);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, FUDGE_SECONDS, FUDGE_NANOSECONDS);
+       result = isc_time_add(&base, &interval, &ulim);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_time_subtract(&base, &interval, &llim);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       ATF_CHECK(isc_time_compare(&llim, &now) <= 0);
+       ATF_CHECK(isc_time_compare(&ulim, &now) >= 0);
+       lasttime = now;
+
+       ATF_CHECK_EQ(event->ev_type, ISC_TIMEREVENT_IDLE);
+
+       isc_timer_detach(&timer);
+       isc_task_shutdown(task);
+       isc_event_free(&event);
+}
+
+ATF_TC(once_idle);
+ATF_TC_HEAD(once_idle, tc) {
+       atf_tc_set_md_var(tc, "descr", "timer type once idles out");
+}
+ATF_TC_BODY(once_idle, tc) {
+       isc_result_t result;
+       isc_time_t expires;
+       isc_interval_t interval;
+
+       UNUSED(tc);
+
+       nevents = 1;
+       seconds = 1;
+       nanoseconds = 200000000;
+
+       result = isc_test_begin(NULL, ISC_TRUE, 2);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, seconds + 1, nanoseconds);
+       result = isc_time_nowplusinterval(&expires, &interval);
+       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, seconds, nanoseconds);
+
+       setup_test(isc_timertype_once, &expires, &interval, test_idle);
+
+       isc_test_end();
+}
+
+static void
+test_reset(isc_task_t *task, isc_event_t *event) {
+       isc_result_t result;
+       isc_time_t now;
+       isc_time_t base;
+       isc_time_t ulim;
+       isc_time_t llim;
+       isc_time_t expires;
+       isc_interval_t interval;
+
+       ++eventcnt;
+
+       printf("tick %d\n", eventcnt);
+
+       /*
+        * Check expired time.
+        */
+
+       result = isc_time_now(&now);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, seconds, nanoseconds);
+       result = isc_time_add(&lasttime, &interval, &base);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, FUDGE_SECONDS, FUDGE_NANOSECONDS);
+       result = isc_time_add(&base, &interval, &ulim);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_time_subtract(&base, &interval, &llim);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       ATF_CHECK(isc_time_compare(&llim, &now) <= 0);
+       ATF_CHECK(isc_time_compare(&ulim, &now) >= 0);
+       lasttime = now;
+
+       if (eventcnt < 3) {
+               ATF_CHECK_EQ(event->ev_type, ISC_TIMEREVENT_TICK);
+
+               if (eventcnt == 2) {
+                       isc_interval_set(&interval, seconds, nanoseconds);
+                       result = isc_time_nowplusinterval(&expires, &interval);
+                       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+                       isc_interval_set(&interval, 0, 0);
+                       result = isc_timer_reset(timer, isc_timertype_once,
+                                                &expires, &interval,
+                                                ISC_FALSE);
+                       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+               }
+       } else {
+               ATF_CHECK_EQ(event->ev_type, ISC_TIMEREVENT_LIFE);
+
+               isc_timer_detach(&timer);
+               isc_task_shutdown(task);
+       }
+
+       isc_event_free(&event);
+}
+
+ATF_TC(reset);
+ATF_TC_HEAD(reset, tc) {
+       atf_tc_set_md_var(tc, "descr", "timer reset");
+}
+ATF_TC_BODY(reset, tc) {
+       isc_result_t result;
+       isc_time_t expires;
+       isc_interval_t interval;
+
+       UNUSED(tc);
+
+       result = isc_test_begin(NULL, ISC_TRUE, 2);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       nevents = 3;
+       seconds = 0;
+       nanoseconds = 750000000;
+
+       isc_interval_set(&interval, seconds, nanoseconds);
+       isc_time_settoepoch(&expires);
+
+       setup_test(isc_timertype_ticker, &expires, &interval, test_reset);
+
+       isc_test_end();
+}
+
+static int startflag;
+static int shutdownflag;
+static isc_timer_t *tickertimer = NULL;
+static isc_timer_t *oncetimer = NULL;
+static isc_task_t *task1 = NULL;
+static isc_task_t *task2 = NULL;
+
+/*
+ * task1 blocks on mx while events accumulate
+ * in its queue, until signaled by task2.
+ */
+
+static void
+start_event(isc_task_t *task, isc_event_t *event) {
+       UNUSED(task);
+
+       printf("start_event\n");
+
+       LOCK(&mx);
+       while (! startflag) {
+               (void) isc_condition_wait(&cv, &mx);
+       }
+       UNLOCK(&mx);
+
+       isc_event_free(&event);
+}
+
+static void
+tick_event(isc_task_t *task, isc_event_t *event) {
+       isc_result_t result;
+       isc_time_t expires;
+       isc_interval_t interval;
+
+       UNUSED(task);
+
+       ++eventcnt;
+       printf("tick_event %d\n", eventcnt);
+
+       /*
+        * On the first tick, purge all remaining tick events
+        * and then shut down the task.
+        */
+       if (eventcnt == 1) {
+               isc_time_settoepoch(&expires);
+               isc_interval_set(&interval, seconds, 0);
+               result = isc_timer_reset(tickertimer, isc_timertype_ticker,
+                                        &expires, &interval, ISC_TRUE);
+               ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+               isc_task_shutdown(task);
+       }
+
+       isc_event_free(&event);
+}
+
+static void
+once_event(isc_task_t *task, isc_event_t *event) {
+       isc_result_t result;
+
+       printf("once_event\n");
+
+       /*
+        * Allow task1 to start processing events.
+        */
+       LOCK(&mx);
+       startflag = 1;
+
+       result = isc_condition_broadcast(&cv);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       UNLOCK(&mx);
+
+       isc_event_free(&event);
+       isc_task_shutdown(task);
+}
+
+static void
+shutdown_purge(isc_task_t *task, isc_event_t *event) {
+       isc_result_t result;
+
+       UNUSED(task);
+       UNUSED(event);
+
+       printf("shutdown_event\n");
+
+       /*
+        * Signal shutdown processing complete.
+        */
+       LOCK(&mx);
+       shutdownflag = 1;
+
+       result = isc_condition_signal(&cv);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       UNLOCK(&mx);
+
+       isc_event_free(&event);
+}
+
+ATF_TC(purge);
+ATF_TC_HEAD(purge, tc) {
+       atf_tc_set_md_var(tc, "descr", "timer events purged");
+}
+ATF_TC_BODY(purge, tc) {
+       isc_result_t result;
+       isc_event_t *event = NULL;
+       isc_time_t expires;
+       isc_interval_t interval;
+
+       UNUSED(tc);
+
+       result = isc_test_begin(NULL, ISC_TRUE, 2);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       startflag = 0;
+       shutdownflag = 0;
+       eventcnt = 0;
+       seconds = 1;
+       nanoseconds = 0;
+
+       result = isc_mutex_init(&mx);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_condition_init(&cv);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_task_create(taskmgr, 0, &task1);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_task_onshutdown(task1, shutdown_purge, NULL);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       result = isc_task_create(taskmgr, 0, &task2);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       LOCK(&mx);
+
+       event = isc_event_allocate(mctx, (void *)1 , (isc_eventtype_t)1,
+                                  start_event, NULL, sizeof(*event));
+       ATF_REQUIRE(event != NULL);
+       isc_task_send(task1, &event);
+
+       isc_time_settoepoch(&expires);
+       isc_interval_set(&interval, seconds, 0);
+
+       tickertimer = NULL;
+       result = isc_timer_create(timermgr, isc_timertype_ticker,
+                                 &expires, &interval, task1,
+                                 tick_event, NULL, &tickertimer);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       oncetimer = NULL;
+
+       isc_interval_set(&interval, (seconds * 2) + 1, 0);
+       result = isc_time_nowplusinterval(&expires, &interval);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       isc_interval_set(&interval, 0, 0);
+       result = isc_timer_create(timermgr, isc_timertype_once,
+                                     &expires, &interval, task2,
+                                     once_event, NULL, &oncetimer);
+       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+
+       /*
+        * Wait for shutdown processing to complete.
+        */
+       while (! shutdownflag) {
+               result = isc_condition_wait(&cv, &mx);
+               ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       }
+
+       UNLOCK(&mx);
+
+       ATF_CHECK_EQ(eventcnt, 1);
+
+       isc_timer_detach(&tickertimer);
+       isc_timer_detach(&oncetimer);
+       isc_task_destroy(&task1);
+       isc_task_destroy(&task2);
+       DESTROYLOCK(&mx);
+
+       isc_test_end();
+}
+
+/*
+ * Main
+ */
+ATF_TP_ADD_TCS(tp) {
+#ifdef ISC_PLATFORM_USETHREADS
+       ATF_TP_ADD_TC(tp, ticker);
+       ATF_TP_ADD_TC(tp, once_life);
+       ATF_TP_ADD_TC(tp, once_idle);
+       ATF_TP_ADD_TC(tp, reset);
+       ATF_TP_ADD_TC(tp, purge);
+#endif
+
+       return (atf_no_error());
+}
index bee9da79fef863db8364b7cdb4b7707d79b300a8..0b568993948c1d8185adbb07c4607872e6f50ea2 100644 (file)
 ./bin/tests/tasks/win32/t_tasks.vcxproj.in     X       2013,2015,2016,2017
 ./bin/tests/tasks/win32/t_tasks.vcxproj.user   X       2013
 ./bin/tests/timer_test.c                       C       1998,1999,2000,2001,2004,2007,2013,2014,2015,2018
-./bin/tests/timers/Makefile.in                 MAKE    1999,2000,2001,2002,2004,2007,2009,2012,2014
-./bin/tests/timers/t_timers.c                  C       1999,2000,2001,2004,2007,2008,2009,2011,2013
-./bin/tests/timers/win32/t_timers.dsp.in       X       2013
-./bin/tests/timers/win32/t_timers.dsw          X       2013
-./bin/tests/timers/win32/t_timers.mak.in       X       2013
-./bin/tests/timers/win32/t_timers.vcxproj.filters.in   X       2013,2015
-./bin/tests/timers/win32/t_timers.vcxproj.in   X       2013,2015,2016,2017
-./bin/tests/timers/win32/t_timers.vcxproj.user X       2013
 ./bin/tests/virtual-time/Makefile.in           MAKE    2010,2012
 ./bin/tests/virtual-time/README                        TXT.BRIEF       2010
 ./bin/tests/virtual-time/autosign-ksk/clean.sh SH      2010,2012
index a69dce65169506b4cf9d0fe037551bd91588157f..31b3ae60a6096c892f167938425d3eb7df46d07b 100644 (file)
@@ -300,8 +300,6 @@ my @projectlist = ("..\\bin\\check\\win32\\checkconf.vcxproj",
                    "..\\bin\\tests\\system\\win32\\lwtest.vcxproj.filters",
                    "..\\bin\\tests\\tasks\\win32\\t_tasks.vcxproj",
                    "..\\bin\\tests\\tasks\\win32\\t_tasks.vcxproj.filters",
-                   "..\\bin\\tests\\timers\\win32\\t_timers.vcxproj",
-                   "..\\bin\\tests\\timers\\win32\\t_timers.vcxproj.filters",
                    "..\\bin\\tests\\win32\\backtrace_test.vcxproj",
                    "..\\bin\\tests\\win32\\backtrace_test.vcxproj.filters",
                    "..\\bin\\tests\\win32\\inter_test.vcxproj",
index 574202e2fa86e2f50c7a9ec89dc1ccdcb53b66df..8bdc14f47b4505e5660ded5e2271c8fc64eb044b 100644 (file)
@@ -544,12 +544,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "t_tasks", "..\bin\tests\tas
                {F6F08940-7597-4FEE-9CE0-E09A009C45A3} = {F6F08940-7597-4FEE-9CE0-E09A009C45A3}
        EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "t_timers", "..\bin\tests\timers\win32\t_timers.vcxproj", "{4E6F5A7C-89AA-4259-99DB-F89DAE418B3F}"
-       ProjectSection(ProjectDependencies) = postProject
-               {3840E563-D180-4761-AA9C-E6155F02EAFF} = {3840E563-D180-4761-AA9C-E6155F02EAFF}
-               {F6F08940-7597-4FEE-9CE0-E09A009C45A3} = {F6F08940-7597-4FEE-9CE0-E09A009C45A3}
-       EndProjectSection
-EndProject
 @END TESTS
 @IF XTESTS
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "backtrace_test", "..\bin\tests\win32\backtrace_test.vcxproj", "{14751171-C40E-40EE-A2F0-37FFC3CCD4A2}"