fsprobe: add fsprobe_Wait function
[openafs.git] / src / fsprobe / fsprobe_test.c
index 309ef60..7d78b6a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright 2000, International Business Machines Corporation and others.
  * All Rights Reserved.
- * 
+ *
  * This software has been released under the terms of the IBM Public
  * License.  For details, see the LICENSE file in the top-level source
  * directory or online at http://www.openafs.org/dl/license10.html
  *
  *------------------------------------------------------------------------*/
 
-#include <afs/param.h>
 #include <afsconfig.h>
+#include <afs/param.h>
 
-RCSID("$Header$");
-
-#include <fsprobe.h>           /*Interface for fsprobe module*/
+#include <roken.h>
 
-/*
-  * External routines that don't have explicit include file definitions.
-  */
-extern struct hostent *hostutil_GetHostByName();
+#include "fsprobe.h"           /*Interface for fsprobe module */
+#include <afs/afsutil.h>
 
 /*------------------------------------------------------------------------
  * FS_Handler
@@ -48,185 +44,181 @@ extern struct hostent *hostutil_GetHostByName();
  *     As advertised.
  *------------------------------------------------------------------------*/
 
-int FS_Handler()
+int
+FS_Handler(void)
+{                              /*FS_Handler */
 
-{ /*FS_Handler*/
+    static char rn[] = "FS_Handler";   /*Routine name */
+    struct ProbeViceStatistics *curr_stats;    /*Ptr to current stats */
+    int curr_srvidx, i;                /*Current server index */
+    int *curr_probeOK;         /*Ptr to current probeOK value */
 
-    static char rn[] = "FS_Handler";   /*Routine name*/
-    struct ProbeViceStatistics *curr_stats;/*Ptr to current stats*/
-    int curr_srvidx, i;                        /*Current server index*/
-    int *curr_probeOK;                 /*Ptr to current probeOK value*/
-
-    printf("[%s] Called; results of poll %d are:\n", rn, fsprobe_Results.probeNum);
-    curr_stats   = fsprobe_Results.stats;
+    printf("[%s] Called; results of poll %d are:\n", rn,
+          fsprobe_Results.probeNum);
+    curr_stats = fsprobe_Results.stats;
     curr_probeOK = fsprobe_Results.probeOK;
 
     for (curr_srvidx = 0; curr_srvidx < 3; curr_srvidx++) {
-      printf("\nServer %s:\n", (fsprobe_ConnInfo+curr_srvidx)->hostName);
-      printf("\tValue of probeOK for this server: %d\n", *curr_probeOK);
-      printf("\tCurrentMsgNumber:\t%d\n", curr_stats->CurrentMsgNumber);
-      printf("\tOldestMsgNumber:\t%d\n", curr_stats->OldestMsgNumber);
-      printf("\tCurrentTime:\t%d\n", curr_stats->CurrentTime);
-      printf("\tBootTime:\t%d\n", curr_stats->BootTime);
-      printf("\tStartTime:\t%d\n", curr_stats->StartTime);
-      printf("\tCurrentConnections:\t%d\n", curr_stats->CurrentConnections);
-      printf("\tTotalViceCalls:\t%d\n", curr_stats->TotalViceCalls);
-      printf("\tTotalFetchs:\t%d\n", curr_stats->TotalFetchs);
-      printf("\tFetchDatas:\t%d\n", curr_stats->FetchDatas);
-      printf("\tFetchedBytes:\t%d\n", curr_stats->FetchedBytes);
-      printf("\tFetchDataRate:\t%d\n", curr_stats->FetchDataRate);
-      printf("\tTotalStores:\t%d\n", curr_stats->TotalStores);
-      printf("\tStoreDatas:\t%d\n", curr_stats->StoreDatas);
-      printf("\tStoredBytes:\t%d\n", curr_stats->StoredBytes);
-      printf("\tStoreDataRate:\t%d\n", curr_stats->StoreDataRate);
-      printf("\tTotalRPCBytesSent:\t%d\n", curr_stats->TotalRPCBytesSent);
-      printf("\tTotalRPCBytesReceived:\t%d\n", curr_stats->TotalRPCBytesReceived);
-      printf("\tTotalRPCPacketsSent:\t%d\n", curr_stats->TotalRPCPacketsSent);
-      printf("\tTotalRPCPacketsReceived:\t%d\n", curr_stats->TotalRPCPacketsReceived);
-      printf("\tTotalRPCPacketsLost:\t%d\n", curr_stats->TotalRPCPacketsLost);
-      printf("\tTotalRPCBogusPackets:\t%d\n", curr_stats->TotalRPCBogusPackets);
-      printf("\tSystemCPU:\t%d\n", curr_stats->SystemCPU);
-      printf("\tUserCPU:\t%d\n", curr_stats->UserCPU);
-      printf("\tNiceCPU:\t%d\n", curr_stats->NiceCPU);
-      printf("\tIdleCPU:\t%d\n", curr_stats->IdleCPU);
-      printf("\tTotalIO:\t%d\n", curr_stats->TotalIO);
-      printf("\tActiveVM:\t%d\n", curr_stats->ActiveVM);
-      printf("\tTotalVM:\t%d\n", curr_stats->TotalVM);
-      printf("\tEtherNetTotalErrors:\t%d\n", curr_stats->EtherNetTotalErrors);
-      printf("\tEtherNetTotalWrites:\t%d\n", curr_stats->EtherNetTotalWrites);
-      printf("\tEtherNetTotalInterupts:\t%d\n", curr_stats->EtherNetTotalInterupts);
-      printf("\tEtherNetGoodReads:\t%d\n", curr_stats->EtherNetGoodReads);
-      printf("\tEtherNetTotalBytesWritten:\t%d\n", curr_stats->EtherNetTotalBytesWritten);
-      printf("\tEtherNetTotalBytesRead:\t%d\n", curr_stats->EtherNetTotalBytesRead);
-      printf("\tProcessSize:\t%d\n", curr_stats->ProcessSize);
-      printf("\tWorkStations:\t%d\n", curr_stats->WorkStations);
-      printf("\tActiveWorkStations:\t%d\n", curr_stats->ActiveWorkStations);
-      printf("\tSpare1:\t%d\n", curr_stats->Spare1);
-      printf("\tSpare2:\t%d\n", curr_stats->Spare2);
-      printf("\tSpare3:\t%d\n", curr_stats->Spare3);
-      printf("\tSpare4:\t%d\n", curr_stats->Spare4);
-      printf("\tSpare5:\t%d\n", curr_stats->Spare5);
-      printf("\tSpare6:\t%d\n", curr_stats->Spare6);
-      printf("\tSpare7:\t%d\n", curr_stats->Spare7);
-      printf("\tSpare8:\t%d\n", curr_stats->Spare8);
-
-      for (i=0; i < 26; i++) {
-         printf("\tDisk %d: blocks avail=%d, ttl blocks=%d, name=%s\n",
-            i, curr_stats->Disk[i].BlocksAvailable,
-            curr_stats->Disk[i].TotalBlocks, curr_stats->Disk[i].Name);
-      }
-      /*
-       * Bump out statistics pointer to the next server's region.  Ditto
-       * for probeOK;
-       */
-      curr_stats++;
-      curr_probeOK++;
-
-    } /*For each server*/
+       printf("\nServer %s:\n", (fsprobe_ConnInfo + curr_srvidx)->hostName);
+       printf("\tValue of probeOK for this server: %d\n", *curr_probeOK);
+       printf("\tCurrentMsgNumber:\t%d\n", curr_stats->CurrentMsgNumber);
+       printf("\tOldestMsgNumber:\t%d\n", curr_stats->OldestMsgNumber);
+       printf("\tCurrentTime:\t%d\n", curr_stats->CurrentTime);
+       printf("\tBootTime:\t%d\n", curr_stats->BootTime);
+       printf("\tStartTime:\t%d\n", curr_stats->StartTime);
+       printf("\tCurrentConnections:\t%d\n", curr_stats->CurrentConnections);
+       printf("\tTotalViceCalls:\t%d\n", curr_stats->TotalViceCalls);
+       printf("\tTotalFetchs:\t%d\n", curr_stats->TotalFetchs);
+       printf("\tFetchDatas:\t%d\n", curr_stats->FetchDatas);
+       printf("\tFetchedBytes:\t%d\n", curr_stats->FetchedBytes);
+       printf("\tFetchDataRate:\t%d\n", curr_stats->FetchDataRate);
+       printf("\tTotalStores:\t%d\n", curr_stats->TotalStores);
+       printf("\tStoreDatas:\t%d\n", curr_stats->StoreDatas);
+       printf("\tStoredBytes:\t%d\n", curr_stats->StoredBytes);
+       printf("\tStoreDataRate:\t%d\n", curr_stats->StoreDataRate);
+       printf("\tTotalRPCBytesSent:\t%d\n", curr_stats->TotalRPCBytesSent);
+       printf("\tTotalRPCBytesReceived:\t%d\n",
+              curr_stats->TotalRPCBytesReceived);
+       printf("\tTotalRPCPacketsSent:\t%d\n",
+              curr_stats->TotalRPCPacketsSent);
+       printf("\tTotalRPCPacketsReceived:\t%d\n",
+              curr_stats->TotalRPCPacketsReceived);
+       printf("\tTotalRPCPacketsLost:\t%d\n",
+              curr_stats->TotalRPCPacketsLost);
+       printf("\tTotalRPCBogusPackets:\t%d\n",
+              curr_stats->TotalRPCBogusPackets);
+       printf("\tSystemCPU:\t%d\n", curr_stats->SystemCPU);
+       printf("\tUserCPU:\t%d\n", curr_stats->UserCPU);
+       printf("\tNiceCPU:\t%d\n", curr_stats->NiceCPU);
+       printf("\tIdleCPU:\t%d\n", curr_stats->IdleCPU);
+       printf("\tTotalIO:\t%d\n", curr_stats->TotalIO);
+       printf("\tActiveVM:\t%d\n", curr_stats->ActiveVM);
+       printf("\tTotalVM:\t%d\n", curr_stats->TotalVM);
+       printf("\tEtherNetTotalErrors:\t%d\n",
+              curr_stats->EtherNetTotalErrors);
+       printf("\tEtherNetTotalWrites:\t%d\n",
+              curr_stats->EtherNetTotalWrites);
+       printf("\tEtherNetTotalInterupts:\t%d\n",
+              curr_stats->EtherNetTotalInterupts);
+       printf("\tEtherNetGoodReads:\t%d\n", curr_stats->EtherNetGoodReads);
+       printf("\tEtherNetTotalBytesWritten:\t%d\n",
+              curr_stats->EtherNetTotalBytesWritten);
+       printf("\tEtherNetTotalBytesRead:\t%d\n",
+              curr_stats->EtherNetTotalBytesRead);
+       printf("\tProcessSize:\t%d\n", curr_stats->ProcessSize);
+       printf("\tWorkStations:\t%d\n", curr_stats->WorkStations);
+       printf("\tActiveWorkStations:\t%d\n", curr_stats->ActiveWorkStations);
+       printf("\tSpare1:\t%d\n", curr_stats->Spare1);
+       printf("\tSpare2:\t%d\n", curr_stats->Spare2);
+       printf("\tSpare3:\t%d\n", curr_stats->Spare3);
+       printf("\tSpare4:\t%d\n", curr_stats->Spare4);
+       printf("\tSpare5:\t%d\n", curr_stats->Spare5);
+       printf("\tSpare6:\t%d\n", curr_stats->Spare6);
+       printf("\tSpare7:\t%d\n", curr_stats->Spare7);
+       printf("\tSpare8:\t%d\n", curr_stats->Spare8);
+
+       for (i = 0; i < 26; i++) {
+           printf("\tDisk %d: blocks avail=%d, ttl blocks=%d, name=%s\n", i,
+                  curr_stats->Disk[i].BlocksAvailable,
+                  curr_stats->Disk[i].TotalBlocks, curr_stats->Disk[i].Name);
+       }
+       /*
+        * Bump out statistics pointer to the next server's region.  Ditto
+        * for probeOK;
+        */
+       curr_stats++;
+       curr_probeOK++;
+
+    }                          /*For each server */
 
     /*
-      * Return the happy news.
-      */
-    return(0);
+     * Return the happy news.
+     */
+    return (0);
 
-} /*FS_Handler*/
+}                              /*FS_Handler */
 
 #include "AFS_component_version_number.c"
 
