Whamcloud - gitweb
Merge b_md into HEAD
[fs/lustre-release.git] / lustre / tests / rename.pl
diff --git a/lustre/tests/rename.pl b/lustre/tests/rename.pl
new file mode 100644 (file)
index 0000000..3ba9368
--- /dev/null
@@ -0,0 +1,78 @@
+#!/usr/bin/perl
+use strict;
+use diagnostics;
+use Getopt::Long;
+
+sub usage () {
+    print "Usage: $0 <mount point prefix> <iterations>\n";
+    print "example: $0 --count=2 /mnt/lustre 50\n";
+    print "         will test in /mnt/lustre1 and /mnt/lustre2\n";
+    print "         $0 --count=0 /mnt/lustre 50\n";
+    print "         will test in /mnt/lustre only\n";
+    exit;
+}
+my ($j, $k, $d, $f1, $f2, $path, $silent);
+my $count = 0;
+my $create = 10;
+
+GetOptions("silent!"=> \$silent,
+           "count=i" => \$count,
+           "create=i" => \$create);
+
+my $mtpt = shift || usage();
+my $i = shift || usage();
+my $total = $i;
+my $files = 6;
+my $dirs = 3;
+my $mcreate = 0; # should we use mcreate or open?
+
+my $which = "";
+if ($count > 0) {
+    $which = int(rand() * $count) + 1;
+}
+
+$k = $dirs;
+if ($create == 0) {
+    $k = 0;
+}
+while ($k--) {
+    $path = "$mtpt$which/$k";
+    my $rc = mkdir $path, 0755;
+    print "mkdir $path failed: $!\n" if !$rc;
+    $j = $files;
+    while ($j--) {
+        `./mcreate $path/$j`;
+    }
+}
+
+while ($i--) {
+    my $which = "";
+    if ($count > 0) {
+        $which = int(rand() * $count) + 1;
+    }
+    $d = int(rand() * $dirs);
+    $f1 = int(rand() * $files);
+    $f2 = int(rand() * $files);
+    print "[$$] $mtpt$which/$d/$f1 $mtpt$which/$d/$f2 ...\n" if !$silent;
+    my $rc = rename "$mtpt$which/$d/$f1", "$mtpt$which/$d/$f2";
+    print "[$$] done: $rc\n" if !$silent;
+    if (($total - $i) % 100 == 0) {
+        print STDERR "[" . $$ . "]" . ($total - $i) . " operations\n";
+    }
+}
+
+$k = $dirs;
+if ($create == 0) {
+    $k = 0;
+}
+while ($k--) {
+    $path = "$mtpt$which/$k";
+    $j = $files;
+    while ($j--) {
+        unlink "$path/$j";
+    }
+    my $rc = rmdir $path;
+    print "rmdir $path failed: $!\n" if !$rc;
+}
+
+print "Done.\n";