X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=t%2F02-IndexData-Utils-PersistentCounter.t;h=8b57c30f0d851d7506bedf29a037bea9c871d2c4;hb=f947811f49204cb1ddd3013bb094f7b5222547cc;hp=d6930dc38df2c008362218514f914629889b100e;hpb=452e4301773f3ed690f7081d113a22087a5eef9c;p=perl-indexdata-utils.git diff --git a/t/02-IndexData-Utils-PersistentCounter.t b/t/02-IndexData-Utils-PersistentCounter.t index d6930dc..8b57c30 100644 --- a/t/02-IndexData-Utils-PersistentCounter.t +++ b/t/02-IndexData-Utils-PersistentCounter.t @@ -1,7 +1,7 @@ use strict; use warnings; -use Test::More tests => 15; +use Test::More tests => 17; BEGIN { use_ok('IndexData::Utils::PersistentCounter') }; my $file = "/tmp/id-u-pc-$$"; @@ -12,15 +12,38 @@ $counter = new IndexData::Utils::PersistentCounter("/x/$file", 1); ok(!defined $counter, "can't create counter in silly place"); $counter = new IndexData::Utils::PersistentCounter($file, 1); -ok(defined $counter, "created new counter: $!"); +my $detail = defined $counter ? '' : ": $!@"; +ok(defined $counter, "created new counter$detail"); -foreach my $i (1..10) { +foreach my $i (1..5) { my $n = $counter->next(); - is($n, $i); + ok(defined $n, "n is defined"); + ok($n == $i, "n has correct value $i"); } -### should test access from multiple processes +# Three processes making five accesses each +for (my $i = 0; $i < 3; $i ++) { + my $pid = fork(); + if ($pid == 0) { + # child + foreach my $j (1..5) { + my $n = $counter->next(); + print "# child ", $i+1, ", access ", $j+1, ": value is $n\n"; + } + exit 0; + } else { + print "# process $pid started\n"; + } +} + +while ((my $pid = wait()) > 0) { + print "# process $pid completed\n"; +} + +my $n = $counter->next(); +ok($n == 21, "n == 21 on 21 total access (n=$n)"); -$counter->delete(); +my $ok = $counter->delete(); +ok($ok, "deleted counter file"); $counter = new IndexData::Utils::PersistentCounter($file); ok(!defined $counter, "can't open deleted counter");