-main(argc, argv)
-    int argc;
-    char **argv;
-
-{ /*Main routine*/
+int
+main(int argc, char **argv)
+{                              /*Main routine */
 
-    static char rn[] = "fsprobe_test"; /*Routine name*/
-    register afs_int32 code;                   /*Return code*/
-    struct sockaddr_in FSSktArray[3];  /*Transarc socket array*/
-    struct hostent *he;                        /*Host entry*/
-    struct timeval tv;                 /*Time structure*/
-    int sleep_secs;                    /*Number of seconds to sleep*/
+    static char rn[] = "fsprobe_test"; /*Routine name */
+    afs_int32 code;    /*Return code */
+    struct sockaddr_in FSSktArray[3];  /*socket array */
+    struct hostent *he;                /*Host entry */
+    int sleep_secs;            /*Number of seconds to sleep */
 
     printf("\n\nTest of the fsprobe facility.\n\n");
 
     /*
-      * Fill in the socket array for bigbird, vice1, and vice2.
-      */
-    FSSktArray[0].sin_family = htons(AF_INET); /*Internet family*/
-    FSSktArray[0].sin_port   = htons(7000);    /*FileServer port*/
+     * Fill in the socket array for bigbird, vice1, and vice2.
+     */
+    FSSktArray[0].sin_family = AF_INET;
+    FSSktArray[0].sin_port = htons(7000);      /* FileServer port */
     he = hostutil_GetHostByName("servername1");
-    if (he == (struct hostent *)0) {
-      fprintf(stderr, "[%s] Can't get host info for servername1\n", rn);
-      exit(-1);
+    if (he == NULL) {
+       fprintf(stderr, "[%s] Can't get host info for servername1\n", rn);
+       exit(-1);
     }
-    bcopy(he->h_addr, &(FSSktArray[0].sin_addr.s_addr), 4);
+    memcpy(&(FSSktArray[0].sin_addr.s_addr), he->h_addr, 4);
 
-    FSSktArray[1].sin_family = htons(AF_INET); /*Internet address family*/
-    FSSktArray[1].sin_port   = htons(7000);    /*FileServer port*/
+    FSSktArray[1].sin_family = AF_INET;
+    FSSktArray[1].sin_port = htons(7000);      /* FileServer port */
     he = hostutil_GetHostByName("servername2");
-    if (he == (struct hostent *)0) {
-      fprintf(stderr, "[%s] Can't get host info for servername2\n", rn);
-      exit(-1);
+    if (he == NULL) {
+       fprintf(stderr, "[%s] Can't get host info for servername2\n", rn);
+       exit(-1);
     }
-    bcopy(he->h_addr, &(FSSktArray[1].sin_addr.s_addr), 4);
+    memcpy(&(FSSktArray[1].sin_addr.s_addr), he->h_addr, 4);
 
-    FSSktArray[2].sin_family = htons(AF_INET); /*Internet address family*/
-    FSSktArray[2].sin_port   = htons(7000);    /*FileServer port*/
+    FSSktArray[2].sin_family = AF_INET;
+    FSSktArray[2].sin_port = htons(7000);      /* FileServer port */
     he = hostutil_GetHostByName("servername3");
-    if (he == (struct hostent *)0) {
-      fprintf(stderr, "[%s] Can't get host info for servername3\n", rn);
-      exit(-1);
+    if (he == NULL) {
+       fprintf(stderr, "[%s] Can't get host info for servername3\n", rn);
+       exit(-1);
     }
-    bcopy(he->h_addr, &(FSSktArray[2].sin_addr.s_addr), 4);
+    memcpy(&(FSSktArray[2].sin_addr.s_addr), he->h_addr, 4);
 
     printf("Sockets for the 3 AFS FileServers to be probed:\n");
-    printf("\t Host servername1: IP addr 0x%lx, port %d\n",
-          FSSktArray[0].sin_addr.s_addr,
-          FSSktArray[0].sin_port);
-    printf("\t Host servername2: IP addr 0x%lx, port %d\n",
-          FSSktArray[1].sin_addr.s_addr,
-          FSSktArray[1].sin_port);
-    printf("\t Host servername3: IP addr 0x%lx, port %d\n",
-          FSSktArray[2].sin_addr.s_addr,
-          FSSktArray[2].sin_port);
+    printf("\t Host servername1: IP addr 0x%x, port %d\n",
+          FSSktArray[0].sin_addr.s_addr, FSSktArray[0].sin_port);
+    printf("\t Host servername2: IP addr 0x%x, port %d\n",
+          FSSktArray[1].sin_addr.s_addr, FSSktArray[1].sin_port);
+    printf("\t Host servername3: IP addr 0x%x, port %d\n",
+          FSSktArray[2].sin_addr.s_addr, FSSktArray[2].sin_port);
 
     /*
-      * Crank up the FileServer prober, then sit back and have fun.
-      */
+     * Crank up the FileServer prober, then sit back and have fun.
+     */
     printf("Starting up the fsprobe service\n");
-    code = fsprobe_Init(3,             /*Num servers*/
-                       FSSktArray,     /*FileServer socket array*/
-                       30,             /*Probe every 30 seconds*/
-                       FS_Handler,     /*Handler routine*/
-                       1);             /*Turn debugging output on*/
+    code = fsprobe_Init(3,     /*Num servers */
+                       FSSktArray,     /*FileServer socket array */
+                       30,     /*Probe every 30 seconds */
+                       FS_Handler,     /*Handler routine */
+                       1);     /*Turn debugging output on */
     if (code) {
-      fprintf(stderr, "[%s] Error returned by fsprobe_Init: %d\n", rn, code);
-      fsprobe_Cleanup(1); /*Get rid of malloc'ed structures*/
-      exit(-1);
+       fprintf(stderr, "[%s] Error returned by fsprobe_Init: %d\n", rn,
+               code);
+       fsprobe_Cleanup(1);     /*Get rid of malloc'ed structures */
+       exit(-1);
     }
-    sleep_secs = 60*10;        /*Allow 10 minutes of data collection*/
-    printf("Fsprobe service started, main thread sleeping for %d seconds...\n", sleep_secs);
+    sleep_secs = 60 * 10;      /*Allow 10 minutes of data collection */
+    printf
+       ("Fsprobe service started, main thread sleeping for %d seconds...\n",
+        sleep_secs);
 
-    /*
-      * Let's just fall asleep for a while, then we'll clean up.
-      */
-    tv.tv_sec  = sleep_secs;
-    tv.tv_usec = 0;
-    code = IOMGR_Select(0,     /*Num fds*/
-                       0,      /*Descriptors ready for reading*/
-                       0,      /*Descriptors ready for writing*/
-                       0,      /*Descriptors with exceptional conditions*/
-                       &tv);   /*Timeout structure*/
-    if (code) {
-      fprintf(stderr, "[%s] IOMGR_Select() returned non-zero value: %d\n", rn, code);
-    }
+    fsprobe_Wait(sleep_secs);
 
     /*
-      * We're all done.  Clean up, put the last nail in Rx, then
-      * exit happily.
-      */
+     * We're all done.  Clean up, put the last nail in Rx, then
+     * exit happily.
+     */
     printf("Yawn, main thread just woke up.  Cleaning things out...\n");
-    code = fsprobe_Cleanup(1); /*Get rid of malloc'ed data*/
+    code = fsprobe_Cleanup(1); /*Get rid of malloc'ed data */
     rx_Finalize();
     exit(0);
 
-} /*Main routine*/
+}                              /*Main routine */