blob: 6b35d14d4467d50342ca4d4b96a5d1e454ab9c6c [file] [log] [blame]
#!/usr/bin/perl -w
#
# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved.
#
use strict;
use File::Basename;
# returns numbers with a normal distribution
sub normal {
my($mean) = $_[0];
my($stddev) = $_[1];
my $x = -6.0;
for (my $i = 0; $i < 12; $i++) {
$x += rand;
}
$x = $mean + $stddev * $x;
return $x;
}
# location of fill2
my $fill2="./src/fill2";
# for each file attach a random number of attributes
# each filled with a random amount of data
# attribute name is the checksum of the data stored within
# the attribute
my $status = 0; # return status
my $file;
while (<>) {
chomp($file = $_);
die("Error: $0: $file not found\n") if ( ! -e $file);
if ($0 =~ /fill2attr$/) {
# attach attributes to this file
my $num = abs(int(normal(3, 1)));
my $seed = 1;
my $verbose = 1;
my $tmp = "/tmp/fill2attr$$";
for (my $i = 0; $i < $num; $i++) {
my $size = abs(int(normal(256, 200)));
my $cmd = "$fill2 -d nbytes=$size,linelength=72,seed=$seed -b 4k $tmp";
$cmd .= " > /dev/null 2>&1" if (! $verbose);
if (system($cmd) != 0) {
die("Error $0: can't create $tmp\n");
}
chomp($_ = `sum -r $tmp`);
my ($sum) = split(/\s+/);
system("cat $tmp | attr -s $sum $file > /dev/null");
system("rm $tmp");
}
}
elsif ($0 =~ /fill2attr_check/) {
# get the attributes for this file
my $cmd = "attr -q -l $file |";
open LIST, $cmd;
my @labels = <LIST>;
close LIST or die("Error listing attributes: $!");
chomp(@labels);
# check attribute contents
foreach my $label (@labels) {
my $sum;
($sum) = split(/\s+/, `attr -q -g $label $file | sum -r`);
if ($sum ne $label) {
warn("Attribute \"$label\" does not match " .
"attribute contents for file $file\n");
$status = 1;
}
}
}
}
exit($status);