etimetest.c
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:8k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. /*
  2.  * etimetest.c
  3.  *
  4.  * Expected SUCCESSes for all tests:    3
  5.  *
  6.  * Returns:
  7.  *      Number of FAILUREs.
  8.  *
  9.  * Test of hash_engineID().                             SUCCESSes:  0
  10.  * Test of LCD Engine ID and Time List.                 SUCCESSes:  3
  11.  *
  12.  * FIX  Devise a test for {set,get}_enginetime(..., FALSE).
  13.  */
  14. static char    *rcsid = "$Id: etimetest.c,v 5.0 2002/04/20 07:30:22 hardaker Exp $";    /* */
  15. #include <net-snmp/net-snmp-config.h>
  16. #include <stdio.h>
  17. #include <sys/types.h>
  18. #ifdef HAVE_STDLIB_H
  19. #include <stdlib.h>
  20. #endif
  21. #ifdef HAVE_NETINET_IN_H
  22. #include <netinet/in.h>
  23. #endif
  24. #include "asn1.h"
  25. #include "snmp_api.h"
  26. #include "tools.h"
  27. #include "lcd_time.h"
  28. #include "snmp_debug.h"
  29. #include "callback.h"
  30. static u_int    dummy_etime, dummy_eboot;       /* For ISENGINEKNOWN(). */
  31. #include <stdlib.h>
  32. extern char    *optarg;
  33. extern int      optind, optopt, opterr;
  34. /*
  35.  * Globals, &c...
  36.  */
  37. char           *local_progname;
  38. #define USAGE "Usage: %s [-h][-s <seconds>][-aeH]"
  39. #define OPTIONLIST "aehHs:"
  40. int             doalltests = 0, dohashindex = 0, doetimetest = 0;
  41. #define ALLOPTIONS (doalltests + dohashindex + doetimetest)
  42. #define LOCAL_MAXBUF (1024 * 8)
  43. #define NL "n"
  44. #define OUTPUT(o) fprintf(stdout, "nn%snn", o);
  45. #define SUCCESS(s)
  46. {
  47. if (!failcount)
  48. fprintf(stdout, "nSUCCESS: %sn", s);
  49. }
  50. #define FAILED(e, f)
  51. {
  52. if (e != SNMPERR_SUCCESS) {
  53. fprintf(stdout, "nFAILED: %sn", f);
  54. failcount += 1;
  55. }
  56. }
  57. /*
  58.  * Global variables.
  59.  */
  60. int             sleeptime = 7;
  61. #define BLAT "alk;djf;an riu;alicenmrul;aiknglksajhe1 adcfalcenrco2"
  62. /*
  63.  * Prototypes.
  64.  */
  65. void            usage(FILE * ofp);
  66. int             test_etime(void);
  67. int             test_hashindex(void);
  68. int
  69. main(int argc, char **argv)
  70. {
  71.     int             rval = SNMPERR_SUCCESS, failcount = 0;
  72.     char            ch;
  73.     local_progname = argv[0];
  74.     /*
  75.      * Parse.
  76.      */
  77.     while ((ch = getopt(argc, argv, OPTIONLIST)) != EOF) {
  78.         switch (ch) {
  79.         case 'a':
  80.             doalltests = 1;
  81.             break;
  82.         case 'e':
  83.             doetimetest = 1;
  84.             break;
  85.         case 'H':
  86.             dohashindex = 1;
  87.             break;
  88.         case 's':
  89.             sleeptime = atoi(optarg);
  90.             if (sleeptime < 0) {
  91.                 usage(stderr);
  92.                 exit(1000);
  93.             }
  94.             break;
  95.             break;
  96.         case 'h':
  97.             rval = 0;
  98.         default:
  99.             usage(stdout);
  100.             exit(rval);
  101.         }
  102.         argc -= 1;
  103.         argv += 1;
  104.         if (optarg) {
  105.             argc -= 1;
  106.             argv += 1;
  107.             optarg = NULL;
  108.         }
  109.         optind = 1;
  110.     }                           /* endwhile getopt */
  111.     if ((argc > 1)) {
  112.         usage(stdout);
  113.         exit(1000);
  114.     } else if (ALLOPTIONS != 1) {
  115.         usage(stdout);
  116.         exit(1000);
  117.     }
  118.     /*
  119.      * Test stuff.
  120.      */
  121.     rval = sc_init();
  122.     FAILED(rval, "sc_init()");
  123.     if (dohashindex || doalltests) {
  124.         failcount += test_hashindex();
  125.     }
  126.     if (doetimetest || doalltests) {
  127.         failcount += test_etime();
  128.     }
  129.     /*
  130.      * Cleanup.
  131.      */
  132.     rval = sc_shutdown(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
  133.                        NULL, NULL);
  134.     FAILED(rval, "sc_shutdown()");
  135.     return failcount;
  136. }                               /* end main() */
  137. void
  138. usage(FILE * ofp)
  139. {
  140.     fprintf(ofp,
  141.             USAGE
  142.             "" NL
  143.             "    -a All tests." NL
  144.             "    -e Exercise the list of enginetimes."
  145.             NL
  146.             "    -h Help."
  147.             NL
  148.             "    -H Test hash_engineID()."
  149.             NL
  150.             "    -s <seconds> Seconds to pause.  (Default: 0.)"
  151.             NL NL, local_progname);
  152. }                               /* end usage() */
  153. #ifdef EXAMPLE
  154. /*******************************************************************-o-******
  155.  * test_dosomething
  156.  *
  157.  * Returns:
  158.  * Number of failures.
  159.  *
  160.  *
  161.  * Test template.
  162.  */
  163. int
  164. test_dosomething(void)
  165. {
  166.     int             rval = SNMPERR_SUCCESS, failcount = 0;
  167.   test_dosomething_quit:
  168.     return failcount;
  169. }                               /* end test_dosomething() */
  170. #endif                          /* EXAMPLE */
  171. /*******************************************************************-o-******
  172.  * test_hashindex
  173.  *
  174.  * Returns:
  175.  * Number of failures.
  176.  *
  177.  *
  178.  * Test hash_engineID().
  179.  */
  180. int
  181. test_hashindex(void)
  182. {
  183.     int                         /* rval = SNMPERR_SUCCESS,  */
  184.                     failcount = 0;
  185.     char           *s;
  186.     OUTPUT("Visual spot check of hash index outputs.  "
  187.            "(Success or failure not noted.)");
  188.     s = "A";
  189.     fprintf(stdout, "%s = %dn", s, hash_engineID(s, strlen(s)));
  190.     s = "BB";
  191.     fprintf(stdout, "%s = %dn", s, hash_engineID(s, strlen(s)));
  192.     s = "CCC";
  193.     fprintf(stdout, "%s = %dn", s, hash_engineID(s, strlen(s)));
  194.     s = "DDDD";
  195.     fprintf(stdout, "%s = %dn", s, hash_engineID(s, strlen(s)));
  196.     s = "EEEEE";
  197.     fprintf(stdout, "%s = %dn", s, hash_engineID(s, strlen(s)));
  198.     s = BLAT;
  199.     fprintf(stdout, "%s = %dn", s, hash_engineID(s, strlen(s)));
  200.     OUTPUT("Visual spot check -- DONE.");
  201.     return failcount;
  202. }                               /* end test_hashindex() */
  203. /*******************************************************************-o-******
  204.  * test_etime
  205.  *
  206.  * Returns:
  207.  * Number of failures.
  208.  *
  209.  * Test of LCD Engine ID and Time List.
  210.  */
  211. int
  212. test_etime(void)
  213. {
  214.     int             rval = SNMPERR_SUCCESS, failcount = 0;
  215.     u_int           etime, eboot;
  216.     /*
  217.      * ------------------------------------ -o-
  218.      */
  219.     OUTPUT("Query of empty list, two set actions.");
  220.     rval = ISENGINEKNOWN("A", 1);
  221.     if (rval == TRUE) {
  222.         FAILED(SNMPERR_GENERR, "Query of empty list returned TRUE.")
  223.     }
  224.     rval = set_enginetime("BB", 2, 2, 20, TRUE);
  225.     FAILED(rval, "set_enginetime()");
  226.     rval = set_enginetime("CCC", 3, 31, 90127, TRUE);
  227.     FAILED(rval, "set_enginetime()");
  228.     SUCCESS("Check of empty list, and two additions.");
  229.     /*
  230.      * ------------------------------------ -o-
  231.      */
  232.     OUTPUT("Add entries using macros, test for existence with macros.");
  233.     rval = ENSURE_ENGINE_RECORD("DDDD", 4);
  234.     FAILED(rval, "ENSURE_ENGINE_RECORD()");
  235.     rval = MAKENEW_ENGINE_RECORD("EEEEE", 5);
  236.     if (rval == SNMPERR_SUCCESS) {
  237.         FAILED(rval,
  238.                "MAKENEW_ENGINE_RECORD returned success for "
  239.                "missing record.");
  240.     }
  241.     rval = MAKENEW_ENGINE_RECORD("BB", 2);
  242.     FAILED(rval, "MAKENEW_ENGINE_RECORD().");
  243.     SUCCESS
  244.         ("Added entries with macros, tested for existence with macros.");
  245.     /*
  246.      * ------------------------------------ -o-
  247.      */
  248.     OUTPUT("Dump the list and then sleep.");
  249. #ifdef SNMP_TESTING_CODE
  250.     dump_etimelist();
  251. #endif
  252.     fprintf(stdout, "nSleeping for %d second%s... ",
  253.             sleeptime, (sleeptime == 1) ? "" : "s");
  254.     fflush(stdout);
  255.     sleep(sleeptime);
  256.     fprintf(stdout, "n");
  257.     /*
  258.      * ------------------------------------ -o-
  259.      */
  260.     OUTPUT
  261.         ("Retrieve data from real/stubbed records, update real/stubbed.");
  262.     rval = get_enginetime("BB", 2, &eboot, &etime, TRUE);
  263.     FAILED(rval, "get_enginetime().");
  264.     fprintf(stdout, "BB = <%d,%d>n", eboot, etime);
  265.     if ((etime < 20) || (eboot < 2)) {
  266.         FAILED(SNMPERR_GENERR,
  267.                "get_enginetime() returned bad values.  (1)");
  268.     }
  269.     rval = get_enginetime("DDDD", 4, &eboot, &etime, FALSE);
  270.     FAILED(rval, "get_enginetime().");
  271.     fprintf(stdout, "DDDD = <%d,%d>n", eboot, etime);
  272.     if ((etime < sleeptime) || (eboot != 0)) {
  273.         FAILED(SNMPERR_GENERR,
  274.                "get_enginetime() returned bad values.  (2)");
  275.     }
  276.     rval = set_enginetime("CCC", 3, 234, 10000, TRUE);
  277.     FAILED(rval, "set_enginetime().");
  278.     rval = set_enginetime("EEEEE", 5, 9876, 55555, TRUE);
  279.     FAILED(rval, "set_enginetime().");
  280.     SUCCESS("Retrieval and updates.");
  281.     /*
  282.      * ------------------------------------ -o-
  283.      */
  284.     OUTPUT("Sleep again, then dump the list one last time.");
  285.     fprintf(stdout, "Sleeping for %d second%s... ",
  286.             sleeptime, (sleeptime == 1) ? "" : "s");
  287.     fflush(stdout);
  288.     sleep(sleeptime);
  289.     fprintf(stdout, "n");
  290. #ifdef SNMP_TESTING_CODE
  291.     dump_etimelist();
  292. #endif
  293.     return failcount;
  294. }                               /* end test_etime() */