time-t-casting-fixes-20060404
[openafs.git] / src / xstat / xstat_fs_test.c
index cd57a4d..e5ac15a 100644 (file)
@@ -83,7 +83,8 @@ static char *opNames[] = {
     "NGetVolumeInfo",
     "BulkStatus",
     "XStatsVersion",
-    "GetXStats"
+    "GetXStats",
+    "GetCapabilities"
 };
 
 static char *xferOpNames[] = {
@@ -121,13 +122,14 @@ PrintCallInfo()
     int numInt32s;             /*# int32words returned */
     afs_int32 *currInt32;      /*Ptr to current afs_int32 value */
     char *printableTime;       /*Ptr to printable time string */
+    time_t probeTime = xstat_fs_Results.probeTime;
 
     /*
      * Just print out the results of the particular probe.
      */
     numInt32s = xstat_fs_Results.data.AFS_CollData_len;
     currInt32 = (afs_int32 *) (xstat_fs_Results.data.AFS_CollData_val);
-    printableTime = ctime((time_t *) & (xstat_fs_Results.probeTime));
+    printableTime = ctime(&probeTime);
     printableTime[strlen(printableTime) - 1] = '\0';
 
     printf("AFS_XSTATSCOLL_CALL_INFO (coll %d) for FS %s\n[Probe %d, %s]\n\n",
@@ -246,8 +248,10 @@ PrintOverallPerfInfo(struct afs_PerfStats *a_ovP)
     printf("\t%10d rx_nClientConns\n", a_ovP->rx_nClientConns);
     printf("\t%10d rx_nPeerStructs\n", a_ovP->rx_nPeerStructs);
     printf("\t%10d rx_nCallStructs\n", a_ovP->rx_nCallStructs);
-    printf("\t%10d rx_nFreeCallStructs\n\n", a_ovP->rx_nFreeCallStructs);
+    printf("\t%10d rx_nFreeCallStructs\n", a_ovP->rx_nFreeCallStructs);
+    printf("\t%10d rx_nBusies\n\n", a_ovP->rx_nBusies);
 
+    printf("\t%10d fs_nBusies\n\n", a_ovP->fs_nBusies);
     /*
      * Host module fields.
      */
@@ -419,6 +423,7 @@ PrintFullPerfInfo()
     struct fs_stats_FullPerfStats *fullPerfP;  /*Ptr to full perf stats */
     char *printableTime;       /*Ptr to printable time
                                 * string */
+    time_t probeTime = xstat_fs_Results.probeTime;
 
     numInt32s = xstat_fs_Results.data.AFS_CollData_len;
     if (numInt32s != fullPerfInt32s) {
@@ -427,7 +432,7 @@ PrintFullPerfInfo()
        return;
     }
 
-    printableTime = ctime((time_t *) & (xstat_fs_Results.probeTime));
+    printableTime = ctime(&probeTime);
     printableTime[strlen(printableTime) - 1] = '\0';
     fullPerfP = (struct fs_stats_FullPerfStats *)
        (xstat_fs_Results.data.AFS_CollData_val);
@@ -470,6 +475,7 @@ PrintPerfInfo()
     afs_int32 numInt32s;       /*# int32words received */
     struct afs_PerfStats *perfP;       /*Ptr to performance stats */
     char *printableTime;       /*Ptr to printable time string */
+    time_t probeTime = xstat_fs_Results.probeTime;
 
     numInt32s = xstat_fs_Results.data.AFS_CollData_len;
     if (numInt32s != perfInt32s) {
@@ -478,7 +484,7 @@ PrintPerfInfo()
        return;
     }
 
-    printableTime = ctime((time_t *) & (xstat_fs_Results.probeTime));
+    printableTime = ctime(&probeTime);
     printableTime[strlen(printableTime) - 1] = '\0';
     perfP = (struct afs_PerfStats *)
        (xstat_fs_Results.data.AFS_CollData_val);
@@ -491,6 +497,34 @@ PrintPerfInfo()
     PrintOverallPerfInfo(perfP);
 }
 
+static char *CbCounterStrings[] = {
+    "DeleteFiles",
+    "DeleteCallBacks",
+    "BreakCallBacks",
+    "AddCallBack",
+    "GotSomeSpaces",
+    "DeleteAllCallBacks",
+    "nFEs", "nCBs", "nblks",
+    "CBsTimedOut",
+    "nbreakers",
+    "GSS1", "GSS2", "GSS3", "GSS4", "GSS5"
+};
+
+
+void
+PrintCbCounters() {
+    int numInt32s = sizeof(CbCounterStrings)/sizeof(char *);
+    int i;
+    afs_uint32 *val=xstat_fs_Results.data.AFS_CollData_val;
+
+    if (numInt32s > xstat_fs_Results.data.AFS_CollData_len)
+       numInt32s = xstat_fs_Results.data.AFS_CollData_len;
+
+    for (i=0; i<numInt32s; i++) {
+       printf("\t%10u %s\n", val[i], CbCounterStrings[i]);
+    }
+}
+
 
 /*------------------------------------------------------------------------
  * FS_Handler
@@ -547,6 +581,10 @@ FS_Handler()
        PrintFullPerfInfo();
        break;
 
+    case AFS_XSTATSCOLL_CBSTATS:
+       PrintCbCounters();
+       break;
+
     default:
        printf("** Unknown collection: %d\n",
               xstat_fs_Results.collectionNumber);
@@ -685,7 +723,11 @@ RunTheTest(struct cmd_syndesc *a_s)
      */
     curr_item = a_s->parms[P_FS_NAMES].items;
     for (currFS = 0; currFS < numFSs; currFS++) {
+#if defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV)
+       FSSktArray[currFS].sin_family = AF_INET;        /*Internet family */
+#else
        FSSktArray[currFS].sin_family = htons(AF_INET); /*Internet family */
+#endif
        FSSktArray[currFS].sin_port = htons(7000);      /*FileServer port */
        he = hostutil_GetHostByName(curr_item->data);
        if (he == NULL) {