]> git.sur5r.net Git - bacula/bacula/commitdiff
regress: add function to create many dirs
authorEric Bollengier <eric@eb.homelinux.org>
Mon, 22 Feb 2010 17:06:21 +0000 (18:06 +0100)
committerEric Bollengier <eric@eb.homelinux.org>
Mon, 22 Feb 2010 17:06:21 +0000 (18:06 +0100)
regress/scripts/functions.pm

index d5a0244eea935324e0ef0b48b2c0d100aead68e3..37d11eab69fe2faed5f324e665369bf5983cec68 100644 (file)
@@ -39,6 +39,7 @@ use Exporter;
 our @ISA = qw(Exporter);
 our @EXPORT =  qw(update_some_files create_many_files check_multiple_copies
                   update_client $HOST $BASEPORT add_to_backup_list check_volume_size
+                  create_many_dirs
                   check_min_volume_size check_max_volume_size $estat $bstat $rstat $zstat
                   $cwd $bin $scripts $conf $rscripts $tmp $working extract_resource
                   $db_name $db_user $db_password $src $tmpsrc);
@@ -258,6 +259,47 @@ sub create_many_files
     print "\n";
 }
 
+# create big number of dirs in a given directory
+# Inputs: dest  destination directory
+#         nb    number of dirs to create
+# Example:
+# perl -Mscripts::functions -e 'create_many_dirs("$cwd/files", 100000)'
+sub create_many_dirs
+{
+    my ($dest, $nb) = @_;
+    my ($base, $base2);
+    my $dir=$dest;
+    $nb = $nb || 750000;
+    mkdir $dest;
+    $base = chr($nb % 26 + 65); # We use a base directory A-Z
+    $base2 = chr(($nb+10) % 26 + 65);
+    # already done
+    if (-d "$dest/$base/$base2/$base/a${base}a${nb}aaa${base}") {
+        print "Files already created\n";
+        return;
+    }
+
+    # auto flush stdout for dots
+    $| = 1;
+    print "Create $nb dirs into $dest\n";
+    for(my $i=0; $i < 26; $i++) {
+        $base = chr($i + 65);
+        $base2 = chr(($i+10) % 26 + 65);
+        mkdir("$dest/$base");
+        mkdir("$dest/$base/$base2");
+        mkdir("$dest/$base/$base2/$base$base2");
+        mkdir("$dest/$base/$base2/$base$base2/$base$base2");
+        mkdir("$dest/$base/$base2/$base$base2/$base$base2/$base2$base");
+    }
+    for(my $i=0; $i<=$nb; $i++) {
+        $base = chr($i % 26 + 65);
+        $base2 = chr(($i+10) % 26 + 65);
+        mkdir("$dest/$base/$base2/$base$base2/$base$base2/$base2$base/a${base}a${i}aaa$base");  
+        print "." if (!($i % 10000));
+    }
+    print "\n";
+}
+
 sub check_encoding
 {
     if (grep {/Wanted SQL_ASCII, got UTF8/}