-#!/usr/bin/perl
+BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
+
use strict;
use warnings;
use Test::More;
-use lib qw(t/lib);
+
+
+BEGIN {
+ delete $ENV{DBIC_ASSERT_NO_ERRONEOUS_METAINSTANCE_USE};
+
+ plan skip_all =>
+ 'Skipping RH perl performance bug tests as DBIC_NO_WARN_BAD_PERL set'
+ if ( $ENV{DBIC_NO_WARN_BAD_PERL} );
+
+ require DBICTest::RunMode;
+ plan skip_all => 'Skipping as system appears to be a smoker'
+ if DBICTest::RunMode->is_smoker;
+}
+
+# globalllock so that the test runs alone
+use DBICTest ':GlobalLock';
+
+use Benchmark;
# This is a rather unusual test.
# It does not test any aspect of DBIx::Class, but instead tests the
# Perl Performance Issues on Red Hat Systems in
# L<DBIx::Class::Manual::Troubleshooting>
-plan skip_all =>
- 'Skipping RH perl performance bug tests as DBIC_NO_WARN_BAD_PERL set'
- if ( $ENV{DBIC_NO_WARN_BAD_PERL} );
-
-plan skip_all => 'Skipping as AUTOMATED_TESTING is set'
- if ( $ENV{AUTOMATED_TESTING} );
-
-eval "use Benchmark ':all'";
-plan skip_all => 'needs Benchmark for testing' if $@;
-
-plan tests => 3;
-
-ok( 1, 'Dummy - prevents next test timing out' );
-
# we do a benchmark test filling an array with blessed/overloaded references,
# against an array filled with array refs.
# On a sane system the ratio between these operation sets is 1 - 1.5,
# whereas a bugged system gives a ratio of around 8
-# we therefore consider there to be a problem if the ratio is >= 2
+# we therefore consider there to be a problem if the ratio is >= $fail_ratio
+my $fail_ratio = 3;
+
+ok( $fail_ratio, "Testing for a blessed overload slowdown >= ${fail_ratio}x" );
+
my $results = timethese(
- -1, # run for 1 CPU second each
+ -1, # run for 1 WALL second each
{
no_bless => sub {
my %h;
my $ratio = $results->{no_bless}->iters / $results->{bless_overload}->iters;
-ok( ( $ratio < 2 ), 'Overload/bless performance acceptable' )
+cmp_ok( $ratio, '<', $fail_ratio, 'Overload/bless performance acceptable' )
|| diag(
"\n",
"This perl has a substantial slow down when handling large numbers\n",
"in the Troubleshooting POD documentation entitled\n",
"'Perl Performance Issues on Red Hat Systems'\n",
"As this is an extremely serious condition, the only way to skip\n",
- "over this test is to --force the installation, or to edit the test\n",
+ "over this test is to --force the installation, or to look in the test\n",
"file " . __FILE__ . "\n",
);
SKIP: {
skip "Not checking for bless handling as performance is OK", 1
- if ( $ratio < 2 );
+ if Test::Builder->new->is_passing;
{
package # don't want this in PAUSE
}
sub _possibly_has_bad_overload_performance {
- return $] < 5.008009 && !_has_bug_34925();
+ return( "$]" < 5.008009 and !_has_bug_34925() );
}
# If this next one fails then you almost certainly have a RH derived
"Please read the section in the Troubleshooting POD documentation\n",
"entitled 'Perl Performance Issues on Red Hat Systems'\n",
"As this is an extremely serious condition, the only way to skip\n",
- "over this test is to --force the installation, or to edit the test\n",
+ "over this test is to --force the installation, or to look in the test\n",
"file " . __FILE__ . "\n",
);
}
+
+done_testing;