Update Test-Simple to CPAN version 1.302161
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Tue, 29 Jan 2019 20:02:22 +0000 (20:02 +0000)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Tue, 29 Jan 2019 20:02:22 +0000 (20:02 +0000)
  [DELTA]

1.302161  2019-01-29 09:34:27-08:00 America/Los_Angeles (TRIAL RELEASE)

    - Remove SHM Optimization

67 files changed:
Porting/Maintainers.pl
cpan/Test-Simple/lib/Test/Builder.pm
cpan/Test-Simple/lib/Test/Builder/Formatter.pm
cpan/Test-Simple/lib/Test/Builder/Module.pm
cpan/Test-Simple/lib/Test/Builder/Tester.pm
cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
cpan/Test-Simple/lib/Test/More.pm
cpan/Test-Simple/lib/Test/Simple.pm
cpan/Test-Simple/lib/Test/Tester.pm
cpan/Test-Simple/lib/Test/Tester/Capture.pm
cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
cpan/Test-Simple/lib/Test/Tester/Delegate.pm
cpan/Test-Simple/lib/Test/use/ok.pm
cpan/Test-Simple/lib/Test2.pm
cpan/Test-Simple/lib/Test2/API.pm
cpan/Test-Simple/lib/Test2/API/Breakage.pm
cpan/Test-Simple/lib/Test2/API/Context.pm
cpan/Test-Simple/lib/Test2/API/Instance.pm
cpan/Test-Simple/lib/Test2/API/Stack.pm
cpan/Test-Simple/lib/Test2/Event.pm
cpan/Test-Simple/lib/Test2/Event/Bail.pm
cpan/Test-Simple/lib/Test2/Event/Diag.pm
cpan/Test-Simple/lib/Test2/Event/Encoding.pm
cpan/Test-Simple/lib/Test2/Event/Exception.pm
cpan/Test-Simple/lib/Test2/Event/Fail.pm
cpan/Test-Simple/lib/Test2/Event/Generic.pm
cpan/Test-Simple/lib/Test2/Event/Note.pm
cpan/Test-Simple/lib/Test2/Event/Ok.pm
cpan/Test-Simple/lib/Test2/Event/Pass.pm
cpan/Test-Simple/lib/Test2/Event/Plan.pm
cpan/Test-Simple/lib/Test2/Event/Skip.pm
cpan/Test-Simple/lib/Test2/Event/Subtest.pm
cpan/Test-Simple/lib/Test2/Event/TAP/Version.pm
cpan/Test-Simple/lib/Test2/Event/V2.pm
cpan/Test-Simple/lib/Test2/Event/Waiting.pm
cpan/Test-Simple/lib/Test2/EventFacet.pm
cpan/Test-Simple/lib/Test2/EventFacet/About.pm
cpan/Test-Simple/lib/Test2/EventFacet/Amnesty.pm
cpan/Test-Simple/lib/Test2/EventFacet/Assert.pm
cpan/Test-Simple/lib/Test2/EventFacet/Control.pm
cpan/Test-Simple/lib/Test2/EventFacet/Error.pm
cpan/Test-Simple/lib/Test2/EventFacet/Hub.pm
cpan/Test-Simple/lib/Test2/EventFacet/Info.pm
cpan/Test-Simple/lib/Test2/EventFacet/Meta.pm
cpan/Test-Simple/lib/Test2/EventFacet/Parent.pm
cpan/Test-Simple/lib/Test2/EventFacet/Plan.pm
cpan/Test-Simple/lib/Test2/EventFacet/Render.pm
cpan/Test-Simple/lib/Test2/EventFacet/Trace.pm
cpan/Test-Simple/lib/Test2/Formatter.pm
cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
cpan/Test-Simple/lib/Test2/Hub.pm
cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
cpan/Test-Simple/lib/Test2/IPC.pm
cpan/Test-Simple/lib/Test2/IPC/Driver.pm
cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
cpan/Test-Simple/lib/Test2/Tools/Tiny.pm
cpan/Test-Simple/lib/Test2/Util.pm
cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
cpan/Test-Simple/lib/Test2/Util/Facets2Legacy.pm
cpan/Test-Simple/lib/Test2/Util/HashBase.pm
cpan/Test-Simple/lib/Test2/Util/Trace.pm
cpan/Test-Simple/lib/ok.pm
cpan/Test-Simple/t/Test2/modules/API/Instance.t
cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t

index bc55dac..a76d9cf 100755 (executable)
@@ -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/},
index 933b725..9729b01 100644 (file)
@@ -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 }
index c73160f..7b535ee 100644 (file)
@@ -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) }
 
index 46e863b..f0805c4 100644 (file)
@@ -7,7 +7,7 @@ use Test::Builder;
 require Exporter;
 our @ISA = qw(Exporter);
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 
 =head1 NAME
index 2bdf6d3..a91ce59 100644 (file)
@@ -1,7 +1,7 @@
 package Test::Builder::Tester;
 
 use strict;
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 use Test::Builder;
 use Symbol;
index d3fc0fb..d6ccc20 100644 (file)
@@ -1,7 +1,7 @@
 package Test::Builder::Tester::Color;
 
 use strict;
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 require Test::Builder::Tester;
 
index 2f8c97e..4029777 100644 (file)
@@ -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) }
 
