Apache2-SSI
view release on metacpan or search on metacpan
t/80.notes.t view on Meta::CPAN
key => 'test_key',
size => 2048,
destroy => 1,
mode => 0666,
);
## Clean up
ok( $shem->create == 0, 'create default value' );
$shem->create( 1 );
ok( $shem->create == 1, 'create updated value' );
my $exists = $shem->exists;
## ok( defined( $exists ), 'exists return defined value' );
# ok( !$shem->exists, 'exists' );
ok( defined( $exists ) && !$exists, 'exists' );
my $s = $shem->open;
ok( defined( $s ), 'Shared memory object' );
BAIL_OUT( "Failed to create shared memory object: $!" ) if( !defined( $s ) );
isa_ok( $s, 'Apache2::SSI::SharedMem' );
my $id = $s->id;
ok( defined( $id ) && $id =~ /\S+/, "shared memory id is \"$id\"" );
my $semid = $s->semid;
ok( defined( $semid ) && $semid =~ /\S+/, "semaphore id is \"$semid\"" );
my $owner = $s->owner;
ok( defined( $owner ) && $owner =~ /\S+/, "shared memory owner \"$owner\"" );
my $test_data = { name => 'John Doe', location => 'Tokyo' };
my $shem_object = $s->write( $test_data );
ok( defined( $shem_object ), 'write' );
ok( overload::StrVal( $s ) eq overload::StrVal( $shem_object ), 'write return value' );
my $buffer = $s->read;
ok( defined( $buffer ), 'read no argument' );
ok( ref( $buffer ) eq 'HASH', 'read buffer data integrity' );
if( ref( $buffer ) eq 'HASH' && $buffer->{name} eq 'John Doe' && $buffer->{location} eq 'Tokyo' )
{
pass( 'read data check' );
}
else
{
fail( 'read data check' );
}
my $result = qx( $^X ./t/80.sharedmem.pl 2>&1 );
chomp( $result );
if( $result eq 'ok' )
{
pass( 'shared data with separate process' );
}
else
{
diag( "Failed process with: '$result'" );
fail( 'shared data with separate process' );
}
my $data = $s->read;
ok( ref( $data ) eq 'HASH', 'shared updated data type' );
ok( $data->{year} == 2021, 'updated data value' );
my $data2;
$s->read( $data2 );
ok( ref( $data2 ) eq 'HASH', 'different read usage' );
ok( $data2->{year} == 2021, 'different read data check' );
ok( defined( $s->lock ), 'lock' );
ok( $s->locked, 'locked' );
$data->{test} = 'ok';
ok( defined( $s->write( $data ) ), 'updated data with lock' );
ok( defined( $s->unlock ), 'unlock' );
ok( defined( $s->remove ), 'remove' );
ok( !$s->exists, 'exists after remove' );
## Notes
my $n = Apache2::SSI::Notes->new( debug => $DEBUG, key => 'test_notes' );
isa_ok( $n, 'Apache2::SSI::Notes' );
my $all = $n->get;
ok( ref( $all ) eq 'HASH', 'notes respository data type' );
ok( !scalar( keys( %$all ) ), 'initially empty' );
$n->set( PersonId => '1234567', 'set' );
ok( $n->get( 'PersonId' ) eq '1234567', 'get' );
my $c = 0;
$n->do(sub
{
$c++ if( $_[0] eq 'PersonId' && $_[1] eq '1234567' );
$_[1] = '12345678';
});
ok( $c == 1, 'do' );
ok( $n->get( 'PersonId' ) eq '12345678', 'get check' );
ok( defined( $n->unset( 'PersonId' ) ), 'unset' );
ok( !defined( $n->get( 'PersonId' ) ), 'check after unset' );
ok( $n->set( 'name' => 'John Doe' ), 'set 2' );
$all = $n->get;
ok( scalar( keys( %$all ) ) == 1, 'get all' );
ok( $all->{name} eq 'John Doe' );
ok( defined( $n->clear ), 'clear' );
$all = $n->get;
ok( scalar( keys( %$all ) ) == 0, 'data check after clear' );
diag( "Removing test notes." ) if( $DEBUG );
$n->remove;
}
done_testing();
( run in 0.786 second using v1.01-cache-2.11-cpan-0d23b851a93 )