In perl.git, the branch blead has been updated <https://perl5.git.perl.org/perl.git/commitdiff/33951b79329d4486fe6ad260a4842e69dfa98462?hp=1d1c7c15be5d21c01f7483ff9e85d8711198f1f1>
- Log ----------------------------------------------------------------- commit 33951b79329d4486fe6ad260a4842e69dfa98462 Author: Chris 'BinGOs' Williams <[email protected]> Date: Tue Jan 29 20:02:22 2019 +0000 Update Test-Simple to CPAN version 1.302161 [DELTA] 1.302161 2019-01-29 09:34:27-08:00 America/Los_Angeles (TRIAL RELEASE) - Remove SHM Optimization ----------------------------------------------------------------------- Summary of changes: Porting/Maintainers.pl | 2 +- cpan/Test-Simple/lib/Test/Builder.pm | 4 +- cpan/Test-Simple/lib/Test/Builder/Formatter.pm | 2 +- cpan/Test-Simple/lib/Test/Builder/Module.pm | 2 +- cpan/Test-Simple/lib/Test/Builder/Tester.pm | 2 +- cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm | 2 +- cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm | 2 +- cpan/Test-Simple/lib/Test/More.pm | 2 +- cpan/Test-Simple/lib/Test/Simple.pm | 2 +- cpan/Test-Simple/lib/Test/Tester.pm | 2 +- cpan/Test-Simple/lib/Test/Tester/Capture.pm | 2 +- cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm | 2 +- cpan/Test-Simple/lib/Test/Tester/Delegate.pm | 2 +- cpan/Test-Simple/lib/Test/use/ok.pm | 2 +- cpan/Test-Simple/lib/Test2.pm | 2 +- cpan/Test-Simple/lib/Test2/API.pm | 8 +- cpan/Test-Simple/lib/Test2/API/Breakage.pm | 2 +- cpan/Test-Simple/lib/Test2/API/Context.pm | 2 +- cpan/Test-Simple/lib/Test2/API/Instance.pm | 189 ++------------------- cpan/Test-Simple/lib/Test2/API/Stack.pm | 2 +- cpan/Test-Simple/lib/Test2/Event.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Bail.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Diag.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Encoding.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Exception.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Fail.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Generic.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Note.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Ok.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Pass.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Plan.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Skip.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Subtest.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/V2.pm | 2 +- cpan/Test-Simple/lib/Test2/Event/Waiting.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/About.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Control.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Error.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Info.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Render.pm | 2 +- cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm | 2 +- cpan/Test-Simple/lib/Test2/Formatter.pm | 2 +- cpan/Test-Simple/lib/Test2/Formatter/TAP.pm | 2 +- cpan/Test-Simple/lib/Test2/Hub.pm | 2 +- cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm | 2 +- .../lib/Test2/Hub/Interceptor/Terminator.pm | 2 +- cpan/Test-Simple/lib/Test2/Hub/Subtest.pm | 2 +- cpan/Test-Simple/lib/Test2/IPC.pm | 2 +- cpan/Test-Simple/lib/Test2/IPC/Driver.pm | 33 +--- cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm | 26 +-- cpan/Test-Simple/lib/Test2/Tools/Tiny.pm | 2 +- cpan/Test-Simple/lib/Test2/Util.pm | 2 +- cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm | 2 +- cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm | 2 +- cpan/Test-Simple/lib/Test2/Util/HashBase.pm | 2 +- cpan/Test-Simple/lib/Test2/Util/Trace.pm | 2 +- cpan/Test-Simple/lib/ok.pm | 2 +- cpan/Test-Simple/t/Test2/modules/API/Instance.t | 126 +------------- .../Test-Simple/t/Test2/modules/IPC/Driver/Files.t | 5 - 67 files changed, 88 insertions(+), 423 deletions(-) diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index bc55dac851..a76d9cf16a 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -1046,7 +1046,7 @@ use File::Glob qw(:case); }, 'Test::Simple' => { - 'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302160.tar.gz', + 'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302161-TRIAL.tar.gz', 'FILES' => q[cpan/Test-Simple], 'EXCLUDED' => [ qr{^examples/}, diff --git a/cpan/Test-Simple/lib/Test/Builder.pm b/cpan/Test-Simple/lib/Test/Builder.pm index 933b7254a7..9729b014ad 100644 --- a/cpan/Test-Simple/lib/Test/Builder.pm +++ b/cpan/Test-Simple/lib/Test/Builder.pm @@ -4,7 +4,7 @@ use 5.006; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { if( $] < 5.008 ) { @@ -27,7 +27,6 @@ BEGIN { Test2::IPC::Driver::Files->import; Test2::API::test2_ipc_enable_polling(); Test2::API::test2_no_wait(1); - Test2::API::test2_ipc_enable_shm(); } } @@ -1760,7 +1759,6 @@ sub coordinate_forks { my $ipc = Test2::IPC::apply_ipc($self->{Stack}); $ipc->set_no_fatal(1); Test2::API::test2_no_wait(1); - Test2::API::test2_ipc_enable_shm(); } sub no_log_results { $_[0]->{no_log_results} = 1 } diff --git a/cpan/Test-Simple/lib/Test/Builder/Formatter.pm b/cpan/Test-Simple/lib/Test/Builder/Formatter.pm index c73160f993..7b535ee5a3 100644 --- a/cpan/Test-Simple/lib/Test/Builder/Formatter.pm +++ b/cpan/Test-Simple/lib/Test/Builder/Formatter.pm @@ -2,7 +2,7 @@ package Test::Builder::Formatter; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) } diff --git a/cpan/Test-Simple/lib/Test/Builder/Module.pm b/cpan/Test-Simple/lib/Test/Builder/Module.pm index 46e863b1c4..f0805c4182 100644 --- a/cpan/Test-Simple/lib/Test/Builder/Module.pm +++ b/cpan/Test-Simple/lib/Test/Builder/Module.pm @@ -7,7 +7,7 @@ use Test::Builder; require Exporter; our @ISA = qw(Exporter); -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL =head1 NAME diff --git a/cpan/Test-Simple/lib/Test/Builder/Tester.pm b/cpan/Test-Simple/lib/Test/Builder/Tester.pm index 2bdf6d355e..a91ce597fd 100644 --- a/cpan/Test-Simple/lib/Test/Builder/Tester.pm +++ b/cpan/Test-Simple/lib/Test/Builder/Tester.pm @@ -1,7 +1,7 @@ package Test::Builder::Tester; use strict; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test::Builder; use Symbol; diff --git a/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm b/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm index d3fc0fbe32..d6ccc2079d 100644 --- a/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm +++ b/cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm @@ -1,7 +1,7 @@ package Test::Builder::Tester::Color; use strict; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL require Test::Builder::Tester; diff --git a/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm b/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm index 2f8c97e9e5..4029777a2f 100644 --- a/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm +++ b/cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm @@ -2,7 +2,7 @@ package Test::Builder::TodoDiag; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) } diff --git a/cpan/Test-Simple/lib/Test/More.pm b/cpan/Test-Simple/lib/Test/More.pm index e7160312d6..057b180f3b 100644 --- a/cpan/Test-Simple/lib/Test/More.pm +++ b/cpan/Test-Simple/lib/Test/More.pm @@ -17,7 +17,7 @@ sub _carp { return warn @_, " at $file line $line\n"; } -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test::Builder::Module; our @ISA = qw(Test::Builder::Module); diff --git a/cpan/Test-Simple/lib/Test/Simple.pm b/cpan/Test-Simple/lib/Test/Simple.pm index e334592cf2..2018fa7c21 100644 --- a/cpan/Test-Simple/lib/Test/Simple.pm +++ b/cpan/Test-Simple/lib/Test/Simple.pm @@ -4,7 +4,7 @@ use 5.006; use strict; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test::Builder::Module; our @ISA = qw(Test::Builder::Module); diff --git a/cpan/Test-Simple/lib/Test/Tester.pm b/cpan/Test-Simple/lib/Test/Tester.pm index e0af6299bf..e75b215a89 100644 --- a/cpan/Test-Simple/lib/Test/Tester.pm +++ b/cpan/Test-Simple/lib/Test/Tester.pm @@ -18,7 +18,7 @@ require Exporter; use vars qw( @ISA @EXPORT ); -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL @EXPORT = qw( run_tests check_tests check_test cmp_results show_space ); @ISA = qw( Exporter ); diff --git a/cpan/Test-Simple/lib/Test/Tester/Capture.pm b/cpan/Test-Simple/lib/Test/Tester/Capture.pm index 9b021f6d14..dc7563654f 100644 --- a/cpan/Test-Simple/lib/Test/Tester/Capture.pm +++ b/cpan/Test-Simple/lib/Test/Tester/Capture.pm @@ -2,7 +2,7 @@ use strict; package Test::Tester::Capture; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test::Builder; diff --git a/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm b/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm index 20f00feef9..6335a7bd92 100644 --- a/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm +++ b/cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm @@ -3,7 +3,7 @@ use strict; package Test::Tester::CaptureRunner; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test::Tester::Capture; diff --git a/cpan/Test-Simple/lib/Test/Tester/Delegate.pm b/cpan/Test-Simple/lib/Test/Tester/Delegate.pm index 88439a183c..6e98054f34 100644 --- a/cpan/Test-Simple/lib/Test/Tester/Delegate.pm +++ b/cpan/Test-Simple/lib/Test/Tester/Delegate.pm @@ -3,7 +3,7 @@ use warnings; package Test::Tester::Delegate; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Scalar::Util(); diff --git a/cpan/Test-Simple/lib/Test/use/ok.pm b/cpan/Test-Simple/lib/Test/use/ok.pm index ca0e178fc5..43af93be8e 100644 --- a/cpan/Test-Simple/lib/Test/use/ok.pm +++ b/cpan/Test-Simple/lib/Test/use/ok.pm @@ -1,7 +1,7 @@ package Test::use::ok; use 5.005; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL __END__ diff --git a/cpan/Test-Simple/lib/Test2.pm b/cpan/Test-Simple/lib/Test2.pm index 54f29f815f..285761a023 100644 --- a/cpan/Test-Simple/lib/Test2.pm +++ b/cpan/Test-Simple/lib/Test2.pm @@ -2,7 +2,7 @@ package Test2; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL 1; diff --git a/cpan/Test-Simple/lib/Test2/API.pm b/cpan/Test-Simple/lib/Test2/API.pm index 1c97df7bfb..605266a8ec 100644 --- a/cpan/Test-Simple/lib/Test2/API.pm +++ b/cpan/Test-Simple/lib/Test2/API.pm @@ -9,7 +9,7 @@ BEGIN { $ENV{TEST2_ACTIVE} = 1; } -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL my $INST; @@ -129,7 +129,6 @@ our @EXPORT_OK = qw{ test2_ipc_set_pending test2_ipc_get_timeout test2_ipc_set_timeout - test2_ipc_enable_shm test2_formatter test2_formatters @@ -231,7 +230,7 @@ sub test2_ipc_get_pending { $INST->get_ipc_pending } sub test2_ipc_set_pending { $INST->set_ipc_pending(@_) } sub test2_ipc_set_timeout { $INST->set_ipc_timeout(@_) } sub test2_ipc_get_timeout { $INST->ipc_timeout() } -sub test2_ipc_enable_shm { $INST->ipc_enable_shm } +sub test2_ipc_enable_shm { 0 } sub test2_formatter { if ($ENV{T2_FORMATTER} && $ENV{T2_FORMATTER} =~ m/^(\+)?(.*)$/) { @@ -1474,8 +1473,7 @@ Turn off IPC polling. =item test2_ipc_enable_shm() -Turn on IPC SHM. Only some IPC drivers use this, and most will turn it on -themselves. +Legacy, this is currently a no-op that returns 0; =item test2_ipc_set_pending($uniq_val) diff --git a/cpan/Test-Simple/lib/Test2/API/Breakage.pm b/cpan/Test-Simple/lib/Test2/API/Breakage.pm index 29f47f09f0..bc81d00c74 100644 --- a/cpan/Test-Simple/lib/Test2/API/Breakage.pm +++ b/cpan/Test-Simple/lib/Test2/API/Breakage.pm @@ -2,7 +2,7 @@ package Test2::API::Breakage; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test2::Util qw/pkg_to_file/; diff --git a/cpan/Test-Simple/lib/Test2/API/Context.pm b/cpan/Test-Simple/lib/Test2/API/Context.pm index 030348a9fd..1c7d31e5b0 100644 --- a/cpan/Test-Simple/lib/Test2/API/Context.pm +++ b/cpan/Test-Simple/lib/Test2/API/Context.pm @@ -2,7 +2,7 @@ package Test2::API::Context; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Carp qw/confess croak/; diff --git a/cpan/Test-Simple/lib/Test2/API/Instance.pm b/cpan/Test-Simple/lib/Test2/API/Instance.pm index 0b0e80544c..22523db825 100644 --- a/cpan/Test-Simple/lib/Test2/API/Instance.pm +++ b/cpan/Test-Simple/lib/Test2/API/Instance.pm @@ -2,8 +2,7 @@ package Test2::API::Instance; use strict; use warnings; -our $VERSION = '1.302160'; - +our $VERSION = '1.302161'; # TRIAL our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver Test2::Formatter/; use Carp qw/confess carp/; @@ -26,14 +25,10 @@ use Test2::Util::HashBase qw{ -preload ipc_disabled - ipc_shm_size - ipc_shm_last - ipc_shm_id ipc_polling ipc_drivers ipc_timeout formatters - _shm_warned exit_callbacks post_load_callbacks @@ -217,7 +212,6 @@ sub _finalize { for my $driver (@{$self->{+IPC_DRIVERS}}) { next unless $driver->can('is_viable') && $driver->is_viable; $self->{+IPC} = $driver->new or next; - $self->ipc_enable_shm if $self->{+IPC}->use_shm; return; } @@ -367,91 +361,19 @@ sub enable_ipc_polling { # $_[0] is a context object sub { return unless $self->{+IPC_POLLING}; - return $_[0]->{hub}->cull unless $self->{+IPC_SHM_ID}; - - # You may notice that we are not handling the error case of shmread - # returning false. In the case where SHM returns false it falls - # through to the call to 'cull'. shmread is used as an optimization - # to avoid needing to call cull() too often. In the case of failure - # the optimization fails and we call 'cull' more often than needed, - # this is slower, but completely safe. - my $val; - if(shmread($self->{+IPC_SHM_ID}, $val, 0, $self->{+IPC_SHM_SIZE})) { - return if $val eq $self->{+IPC_SHM_LAST}; - $self->{+IPC_SHM_LAST} = $val; - return $_[0]->{hub}->cull; - } - - # Do not come back if shm is gone. - delete $self->{+IPC_SHM_ID}; - return; + return unless $self->{+IPC}; + return unless $self->{+IPC}->pending(); + return $_[0]->{hub}->cull; } ) unless defined $self->ipc_polling; $self->set_ipc_polling(1); } -sub ipc_enable_shm { - my $self = shift; - - return 1 if defined $self->{+IPC_SHM_ID}; - - $self->{+_PID} = $$ unless defined $self->{+_PID}; - $self->{+_TID} = get_tid() unless defined $self->{+_TID}; - - my ($ok, $err) = try { - # SysV IPC can be available but not enabled. - # - # In some systems (*BSD) accessing the SysV IPC APIs without - # them being enabled can cause a SIGSYS. We suppress the SIGSYS - # and then get ENOSYS from the calls. - local $SIG{SYS} = 'IGNORE' if CAN_SIGSYS; - - require IPC::SysV; - - my $ipc_key = IPC::SysV::IPC_PRIVATE(); - my $shm_size = $self->{+IPC}->can('shm_size') ? $self->{+IPC}->shm_size : 64; - my $shm_id = shmget($ipc_key, $shm_size, 0666) or die "Could not get shm: $!"; - - my $initial = 'a' x $shm_size; - shmwrite($shm_id, $initial, 0, $shm_size) or die "Could not write to shm: $!"; - my $val; - shmread($shm_id, $val, 0, $shm_size) or die "Could not read from shm: $!"; - die "Read SHM value does not match the initial value ('$val' vs '$initial')" - unless $val eq $initial; - - $self->{+IPC_SHM_SIZE} = $shm_size; - $self->{+IPC_SHM_ID} = $shm_id; - $self->{+IPC_SHM_LAST} = $initial; - }; - - return $ok; -} - -sub ipc_free_shm { - my $self = shift; - - my $id = delete $self->{+IPC_SHM_ID}; - return unless defined $id; - - $self->{+IPC}->stop_shm() if $self->{+IPC} && $self->{+IPC}->can('stop_shm'); - shmctl($id, IPC::SysV::IPC_RMID(), 0); -} - sub get_ipc_pending { my $self = shift; - return -1 unless defined $self->{+IPC_SHM_ID}; - my $val; - - if (shmread($self->{+IPC_SHM_ID}, $val, 0, $self->{+IPC_SHM_SIZE})) { - return 0 if $val eq $self->{+IPC_SHM_LAST}; - $self->{+IPC_SHM_LAST} = $val; - return 1; - } - - $self->{+IPC}->stop_shm() if $self->{+IPC} && $self->{+IPC}->can('stop_shm'); - delete $self->{+IPC_SHM_ID}; - return -1; + return -1 unless $self->{+IPC}; + $self->{+IPC}->pending(); } sub _check_pid { @@ -462,61 +384,13 @@ sub _check_pid { sub set_ipc_pending { my $self = shift; - - return undef unless defined $self->{+IPC_SHM_ID}; - + return unless $self->{+IPC}; my ($val) = @_; confess "value is required for set_ipc_pending" unless $val; - return if shmwrite($self->{+IPC_SHM_ID}, $val, 0, $self->{+IPC_SHM_SIZE}); - my $errno = 0 + $!; - my $err = "$!"; - - # Do not come back if shm is gone. - my $id = delete $self->{+IPC_SHM_ID}; - - my $ppid = defined $self->{+_PID} ? $self->{+_PID} : '?'; - my $ptid = defined $self->{+_TID} ? $self->{+_TID} : '?'; - my $cpid = $$; - my $ctid = get_tid(); - - my $shm_stopped = $self->{+IPC} && $self->{+IPC}->can('shm_stopped') && $self->{+IPC}->shm_stopped || 0; - - if (defined($self->{+_PID}) && ($ppid == $$ || $self->_check_pid($ppid)) && !$shm_stopped) { - return if $self->{+_SHM_WARNED}++; - - my $warn = "($$) It looks like SHM has gone away unexpectedly ($errno: $err). The parent process is still active. This is not fatal, but may slow things down slightly."; - $warn = Carp::longmess($warn) if Carp->can('longmess'); - warn $warn; - return; - } - - chomp(my $msg = <<" EOT"); -IPC shmwrite($id, '$val', 0, $self->{+IPC_SHM_SIZE}) failed, the parent process appears to have exited. This is a fatal error. - Error: ($errno) $err - Parent PID: $ppid - Current PID: $cpid - Parent TID: $ptid - Current TID: $ctid - SHM State: $shm_stopped - IPC errors like this usually indicate a race condition in a test where the - parent thread/process is allowed to exit before all child processes/threads - are complete. - Trace: - EOT - $self->_fatal_error($msg); -} - -sub _fatal_error { - my $self = shift; - my ($msg) = @_; - - $msg = Carp::longmess($msg) if Carp->can('longmess'); - - print STDERR $msg; - CORE::exit(255); + $self->{+IPC}->set_pending($val); } sub disable_ipc_polling { @@ -583,19 +457,6 @@ sub _ipc_wait { return 255; } -sub DESTROY { - my $self = shift; - - return if $self->{+PRELOAD}; - - return unless defined($self->{+_PID}) && $self->{+_PID} == $$; - return unless defined($self->{+_TID}) && $self->{+_TID} == get_tid(); - - $self->{+IPC}->stop_shm() if $self->{+IPC} && $self->{+IPC}->can('stop_shm'); - shmctl($self->{+IPC_SHM_ID}, IPC::SysV::IPC_RMID(), 0) - if defined $self->{+IPC_SHM_ID} && IPC::SysV->can('IPC_RMID'); -} - sub set_exit { my $self = shift; @@ -807,42 +668,20 @@ This is intended to be called in an C<END { ... }> block. This will look at test state and set $?. This will also call any end callbacks, and wait on child processes/threads. -=item $obj->ipc_enable_shm() - -Turn on SHM for IPC (if possible) - -=item $shm_id = $obj->ipc_shm_id() - -If SHM is enabled for IPC this will be the shm_id for it. - -=item $shm_size = $obj->ipc_shm_size() - -If SHM is enabled for IPC this will be the size of it. - -=item $shm_last_val = $obj->ipc_shm_last() - -If SHM is enabled for IPC this will return the last SHM value seen. - =item $obj->set_ipc_pending($val) -use the IPC SHM to tell other processes and threads there is a pending event. -C<$val> should be a unique value no other thread/process will generate. +Tell other processes and threads there is a pending event. C<$val> should be a +unique value no other thread/process will generate. -B<Note:> This will also make the current process see a pending event. It does -not set C<ipc_shm_last()>, this is important because doing so could hide a -previous change. +B<Note:> This will also make the current process see a pending event. =item $pending = $obj->get_ipc_pending() -This returns -1 if SHM is not enabled for IPC. - -This returns 0 if the SHM value matches the last known value, which means there -are no pending events. +This returns -1 if it is not possible to know. -This returns 1 if the SHM value has changed, which means there are probably -pending events. +This returns 0 if there are no pending events. -When 1 is returned this will set C<< $obj->ipc_shm_last() >>. +This returns 1 if there are pending events. =item $timeout = $obj->ipc_timeout; diff --git a/cpan/Test-Simple/lib/Test2/API/Stack.pm b/cpan/Test-Simple/lib/Test2/API/Stack.pm index 45119dc20c..d6cbbbebcb 100644 --- a/cpan/Test-Simple/lib/Test2/API/Stack.pm +++ b/cpan/Test-Simple/lib/Test2/API/Stack.pm @@ -2,7 +2,7 @@ package Test2::API::Stack; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test2::Hub(); diff --git a/cpan/Test-Simple/lib/Test2/Event.pm b/cpan/Test-Simple/lib/Test2/Event.pm index d051103b61..95eb4d0f79 100644 --- a/cpan/Test-Simple/lib/Test2/Event.pm +++ b/cpan/Test-Simple/lib/Test2/Event.pm @@ -2,7 +2,7 @@ package Test2::Event; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Scalar::Util qw/blessed reftype/; use Carp qw/croak/; diff --git a/cpan/Test-Simple/lib/Test2/Event/Bail.pm b/cpan/Test-Simple/lib/Test2/Event/Bail.pm index 0ba7866ab8..507762c3ca 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Bail.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Bail.pm @@ -2,7 +2,7 @@ package Test2::Event::Bail; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Diag.pm b/cpan/Test-Simple/lib/Test2/Event/Diag.pm index 419f20056a..a21d1eb256 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Diag.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Diag.pm @@ -2,7 +2,7 @@ package Test2::Event::Diag; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Encoding.pm b/cpan/Test-Simple/lib/Test2/Event/Encoding.pm index 9cfedd3555..9ae7358201 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Encoding.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Encoding.pm @@ -2,7 +2,7 @@ package Test2::Event::Encoding; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Carp qw/croak/; diff --git a/cpan/Test-Simple/lib/Test2/Event/Exception.pm b/cpan/Test-Simple/lib/Test2/Event/Exception.pm index 21a9269d05..4024c75c09 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Exception.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Exception.pm @@ -2,7 +2,7 @@ package Test2::Event::Exception; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Fail.pm b/cpan/Test-Simple/lib/Test2/Event/Fail.pm index 98f7eaf22c..406363f2d5 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Fail.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Fail.pm @@ -2,7 +2,7 @@ package Test2::Event::Fail; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test2::EventFacet::Info; diff --git a/cpan/Test-Simple/lib/Test2/Event/Generic.pm b/cpan/Test-Simple/lib/Test2/Event/Generic.pm index 86ed00b1a7..ff968ad7ad 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Generic.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Generic.pm @@ -5,7 +5,7 @@ use warnings; use Carp qw/croak/; use Scalar::Util qw/reftype/; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } use Test2::Util::HashBase; diff --git a/cpan/Test-Simple/lib/Test2/Event/Note.pm b/cpan/Test-Simple/lib/Test2/Event/Note.pm index c8903aefbf..b2092165a1 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Note.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Note.pm @@ -2,7 +2,7 @@ package Test2::Event::Note; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Ok.pm b/cpan/Test-Simple/lib/Test2/Event/Ok.pm index 66cd5eac44..dc3fc17cd9 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Ok.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Ok.pm @@ -2,7 +2,7 @@ package Test2::Event::Ok; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Pass.pm b/cpan/Test-Simple/lib/Test2/Event/Pass.pm index 0a492071f3..08ee163924 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Pass.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Pass.pm @@ -2,7 +2,7 @@ package Test2::Event::Pass; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test2::EventFacet::Info; diff --git a/cpan/Test-Simple/lib/Test2/Event/Plan.pm b/cpan/Test-Simple/lib/Test2/Event/Plan.pm index 8273d29617..0ce2ab1f10 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Plan.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Plan.pm @@ -2,7 +2,7 @@ package Test2::Event::Plan; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Skip.pm b/cpan/Test-Simple/lib/Test2/Event/Skip.pm index 63e2bb7e8a..d227b7cf3c 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Skip.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Skip.pm @@ -2,7 +2,7 @@ package Test2::Event::Skip; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) } diff --git a/cpan/Test-Simple/lib/Test2/Event/Subtest.pm b/cpan/Test-Simple/lib/Test2/Event/Subtest.pm index b499341557..99990100fe 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Subtest.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Subtest.pm @@ -2,7 +2,7 @@ package Test2::Event::Subtest; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) } use Test2::Util::HashBase qw{subevents buffered subtest_id subtest_uuid}; diff --git a/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm b/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm index 429eca9b05..338e7413d2 100644 --- a/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm +++ b/cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm @@ -2,7 +2,7 @@ package Test2::Event::TAP::Version; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Carp qw/croak/; diff --git a/cpan/Test-Simple/lib/Test2/Event/V2.pm b/cpan/Test-Simple/lib/Test2/Event/V2.pm index 773914f6bc..807abf081e 100644 --- a/cpan/Test-Simple/lib/Test2/Event/V2.pm +++ b/cpan/Test-Simple/lib/Test2/Event/V2.pm @@ -2,7 +2,7 @@ package Test2::Event::V2; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Scalar::Util qw/reftype/; use Carp qw/croak/; diff --git a/cpan/Test-Simple/lib/Test2/Event/Waiting.pm b/cpan/Test-Simple/lib/Test2/Event/Waiting.pm index 459d11d720..2f008dfbff 100644 --- a/cpan/Test-Simple/lib/Test2/Event/Waiting.pm +++ b/cpan/Test-Simple/lib/Test2/Event/Waiting.pm @@ -2,7 +2,7 @@ package Test2::Event::Waiting; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) } diff --git a/cpan/Test-Simple/lib/Test2/EventFacet.pm b/cpan/Test-Simple/lib/Test2/EventFacet.pm index da4d5baee6..f312db57b8 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet.pm @@ -2,7 +2,7 @@ package Test2::EventFacet; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test2::Util::HashBase qw/-details/; use Carp qw/croak/; diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/About.pm b/cpan/Test-Simple/lib/Test2/EventFacet/About.pm index b1c9d3f17e..d53b70507e 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/About.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/About.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::About; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -package -no_display -uuid -eid }; diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm index a828bdea35..67cbe15e09 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Amnesty; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL sub is_list { 1 } diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm index 3db30dd0ab..dbe7b2ec8f 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Assert; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -pass -no_debug -number }; diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm index 5cf9f2e2d7..247f0230a0 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Control.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Control; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -global -terminate -halt -has_callback -encoding }; diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm index b7d131f993..d2a8666162 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Error.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Error; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL sub facet_key { 'errors' } sub is_list { 1 } diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm index 20bcf6a7c0..6b5d1c0b94 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Hub; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL sub is_list { 1 } sub facet_key { 'hubs' } diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm index 3087f4ed0d..eae80ba9c5 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Info.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Info; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL sub is_list { 1 } diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm index a2c0bbdc90..56ec73c59f 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Meta; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use vars qw/$AUTOLOAD/; diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm index 77fba6e710..43025dc650 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Parent; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Carp qw/confess/; diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm index 19a0edc4b4..0309510ba4 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Plan; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } use Test2::Util::HashBase qw{ -count -skip -none }; diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm index bd8006304f..c0dd697888 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Render.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Render; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL sub is_list { 1 } diff --git a/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm b/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm index 53235f1e38..dba3ca9f74 100644 --- a/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm +++ b/cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm @@ -2,7 +2,7 @@ package Test2::EventFacet::Trace; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) } diff --git a/cpan/Test-Simple/lib/Test2/Formatter.pm b/cpan/Test-Simple/lib/Test2/Formatter.pm index cb9951b284..1f92b4bfdc 100644 --- a/cpan/Test-Simple/lib/Test2/Formatter.pm +++ b/cpan/Test-Simple/lib/Test2/Formatter.pm @@ -2,7 +2,7 @@ package Test2::Formatter; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL my %ADDED; diff --git a/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm b/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm index fa2f25eb46..68dd071799 100644 --- a/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm +++ b/cpan/Test-Simple/lib/Test2/Formatter/TAP.pm @@ -2,7 +2,7 @@ package Test2::Formatter::TAP; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test2::Util qw/clone_io/; diff --git a/cpan/Test-Simple/lib/Test2/Hub.pm b/cpan/Test-Simple/lib/Test2/Hub.pm index 623dd81ef9..f259c977dc 100644 --- a/cpan/Test-Simple/lib/Test2/Hub.pm +++ b/cpan/Test-Simple/lib/Test2/Hub.pm @@ -2,7 +2,7 @@ package Test2::Hub; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Carp qw/carp croak confess/; diff --git a/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm b/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm index b6fbc3dc3c..16f47c463a 100644 --- a/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm +++ b/cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm @@ -2,7 +2,7 @@ package Test2::Hub::Interceptor; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test2::Hub::Interceptor::Terminator(); diff --git a/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm b/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm index d7864c8717..2b7b7fc6fe 100644 --- a/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm +++ b/cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm @@ -2,7 +2,7 @@ package Test2::Hub::Interceptor::Terminator; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL 1; diff --git a/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm b/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm index aff2d618ed..bb9df66d3b 100644 --- a/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm +++ b/cpan/Test-Simple/lib/Test2/Hub/Subtest.pm @@ -2,7 +2,7 @@ package Test2::Hub::Subtest; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) } use Test2::Util::HashBase qw/nested exit_code manual_skip_all/; diff --git a/cpan/Test-Simple/lib/Test2/IPC.pm b/cpan/Test-Simple/lib/Test2/IPC.pm index dc930de92b..86b905df46 100644 --- a/cpan/Test-Simple/lib/Test2/IPC.pm +++ b/cpan/Test-Simple/lib/Test2/IPC.pm @@ -2,7 +2,7 @@ package Test2::IPC; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Test2::API::Instance; diff --git a/cpan/Test-Simple/lib/Test2/IPC/Driver.pm b/cpan/Test-Simple/lib/Test2/IPC/Driver.pm index ed1a152d76..9675d2ddf1 100644 --- a/cpan/Test-Simple/lib/Test2/IPC/Driver.pm +++ b/cpan/Test-Simple/lib/Test2/IPC/Driver.pm @@ -2,7 +2,7 @@ package Test2::IPC::Driver; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Carp qw/confess/; @@ -18,7 +18,8 @@ sub import { test2_ipc_add_driver($class); } -sub use_shm { 0 } +sub pending { -1 } +sub set_pending { -1 } for my $meth (qw/send cull add_hub drop_hub waiting is_viable/) { no strict 'refs'; @@ -89,11 +90,6 @@ error. This is the same as C<< $ipc->abort($msg) >> except that it uses C<Carp::longmess> to add a stack trace to the message. -=item $false = $self->use_shm - -The base class always returns false for this method. You may override it if you -wish to use the SHM made available in L<Test2::API>/L<Test2::API::Instance>. - =back =head1 LOADING DRIVERS @@ -141,8 +137,7 @@ load it too late for it to be effective. ... # Send the event to the proper hub. - # If you are using the SHM you should notify other procs/threads that - # there is a pending event. + # This may notify other procs/threads that there is a pending event. Test2::API::test2_ipc_set_pending($uniq_val); } @@ -213,8 +208,7 @@ process+thread. ... # Send the event to the proper hub. - # If you are using the SHM you should notify other procs/threads that - # there is a pending event. + # This may notify other procs/threads that there is a pending event. Test2::API::test2_ipc_set_pending($uniq_val); } @@ -258,23 +252,6 @@ This is a hook called by C<< Test2::IPC::Driver->abort() >>. This is your chance to cleanup when an abort happens. You cannot prevent the abort, but you can gracefully except it. -=item $bool = $ipc->use_shm() - -True if you want to make use of the L<Test2::API>/L<Test2::API::Instance> SHM. - -=item $bites = $ipc->shm_size() - -Use this to customize the size of the SHM space. There are no guarantees about -what the size will be if you do not implement this. - -=item $ipc->stop_shm() - -The Test2 API will call this when it is about to free the SHM memory. - -=item $bool = $ipc->shm_stopped() - -Returns true if C<< $ipc->stop_shm >> has been called. - =back =head1 SOURCE diff --git a/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm b/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm index 167c4d86d3..33933549af 100644 --- a/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm +++ b/cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm @@ -2,11 +2,11 @@ package Test2::IPC::Driver::Files; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) } -use Test2::Util::HashBase qw{tempdir event_ids read_ids timeouts tid pid globals shm_stop_file}; +use Test2::Util::HashBase qw{tempdir event_ids read_ids timeouts tid pid globals}; use Scalar::Util qw/blessed/; use File::Temp(); @@ -17,24 +17,8 @@ use POSIX(); use Test2::Util qw/try get_tid pkg_to_file IS_WIN32 ipc_separator do_rename do_unlink try_sig_mask/; use Test2::API qw/test2_ipc_set_pending/; -sub use_shm { 1 } -sub shm_size() { 64 } - sub is_viable { 1 } -sub stop_shm { - my $self = shift; - open(my $fh, '>>', $self->{+SHM_STOP_FILE}) or die "Could not open shm top file: $!"; - print $fh $$, "\n"; - return; -} - -sub shm_stopped { - my $self = shift; - return 1 if -e $self->{+SHM_STOP_FILE}; - return 0; -} - sub init { my $self = shift; @@ -48,8 +32,6 @@ sub init { $self->{+TEMPDIR} = File::Spec->canonpath($tmpdir); - $self->{+SHM_STOP_FILE} = File::Spec->catfile($tmpdir, 'stop_shm'); - print STDERR "\nIPC Temp Dir: $tmpdir\n\n" if $ENV{T2_KEEP_TEMPDIR}; @@ -182,7 +164,7 @@ do so if Test::Builder is loaded for legacy reasons. if ($ok) { $self->abort("Could not rename file '$file' -> '$ready': $ren_err") unless $ren_ok; - test2_ipc_set_pending(substr($file, -(shm_size))); + test2_ipc_set_pending($file); } else { my $src_file = __FILE__; @@ -397,7 +379,7 @@ sub DESTROY { my $full = File::Spec->catfile($tempdir, $file); my $sep = ipc_separator; - if ($aborted || $file =~ m/^(GLOBAL|HUB$sep|stop_shm)/) { + if ($aborted || $file =~ m/^(GLOBAL|HUB$sep)/) { $full =~ m/^(.*)$/; $full = $1; # Untaint it next if $ENV{T2_KEEP_TEMPDIR}; diff --git a/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm b/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm index 7e5c9d343b..fc8f1a1045 100644 --- a/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm +++ b/cpan/Test-Simple/lib/Test2/Tools/Tiny.pm @@ -16,7 +16,7 @@ use Test2::API qw/context run_subtest test2_stack/; use Test2::Hub::Interceptor(); use Test2::Hub::Interceptor::Terminator(); -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL BEGIN { require Exporter; our @ISA = qw(Exporter) } our @EXPORT = qw{ diff --git a/cpan/Test-Simple/lib/Test2/Util.pm b/cpan/Test-Simple/lib/Test2/Util.pm index 1481de04ee..98264f8b32 100644 --- a/cpan/Test-Simple/lib/Test2/Util.pm +++ b/cpan/Test-Simple/lib/Test2/Util.pm @@ -2,7 +2,7 @@ package Test2::Util; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use POSIX(); use Config qw/%Config/; diff --git a/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm b/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm index f15362cbda..15c1f37f0f 100644 --- a/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm +++ b/cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm @@ -2,7 +2,7 @@ package Test2::Util::ExternalMeta; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Carp qw/croak/; diff --git a/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm b/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm index 1d37a5fb95..0700706780 100644 --- a/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm +++ b/cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm @@ -2,7 +2,7 @@ package Test2::Util::Facets2Legacy; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use Carp qw/croak confess/; use Scalar::Util qw/blessed/; diff --git a/cpan/Test-Simple/lib/Test2/Util/HashBase.pm b/cpan/Test-Simple/lib/Test2/Util/HashBase.pm index ed09d41ea9..a4d32c6ad6 100644 --- a/cpan/Test-Simple/lib/Test2/Util/HashBase.pm +++ b/cpan/Test-Simple/lib/Test2/Util/HashBase.pm @@ -2,7 +2,7 @@ package Test2::Util::HashBase; use strict; use warnings; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL ################################################################# # # diff --git a/cpan/Test-Simple/lib/Test2/Util/Trace.pm b/cpan/Test-Simple/lib/Test2/Util/Trace.pm index 6fb540f056..effbede114 100644 --- a/cpan/Test-Simple/lib/Test2/Util/Trace.pm +++ b/cpan/Test-Simple/lib/Test2/Util/Trace.pm @@ -2,7 +2,7 @@ package Test2::Util::Trace; require Test2::EventFacet::Trace; @ISA = ('Test2::EventFacet::Trace'); -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL 1; diff --git a/cpan/Test-Simple/lib/ok.pm b/cpan/Test-Simple/lib/ok.pm index b3bbe193dc..89a8653c15 100644 --- a/cpan/Test-Simple/lib/ok.pm +++ b/cpan/Test-Simple/lib/ok.pm @@ -1,5 +1,5 @@ package ok; -our $VERSION = '1.302160'; +our $VERSION = '1.302161'; # TRIAL use strict; use Test::More (); diff --git a/cpan/Test-Simple/t/Test2/modules/API/Instance.t b/cpan/Test-Simple/t/Test2/modules/API/Instance.t index de425f0a80..eac33705b8 100644 --- a/cpan/Test-Simple/t/Test2/modules/API/Instance.t +++ b/cpan/Test-Simple/t/Test2/modules/API/Instance.t @@ -472,6 +472,7 @@ if (CAN_REALLY_FORK) { { my $one = $CLASS->new; + $one->{ipc} = Test2::IPC::Driver::Files->new; ok(!@{$one->context_init_callbacks}, "no callbacks"); is($one->ipc_polling, undef, "no polling, undef"); @@ -490,7 +491,6 @@ if (CAN_REALLY_FORK) { ok(defined($one->{_tid}), "tid is defined"); is(@{$one->context_init_callbacks}, 1, "added the callback"); is($one->ipc_polling, 1, "polling on"); - $one->set_ipc_shm_last('abc1'); $one->context_init_callbacks->[0]->({'hub' => 'Fake::Hub'}); is($cull, 1, "called cull once"); $cull = 0; @@ -498,7 +498,6 @@ if (CAN_REALLY_FORK) { $one->disable_ipc_polling; is(@{$one->context_init_callbacks}, 1, "kept the callback"); is($one->ipc_polling, 0, "no polling, set to 0"); - $one->set_ipc_shm_last('abc3'); $one->context_init_callbacks->[0]->({'hub' => 'Fake::Hub'}); is($cull, 0, "did not call cull"); $cull = 0; @@ -506,7 +505,6 @@ if (CAN_REALLY_FORK) { $one->enable_ipc_polling; is(@{$one->context_init_callbacks}, 1, "did not add the callback"); is($one->ipc_polling, 1, "polling on"); - $one->set_ipc_shm_last('abc3'); $one->context_init_callbacks->[0]->({'hub' => 'Fake::Hub'}); is($cull, 1, "called cull once"); } @@ -536,128 +534,6 @@ if (CAN_REALLY_FORK) { ok($one->ipc_disabled, "IPC is disabled directly"); } -SKIP: { - last SKIP if $] lt "5.008"; - no warnings 'redefine'; - my $error; - local *Test2::API::Instance::_fatal_error = sub { die "$_[1]\n" }; - - my $two = $CLASS->new; - $two->{ipc_shm_id} = undef; - is($two->set_ipc_pending, undef, "No shm"); - - $two->{ipc_shm_id} = -1; - $two->{ipc_shm_size} = 32; - - my $ok = eval { $two->set_ipc_pending(); 1 }; - ok(!$ok, "Exception"); - like($@, qr/value is required for set_ipc_pending/, "Got expected exception"); - - my $ctid = get_tid(); - - my $ec; - { - local $! = 22; - $ec = "$!"; - } - - $ok = eval { $two->set_ipc_pending('message'); 1 }; - my $err = $@; - ok(!$ok, "Exception"); - - is($err, <<" EOT", "Got exception when shm write fails (no tid/pid)") unless $err =~ m/not implemented/; -IPC shmwrite(-1, 'message', 0, 32) failed, the parent process appears to have exited. This is a fatal error. - Error: (22) $ec - Parent PID: ? - Current PID: $$ - Parent TID: ? - Current TID: $ctid - SHM State: 0 - IPC errors like this usually indicate a race condition in a test where the - parent thread/process is allowed to exit before all child processes/threads - are complete. - Trace: - EOT - - # Need a fake PID that cannot actually be signaled, but is a real number.... - $two->{_pid} = 10000000000000000; - $two->{_tid} = $ctid; - - $two->{ipc_shm_id} = -1; # Reset this - $ok = eval { - # override check_pid, some platforms will return true with our absurd PID above. - no warnings 'redefine'; - local *Test2::API::Instance::_check_pid = sub { () }; - $two->set_ipc_pending('message'); - 1; - }; - $err = $@; - ok(!$ok, "Exception"); - - is($err, <<" EOT", "Got exception when shm write fails (with tid/pid)") unless $err =~ m/not implemented/; -IPC shmwrite(-1, 'message', 0, 32) failed, the parent process appears to have exited. This is a fatal error. - Error: (22) $ec - Parent PID: $two->{_pid} - Current PID: $$ - Parent TID: $ctid - Current TID: $ctid - SHM State: 0 - IPC errors like this usually indicate a race condition in a test where the - parent thread/process is allowed to exit before all child processes/threads - are complete. - Trace: - EOT - - $two->{_pid} = $$; # Parent that has not exited - $two->{_tid} = $ctid; - - my $warn = undef; - $two->{ipc_shm_id} = -1; # Reset this - $ok = eval { - local $SIG{__WARN__} = sub { $warn = $_[0] }; - $two->set_ipc_pending('message'); - 1; - }; - $err = $@; - unless ($err =~ m/not implemented/) { - ok($ok, "No Exception"); - - like( - $warn, - qr/^\($$\) It looks like SHM has gone away unexpectedly \(22: $ec\)\. The parent process is still active\. This is not fatal, but may slow things down slightly/, - "Got warning when shm write fails but parent is open" - ); - } -} - - -if (CAN_REALLY_FORK && $] ge "5.008") { - my ($rh, $wh); - pipe($rh, $wh) or die "no pipe: $!"; - - my $pid = fork; - die "Could not fork" unless defined $pid; - if ($pid) { - close($wh); - my $check = waitpid($pid, 0); - my $exit = $?; - is($check, $pid, "Waited on process"); - my $err = ($exit >> 8); - my $sig = ($exit & 127); - ok(!$sig, "did not exit via a signal"); - is($err, 255, "exit code 255"); - - my $msg = join "" => <$rh>; - like($msg, qr/^blah, I died\nfoo bar at \Q${ \__FILE__ }\E line \d+/, "Saw error message"); - } - else { - close($rh); - open(STDERR, '>&', $wh) or print "Could not open: $!"; - $CLASS->_fatal_error("blah, I died\nfoo bar"); - exit 1; - } -} - Test2::API::test2_ipc_wait_enable(); done_testing; diff --git a/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t b/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t index a2c1b7d0d9..f896db0709 100644 --- a/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t +++ b/cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t @@ -94,11 +94,6 @@ $ipc->send($hid, bless({global => 1}, 'Foo'), 'GLOBAL'); my @got = $ipc->cull($hid); ok(@got == 0, "did not get our own global event"); -ok(!-e $ipc->shm_stop_file, "No stop file"); -$ipc->stop_shm; -ok(-e $ipc->shm_stop_file, "stop file added"); -ok($ipc->shm_stopped, "stopped shm"); - my $tmpdir = $ipc->tempdir; ok(-d $tmpdir, "still have temp dir"); $ipc = undef; -- Perl5 Master Repository
