/* * Copyright (c) 2004 Sendmail, Inc. and its suppliers. * All rights reserved. * * By using this file, you agree to the terms and conditions set * forth in the LICENSE file which can be found at the top level of * the sendmail distribution. */ #include "sm/generic.h" SM_RCSID("@(#)$Id: t-dns-1.c,v 1.7 2005/11/29 00:14:15 ca Exp $") /* ** Test list insert algorithm used in dns_tsk_wr() */ #include "sm/assert.h" #include "sm/magic.h" #include "sm/error.h" #include "sm/memops.h" #include "sm/test.h" #include "sm/dns.h" #include "sm/dnstsk.h" #include "sm/dns-int.h" #include "dns.h" #include static int Verbose; static void test(uint n) { uint i, steps; dns_req_P dns_req, dns_reqh; dns_mgr_ctx_P dns_mgr_ctx; dns_mgr_ctx = (dns_mgr_ctx_P) sm_zalloc(sizeof(*dns_mgr_ctx)); if (dns_mgr_ctx == NULL) return; DNSIRQL_INIT(dns_mgr_ctx); DNSWRQL_INIT(dns_mgr_ctx); steps = 0; for (i = 0; i < n; i++) { dns_req = (dns_req_P) sm_zalloc(sizeof(*dns_req)); SM_TEST(dns_req != NULL); if (dns_req == NULL) return; dns_req->dnsreq_endt = time(NULLT) + rand(); dns_req_ins_wrql(dns_mgr_ctx, dns_req); } if (Verbose > 0) fprintf(stderr, "steps=%u, steps/n=%u\n", steps, steps/n); for (dns_req = DNSWRQL_FIRST(dns_mgr_ctx); dns_req != DNSWRQL_END(dns_mgr_ctx); dns_req = dns_reqh) { dns_reqh = DNSWRQL_NEXT(dns_req); if (dns_reqh == DNSWRQL_END(dns_mgr_ctx)) break; SM_TEST(dns_req->dnsreq_endt <= dns_reqh->dnsreq_endt); } return; } int main(int argc, char *argv[]) { int c; uint n; n = 10; Verbose = 0; while ((c = getopt(argc, argv, "i:n:V")) != -1) { switch (c) { case 'i': srand((uint) atoi(optarg)); break; case 'n': n = (uint) atoi(optarg); break; case 'V': ++Verbose; break; default: /* usage(argv[0]); */ return 1; } } sm_test_begin(argc, argv, "test dns_req sort"); test(n); return sm_test_end(); }