From ecf43e2a173c9fd3438ddedc56bfceb9ec2b9554 Mon Sep 17 00:00:00 2001 From: Carlos Salguero Date: Thu, 29 Jul 2021 12:15:53 -0300 Subject: [PATCH] PT-1985 pt-deadlock db schema check (#502) --- bin/pt-deadlock-logger | 3 ++ t/lib/.VersionCheck.t.swp | Bin 16384 -> 0 bytes t/pt-deadlock-logger/check_schema_exists.t | 37 +++++++++++++++++++++ 3 files changed, 40 insertions(+) delete mode 100644 t/lib/.VersionCheck.t.swp create mode 100644 t/pt-deadlock-logger/check_schema_exists.t diff --git a/bin/pt-deadlock-logger b/bin/pt-deadlock-logger index 0050418a..f0fe5fbf 100755 --- a/bin/pt-deadlock-logger +++ b/bin/pt-deadlock-logger @@ -4675,6 +4675,9 @@ sub main { $sql =~ s/deadlocks/IF NOT EXISTS $db_tbl/; PTDEBUG && _d($sql); $dst->dbh->do($sql); + if ( $EVAL_ERROR ) { + _die("Cannot connect to MySQL: $EVAL_ERROR", 1); + } } } diff --git a/t/lib/.VersionCheck.t.swp b/t/lib/.VersionCheck.t.swp deleted file mode 100644 index e2422d98de6a28c8e0162946d42365d691662b89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 diff --git a/t/pt-deadlock-logger/check_schema_exists.t b/t/pt-deadlock-logger/check_schema_exists.t new file mode 100644 index 00000000..54045396 --- /dev/null +++ b/t/pt-deadlock-logger/check_schema_exists.t @@ -0,0 +1,37 @@ +#!/usr/bin/env perl + +BEGIN { + die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n" + unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH}; + unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib"; +}; + +use strict; +use warnings FATAL => 'all'; +use English qw(-no_match_vars); +use Test::More; + +use PerconaTest; +use Sandbox; +require "$trunk/bin/pt-deadlock-logger"; + +my $dp = new DSNParser(opts=>$dsn_opts); +my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp); +my $dbh = $sb->get_dbh_for('master'); + +my ($output, $exist_status) = full_output( + sub { + pt_deadlock_logger::main( + "h=127.1,D=non_existent_db,u=msandbox,p=msandbox", + qw(--clear-deadlocks non_existent_db.make_deadlock --port 12345), + qw(--iterations 1) + ) + } +); + +# ############################################################################# +# Done. +# ############################################################################# +$sb->wipe_clean($dbh); +ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); +done_testing;