test_ncbi_disp.c
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:7k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: test_ncbi_disp.c,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:04:25  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R6.15
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: test_ncbi_disp.c,v 1000.0 2003/10/29 17:04:25 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Author:  Anton Lavrentiev
  35.  *
  36.  * File Description:
  37.  *   Standard test for named service resolution facility
  38.  *
  39.  */
  40. #include "../ncbi_priv.h"               /* CORE logging facilities */
  41. #include <connect/ncbi_service.h>
  42. #include <stdlib.h>
  43. /* This header must go last */
  44. #include "test_assert.h"
  45. /* One can define env.var. 'service'_CONN_HOST to reroute dispatching
  46.  * information to particular dispatching host (instead of default).
  47.  */
  48. int main(int argc, const char* argv[])
  49. {
  50.     const char* service = argc > 1 ? argv[1] : "io_bounce";
  51.     int/*bool*/ local = argc > 2;
  52.     const SSERV_Info* info;
  53.     int n_found = 0;
  54.     SERV_ITER iter;
  55.     CORE_SetLOGFormatFlags(fLOG_None          | fLOG_Level   |
  56.                            fLOG_OmitNoteLevel | fLOG_DateTime);
  57.     CORE_SetLOGFILE(stderr, 0/*false*/);
  58.     CORE_LOGF(eLOG_Note, ("Looking for service `%s' (%s)", service,
  59.                           local ? "locally" : "randomly"));
  60.     CORE_LOG(eLOG_Trace, "Opening service mapper");
  61.     if ((local &&
  62.          (iter = SERV_Open(service, fSERV_Any, SERV_LOCALHOST, 0)) != 0) ||
  63.         (!local && (iter = SERV_OpenSimple(service)) != 0)) {
  64.         HOST_INFO hinfo;
  65.         CORE_LOG(eLOG_Trace, "Service mapper has been successfully opened");
  66.         while ((info = SERV_GetNextInfoEx(iter, &hinfo)) != 0) {
  67.             char* info_str = SERV_WriteInfo(info);
  68.             CORE_LOGF(eLOG_Note, ("Service `%s' = %s", service, info_str));
  69.             if (hinfo) {
  70.                 double array[2];
  71.                 const char* e = HINFO_Environment(hinfo);
  72.                 CORE_LOG(eLOG_Note, "  Host info available:");
  73.                 CORE_LOGF(eLOG_Note, ("    Number of CPUs: %d",
  74.                                       HINFO_CpuCount(hinfo)));
  75.                 CORE_LOGF(eLOG_Note, ("    Number of tasks: %d",
  76.                                       HINFO_TaskCount(hinfo)));
  77.                 if (HINFO_LoadAverage(hinfo, array)) {
  78.                     CORE_LOGF(eLOG_Note, ("    Load averages: %f, %f (BLAST)",
  79.                                           array[0], array[1]));
  80.                 } else
  81.                     CORE_LOG (eLOG_Note,  "    Load average: unavailable");
  82.                 CORE_LOGF(eLOG_Note, ("    Host environment: %s%s%s",
  83.                                       e? """: "", e? e: "NULL", e? """: ""));
  84.                 free(hinfo);
  85.             }
  86.             free(info_str);
  87.             n_found++;
  88.         }
  89.         CORE_LOG(eLOG_Trace, "Resetting service mapper");
  90.         SERV_Reset(iter);
  91.         CORE_LOG(eLOG_Trace, "Service mapper has been reset");
  92.         if (n_found && !(info = SERV_GetNextInfo(iter)))
  93.             CORE_LOG(eLOG_Fatal, "Service not found after reset");
  94.         CORE_LOG(eLOG_Trace, "Closing service mapper");
  95.         SERV_Close(iter);
  96.     }
  97.     if (n_found != 0)
  98.         CORE_LOGF(eLOG_Note, ("Test complete: %d server(s) found", n_found));
  99.     else
  100.         CORE_LOG(eLOG_Fatal, "Requested service not found");
  101. #if 0
  102.     {{
  103.         SConnNetInfo* net_info;
  104.         net_info = ConnNetInfo_Create(service);
  105.         iter = SERV_Open(service, fSERV_Http, SERV_LOCALHOST, net_info);
  106.         ConnNetInfo_Destroy(net_info);
  107.     }}
  108.     if (iter != 0) {
  109.         while ((info = SERV_GetNextInfo(iter)) != 0) {
  110.             char* info_str = SERV_WriteInfo(info);
  111.             CORE_LOGF(eLOG_Note, ("Service `%s' = %s", service, info_str));
  112.             free(info_str);
  113.             n_found++;
  114.         }
  115.         SERV_Close(iter);
  116.     }
  117. #endif
  118.     CORE_SetLOG(0);
  119.     return 0;
  120. }
  121. /*
  122.  * --------------------------------------------------------------------------
  123.  * $Log: test_ncbi_disp.c,v $
  124.  * Revision 1000.0  2003/10/29 17:04:25  gouriano
  125.  * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R6.15
  126.  *
  127.  * Revision 6.15  2003/05/14 03:58:43  lavr
  128.  * Match changes in respective APIs of the tests
  129.  *
  130.  * Revision 6.14  2002/10/29 22:15:52  lavr
  131.  * Host info output slightly modified
  132.  *
  133.  * Revision 6.13  2002/10/29 00:35:47  lavr
  134.  * Added tests for host info API
  135.  *
  136.  * Revision 6.12  2002/04/15 19:21:44  lavr
  137.  * +#include "../test/test_assert.h"
  138.  *
  139.  * Revision 6.11  2002/03/22 19:48:57  lavr
  140.  * Removed <stdio.h>: included from ncbi_util.h or ncbi_priv.h
  141.  *
  142.  * Revision 6.10  2002/02/20 20:56:49  lavr
  143.  * Added missing calls to free(server_info)
  144.  *
  145.  * Revision 6.9  2001/11/29 22:20:52  lavr
  146.  * Flow control trace messages added
  147.  *
  148.  * Revision 6.8  2001/09/24 20:35:34  lavr
  149.  * +Test for SERV_Reset()
  150.  *
  151.  * Revision 6.7  2001/07/18 17:44:18  lavr
  152.  * Added parameter to switch to local test
  153.  *
  154.  * Revision 6.6  2001/03/20 22:14:08  lavr
  155.  * Second test added to list service by server type (yet #if 0'ed out)
  156.  *
  157.  * Revision 6.5  2001/03/09 04:58:26  lavr
  158.  * Typo (made of pretty styling by vakatov) corrected in comparison
  159.  *
  160.  * Revision 6.4  2001/03/08 17:56:25  lavr
  161.  * Redesigned to show that SERV_Open can return SERV_ITER, that
  162.  * in turn returns 0 even if used for the very first time.
  163.  *
  164.  * Revision 6.3  2001/03/05 23:21:11  lavr
  165.  * SERV_WriteInfo take only one argument now
  166.  *
  167.  * Revision 6.2  2001/03/02 20:01:38  lavr
  168.  * SERV_Close() shown; "../ncbi_priv.h" explained
  169.  *
  170.  * Revision 6.1  2001/03/01 00:33:59  lavr
  171.  * Initial revision
  172.  *
  173.  * ==========================================================================
  174.  */