[Rt-commit] r6273 - in MessageBus: lib lib/MessageBus t
audreyt at bestpractical.com
audreyt at bestpractical.com
Wed Oct 25 02:42:51 EDT 2006
Author: audreyt
Date: Wed Oct 25 02:42:50 2006
New Revision: 6273
Modified:
MessageBus/Changes
MessageBus/lib/MessageBus.pm
MessageBus/lib/MessageBus/Cacheable.pm
MessageBus/t/basic.t
Log:
* This be 0.04.
Modified: MessageBus/Changes
==============================================================================
--- MessageBus/Changes (original)
+++ MessageBus/Changes Wed Oct 25 02:42:50 2006
@@ -1,3 +1,9 @@
+[Changes for 0.04 - 2006-10-24]
+
+* Expose ->lock, ->unlock, ->fetch, ->store APIs into the MessageBus object.
+* Implement ->lock and ->unlock methods for non-Memcached backends.
+* The tests are no longer entirely skipped when memcached is not running.
+
[Changes for 0.03 - 2006-10-24]
* New backend: JiftyDBI.
Modified: MessageBus/lib/MessageBus.pm
==============================================================================
--- MessageBus/lib/MessageBus.pm (original)
+++ MessageBus/lib/MessageBus.pm Wed Oct 25 02:42:50 2006
@@ -1,5 +1,5 @@
package MessageBus;
-$MessageBus::VERSION = '0.03';
+$MessageBus::VERSION = '0.04';
use 5.005;
use strict;
@@ -32,6 +32,11 @@
MessageBus::Sub->new($self->_cache, @_ ? @_ : '');
}
+sub fetch { my $self = shift; $self->_cache->fetch(@_); }
+sub store { my $self = shift; $self->_cache->store(@_); }
+sub lock { my $self = shift; $self->_cache->lock(@_); }
+sub unlock { my $self = shift; $self->_cache->unlock(@_); }
+
1;
__END__
Modified: MessageBus/lib/MessageBus/Cacheable.pm
==============================================================================
--- MessageBus/lib/MessageBus/Cacheable.pm (original)
+++ MessageBus/lib/MessageBus/Cacheable.pm Wed Oct 25 02:42:50 2006
@@ -1,6 +1,7 @@
package MessageBus::Cacheable;
use strict;
use Time::HiRes 'time';
+use File::Spec;
#method fetch (Str *@keys --> List of Pair) { ... }
#method store (Str $key, Str $val, Num $time, Num $expiry) { ... }
@@ -35,4 +36,26 @@
$self->set_index($chan, $pub, $index);
}
+
+use constant LOCK => File::Spec->catdir(File::Spec->tmpdir, 'MessageBus-lock-');
+
+my %locks;
+sub lock {
+ my ($self, $chan) = @_;
+ for my $i (1..10) {
+ return if mkdir((LOCK . unpack("H*", $chan)), 0777);
+ sleep 1;
+ }
+}
+
+END {
+ rmdir(LOCK . unpack("H*", $_)) for keys %locks;
+}
+
+sub unlock {
+ my ($self, $chan) = @_;
+ rmdir(LOCK . unpack("H*", $chan));
+ delete $locks{$chan};
+}
+
1;
Modified: MessageBus/t/basic.t
==============================================================================
--- MessageBus/t/basic.t (original)
+++ MessageBus/t/basic.t Wed Oct 25 02:42:50 2006
@@ -8,17 +8,14 @@
unshift @backends, 'DBM_Deep' if eval { require DBM::Deep };
unshift @backends, 'JiftyDBI' if eval { require Jifty::DBI };
-unshift @backends, 'Memcached' if eval { require Cache::Memcached };
+unshift @backends, 'Memcached' if eval { require Cache::Memcached } and IO::Socket::INET->new('127.0.0.1:11211');
plan tests => 6 * scalar @backends;
SKIP: for my $backend (@backends) {
my %init_args = ();
diag('Testing backend '.$backend);
- if ($backend eq 'Memcached') {
- my $sock = IO::Socket::INET->new('127.0.0.1:11211')
- or skip("Memcached not started", 6);
- } elsif ($backend eq 'JiftyDBI') {
+ if ($backend eq 'JiftyDBI') {
$init_args{db_init} = 1;
}
More information about the Rt-commit
mailing list