afscp: Add -s option
authorAndrew Deason <adeason@sinenomine.net>
Wed, 10 Nov 2010 21:35:17 +0000 (15:35 -0600)
committerDerrick Brashear <shadow@dementia.org>
Mon, 15 Nov 2010 17:42:44 +0000 (09:42 -0800)
Add an -s option to afscp, to specify an amount of time to sleep in
the middle of a read or write operation. This can be helpful in
simulating a slow client.

Change-Id: I51228033ff485a92a7805a76e2d6645ec4123495
Reviewed-on: http://gerrit.openafs.org/3291
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/tests/afscp.c

index fc5194b..08b4d65 100644 (file)
@@ -218,6 +218,7 @@ main(int argc, char **argv)
     int code = 0, fetchcode, storecode, printcallerrs = 0;
     int slcl = 0, dlcl = 0, unlock = 0;
     int sfd = 0, dfd = 0, unauth = 0;
+    int sleeptime = 0;
 
     struct AFSCBFids theFids;
     struct AFSCBs theCBs;
@@ -225,7 +226,7 @@ main(int argc, char **argv)
 
     blksize = 8 * 1024;
 
-    while ((ch = getopt(argc, argv, "iouUb:")) != -1) {
+    while ((ch = getopt(argc, argv, "iouUb:s:")) != -1) {
        switch (ch) {
        case 'b':
            blksize = atoi(optarg);
@@ -236,6 +237,9 @@ main(int argc, char **argv)
        case 'o':
            dlcl = 1;
            break;
+       case 's':
+           sleeptime = atoi(optarg);
+           break;
        case 'u':
            unauth = 1;
            break;
@@ -251,10 +255,11 @@ main(int argc, char **argv)
 
     if (argc - optind + unlock < 2) {
        fprintf(stderr,
-               "Usage: afscp [-i|-o]] [-b xfersz] [-u] [-U] source [dest]\n");
+               "Usage: afscp [-i|-o]] [-b xfersz] [-s time] [-u] [-U] source [dest]\n");
        fprintf(stderr, "  -b   Set block size\n");
        fprintf(stderr, "  -i   Source is local (copy into AFS)\n");
        fprintf(stderr, "  -o   Dest is local (copy out of AFS)\n");
+       fprintf(stderr, "  -s   Set the seconds to sleep before reading/writing data\n");
        fprintf(stderr, "  -u   Run unauthenticated\n");
        fprintf(stderr, "  -U   Send an unlock request for source. (dest path not required)\n");
        fprintf(stderr, "source and dest can be paths or specified as:\n");
@@ -479,6 +484,14 @@ main(int argc, char **argv)
        bytesremaining = ntohl(bytesremaining);
     }
 
+    if (sleeptime > 0) {
+#ifdef AFS_PTHREAD_ENV
+       sleep(sleeptime);
+#else
+       IOMGR_Sleep(sleeptime);
+#endif
+    }
+
     while (bytesremaining > 0) {
        /*printf("%d bytes remaining\n",bytesremaining); */
        if (slcl) {