index e716031..057b180 100644 (file)
@@ -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);
index e334592..2018fa7 100644 (file)
@@ -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);
index e0af629..e75b215 100644 (file)
@@ -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 );
index 9b021f6..dc75636 100644 (file)
@@ -2,7 +2,7 @@ use strict;
 
 package Test::Tester::Capture;
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 
 use Test::Builder;
index 20f00fe..6335a7b 100644 (file)
@@ -3,7 +3,7 @@ use strict;
 
 package Test::Tester::CaptureRunner;
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 
 use Test::Tester::Capture;
index 88439a1..6e98054 100644 (file)
@@ -3,7 +3,7 @@ use warnings;
 
 package Test::Tester::Delegate;
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 use Scalar::Util();
 
index ca0e178..43af93b 100644 (file)
@@ -1,7 +1,7 @@
 package Test::use::ok;
 use 5.005;
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 
 __END__
index 54f29f8..285761a 100644 (file)
@@ -2,7 +2,7 @@ package Test2;
 use strict;
 use warnings;
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 
 1;
index 1c97df7..605266a 100644 (file)
@@ -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)
 
index 29f47f0..bc81d00 100644 (file)
@@ -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/;
index 030348a..1c7d31e 100644 (file)
@@ -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/;
index 0b0e805..22523db 100644 (file)
@@ -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;
 
index 45119dc..d6cbbbe 100644 (file)
@@ -2,7 +2,7 @@ package Test2::API::Stack;
 use strict;
 use warnings;
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 
 use Test2::Hub();
index d051103..95eb4d0 100644 (file)
@@ -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/;
index 0ba7866..507762c 100644 (file)
@@ -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) }
index 419f200..a21d1eb 100644 (file)
@@ -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) }
index 9cfedd3..9ae7358 100644 (file)
@@ -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/;
 
index 21a9269..4024c75 100644 (file)
@@ -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) }
index 98f7eaf..406363f 100644 (file)
@@ -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;
 
index 86ed00b..ff968ad 100644 (file)
@@ -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;
index c8903ae..b209216 100644 (file)
@@ -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) }
index 66cd5ea..dc3fc17 100644 (file)
@@ -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) }
index 0a49207..08ee163 100644 (file)
@@ -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;
 
index 8273d29..0ce2ab1 100644 (file)
@@ -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) }
index 63e2bb7..d227b7c 100644 (file)
@@ -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) }
index b499341..9999010 100644 (file)
@@ -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};
index 429eca9..338e741 100644 (file)
@@ -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/;
 
index 773914f..807abf0 100644 (file)
@@ -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/;
index 459d11d..2f008df 100644 (file)
@@ -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) }
index da4d5ba..f312db5 100644 (file)
@@ -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/;
index b1c9d3f..d53b705 100644 (file)
@@ -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 };
index a828bde..67cbe15 100644 (file)
@@ -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 }
 
index 3db30dd..dbe7b2e 100644 (file)
@@ -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 };
index 5cf9f2e..247f023 100644 (file)
@@ -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 };
index b7d131f..d2a8666 100644 (file)
@@ -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 }
index 20bcf6a..6b5d1c0 100644 (file)
@@ -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' }
index 3087f4e..eae80ba 100644 (file)
@@ -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 }
 
index a2c0bbd..56ec73c 100644 (file)
@@ -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/;
index 77fba6e..43025dc 100644 (file)
@@ -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/;
 
index 19a0edc..0309510 100644 (file)
@@ -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 };
index bd80063..c0dd697 100644 (file)
@@ -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 }
 
index 53235f1..dba3ca9 100644 (file)
@@ -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) }
 
index cb9951b..1f92b4b 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Formatter;
 use strict;
 use warnings;
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 
 my %ADDED;
index fa2f25e..68dd071 100644 (file)
@@ -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/;
 
index 623dd81..f259c97 100644 (file)
@@ -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/;
index b6fbc3d..16f47c4 100644 (file)
@@ -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();
index d7864c8..2b7b7fc 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor::Terminator;
 use strict;
 use warnings;
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 
 1;
index aff2d61..bb9df66 100644 (file)
@@ -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/;
index dc930de..86b905d 100644 (file)
@@ -2,7 +2,7 @@ package Test2::IPC;
 use strict;
 use warnings;
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 
 use Test2::API::Instance;
index ed1a152..9675d2d 100644 (file)
@@ -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
index 167c4d8..3393354 100644 (file)
@@ -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};
index 7e5c9d3..fc8f1a1 100644 (file)
@@ -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{
index 1481de0..98264f8 100644 (file)
@@ -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/;
index f15362c..15c1f37 100644 (file)
@@ -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/;
index 1d37a5f..0700706 100644 (file)
@@ -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/;
index ed09d41..a4d32c6 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Util::HashBase;
 use strict;
 use warnings;
 
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 #################################################################
 #                                                               #
index 6fb540f..effbede 100644 (file)
@@ -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;
 
index b3bbe19..89a8653 100644 (file)
@@ -1,5 +1,5 @@
 package ok;
-our $VERSION = '1.302160';
+our $VERSION = '1.302161'; # TRIAL
 
 use strict;
 use Test::More ();
index de425f0..eac3370 100644 (file)
@@ -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;
index a2c1b7d..f896db0 100644 (file)
@@ -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;