From ebe0569a9d49ddf377b795897c0311173aadd11a Mon Sep 17 00:00:00 2001 From: Carlos Salguero Date: Thu, 23 Nov 2017 10:36:09 -0300 Subject: [PATCH] Added test for binlog_format set in pt-table-checksum --- t/pt-table-checksum/pt-226.t | 77 +++++++++++++++++ t/pt-table-checksum/samples/pt-226.sql | 115 +++++++++++++++++++++++++ 2 files changed, 192 insertions(+) create mode 100644 t/pt-table-checksum/pt-226.t create mode 100644 t/pt-table-checksum/samples/pt-226.sql diff --git a/t/pt-table-checksum/pt-226.t b/t/pt-table-checksum/pt-226.t new file mode 100644 index 00000000..09eb0ae0 --- /dev/null +++ b/t/pt-table-checksum/pt-226.t @@ -0,0 +1,77 @@ +#!/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; +use SqlModes; +require "$trunk/bin/pt-table-checksum"; + +my $dp = new DSNParser(opts=>$dsn_opts); +my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp); +my $dbh = $sb->get_dbh_for('master'); + +if ( !$dbh ) { + plan skip_all => 'Cannot connect to sandbox master'; +} +else { + plan tests => 3; +} + +diag("loading samples"); +#$sb->load_file('master', 't/pt-table-checksum/samples/pt-226.sql'); +$sb->load_file('master', 't/pt-table-checksum/samples/pt-226.sql'); + +# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic +# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die. +# And --max-load "" prevents waiting for status variables. +my $master_dsn = $sb->dsn_for('master'); +diag("setting up the slaves"); +my $slave_dbh = $sb->get_dbh_for('slave1'); +# Create differences + +$slave_dbh->do('DELETE FROM `test`.`joinit` WHERE i > 90'); +$slave_dbh->do('FLUSH TABLES'); +$dbh->do('SET GLOBAL binlog_format="ROW"'); + +my @args = ($master_dsn, "--set-vars", "innodb_lock_wait_timeout=50", + "--ignore-databases", "mysql", + "--nocheck-replication-filters"); +my $output; +my $exit_status; + +# Test #1 +$output = output( + sub { $exit_status = pt_table_checksum::main(@args) }, + stderr => 1, +); + +isnt( + $exit_status, + 0, + "PT-226 SET binlog_format='STATEMENT' exit status", +); + +like( + $output, + qr/1\s+100\s+1\s+0\s+.*test.joinit/, + "PT-226 table joinit has differences", +); + +$dbh->do('SET GLOBAL binlog_format="STATEMENT"'); + +# ############################################################################# +# Done. +# ############################################################################# +$sb->wipe_clean($dbh); +ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox"); +exit; diff --git a/t/pt-table-checksum/samples/pt-226.sql b/t/pt-table-checksum/samples/pt-226.sql new file mode 100644 index 00000000..36838635 --- /dev/null +++ b/t/pt-table-checksum/samples/pt-226.sql @@ -0,0 +1,115 @@ +DROP DATABASE IF EXISTS test; +CREATE DATABASE test; + +USE test; + +CREATE TABLE `joinit` ( + `i` int(11) NOT NULL AUTO_INCREMENT, + `s` varchar(64) DEFAULT NULL, + `t` time NOT NULL, + `g` int(11) NOT NULL, + PRIMARY KEY (`i`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + + +INSERT INTO `joinit` VALUES (1,'dicta ipsa molestiae sit aut sunt nesciunt.','07:21:11',914091476), +(2,'id quia ut reprehenderit rerum.','06:08:56',1705409249), +(3,'voluptates dolore repudiandae voluptas.','15:34:36',1310715836), +(4,'aliquam error qui et rerum.','08:31:50',1640670520), +(5,'accusamus sequi eos porro pariatur possimus.','20:51:37',2011751560), +(6,NULL,'00:10:28',1657080267), +(7,'culpa porro necessitatibus recusandae recusandae.','11:03:59',1406095383), +(8,'beatae voluptatum odio.','19:47:12',1134860842), +(9,'ea soluta et occaecati facilis.','04:00:31',1777484703), +(10,NULL,'15:22:10',1933032615), +(11,NULL,'09:37:52',950391508), +(12,'ad est optio esse.','05:25:06',1947188364), +(13,'accusamus necessitatibus qui corrupti quae soluta adipisci.','21:04:30',341275526), +(14,'rem doloremque et nobis.','13:59:09',1897356779), +(15,'ab consequatur vel porro ut.','19:12:02',2131804237), +(16,'quas molestiae saepe voluptatem rerum quis.','03:41:59',1480121891), +(17,'assumenda ipsa facere et porro voluptas.','17:08:41',663551763), +(18,'est reprehenderit expedita magnam suscipit sunt et.','07:15:01',363238924), +(19,'rerum qui laudantium.','09:51:18',419864978), +(20,'ut qui temporibus vel.','08:40:00',284706965), +(21,'laboriosam ratione aliquid consectetur quidem ab assumenda qui.','15:21:45',1408072633), +(22,'at qui delectus quos sit.','12:43:10',1124985924), +(23,'doloremque odio eos accusantium praesentium officia molestiae ad','01:31:02',1874543227), +(24,'eaque suscipit ullam.','04:07:37',1442092269), +(25,'ut consectetur sit incidunt nostrum occaecati in similique.','20:12:29',1138469771), +(26,'maiores in ipsum.','12:34:46',156229088), +(27,'corporis et reiciendis velit veritatis eaque.','15:51:48',271447457), +(28,NULL,'14:48:19',1508837206), +(29,'rerum quod incidunt ut.','22:59:07',915259646), +(30,'nulla recusandae qui quisquam ut animi culpa rem dolor.','16:58:10',1648444437), +(31,'ipsa qui porro aliquam ab quisquam odio.','01:31:24',1928855257), +(32,'occaecati et officia quod unde.','23:40:12',2094599137), +(33,'molestiae ipsum animi illo incidunt sit fugiat.','20:27:01',682166125), +(34,'sed rerum tenetur ut maxime cumque et.','07:59:16',402527489), +(35,'quasi qui deleniti et quia aspernatur eum harum.','09:44:45',1875752492), +(36,'molestias deserunt sit.','04:47:40',1621124315), +(37,'ut sit dolorem praesentium voluptatem numquam vel est repellendu','04:27:29',1929299726), +(38,'nesciunt officia qui expedita officia!','14:12:17',1871749515), +(39,'molestias fugit qui quas aut quis quis.','02:20:50',133250776), +(40,'nemo voluptas nostrum quae at nesciunt aut.','05:30:16',1977544176), +(41,'neque at nemo laudantium.','18:49:09',1160495982), +(42,NULL,'01:53:15',238269571), +(43,'placeat sit magnam quasi officiis rem.','01:32:17',2050374349), +(44,'harum magnam repellendus natus molestias.','02:31:36',266881561), +(45,'corrupti optio aliquid et eum.','11:27:58',1057706898), +(46,'et aut a at alias quod.','20:27:16',1803439254), +(47,'eum enim voluptatem fugit ipsam iure.','10:00:56',465971914), +(48,'sapiente quis nemo est aperiam corporis exercitationem velit.','03:55:59',1754471891), +(49,'consequuntur aspernatur fugiat est sit autem est.','22:25:20',454377625), +(50,'aut sed consequatur amet.','21:59:00',1580210933), +(51,'autem eius delectus autem ut.','05:42:06',694812007), +(52,'magnam nisi ipsum sit quae reprehenderit eius.','10:57:48',1705595462), +(53,'qui sit ut est voluptatibus earum.','08:43:27',1756643709), +(54,'dolore enim at eum deserunt excepturi omnis!','15:32:25',1793291857), +(55,'nesciunt perferendis omnis quia perspiciatis.','00:53:16',439848412), +(56,'voluptas laboriosam commodi inventore.','12:17:27',502769231), +(57,'non nihil inventore qui.','12:23:29',2010474512), +(58,NULL,'07:59:58',195539887), +(59,NULL,'01:03:13',185293657), +(60,'sunt et perferendis.','01:41:52',593397986), +(61,'qui nemo magni explicabo iure corrupti exercitationem quas!','13:12:36',158590428), +(62,'fugiat optio omnis quisquam.','15:34:07',249619147), +(63,'suscipit dicta incidunt eaque vel officia.','00:12:54',884057050), +(64,'at qui reprehenderit quod est optio.','11:44:52',1888470232), +(65,NULL,'17:28:01',1631026724), +(66,'eius sunt omnis quibusdam autem ut.','08:24:17',91435374), +(67,'doloremque cum cupiditate dolorem omnis.','06:29:20',1151045825), +(68,'iure facilis qui illum aliquam sed asperiores sed!','11:18:27',86548934), +(69,'eos nisi ipsam molestiae ut.','03:13:29',1033200673), +(70,'ex sint aut et cumque et facilis et amet!','01:45:19',1258514903), +(71,'nihil sit assumenda voluptatibus explicabo!','21:36:39',185971679), +(72,'amet vero perferendis atque.','12:01:35',2040594002), +(73,'earum molestiae asperiores ut.','19:18:16',1165023000), +(74,'consequatur rerum similique quasi.','14:44:12',713361001), +(75,'pariatur voluptatibus omnis ipsum iure sint veritatis at cupidit','18:06:16',1550033064), +(76,'exercitationem maxime dolor totam velit sit provident.','15:33:33',979765860), +(77,'sed reiciendis aut id adipisci error!','05:17:42',542662142), +(78,'eaque quod distinctio nihil iste qui aspernatur et accusantium.','10:35:44',1134356103), +(79,'molestias deleniti deleniti perspiciatis.','19:16:57',1360205808), +(80,'architecto enim nulla.','09:28:24',531569080), +(81,'porro aut at quisquam commodi vel molestias.','22:49:27',1154086856), +(82,'libero in et in mollitia.','08:35:21',1945863708), +(83,'voluptates sequi ut enim in fuga debitis.','09:11:07',1987718992), +(84,'voluptatum neque voluptates minus.','21:44:27',1928647112), +(85,'maxime similique consectetur.','14:01:49',1808357109), +(86,'nesciunt aspernatur et mollitia aut labore.','00:48:27',1645832522), +(87,'alias quasi ut eveniet vero necessitatibus velit nesciunt nam!','18:22:59',740680075), +(88,'et totam est voluptas odit rem illum saepe.','02:35:28',980905093), +(89,'porro cupiditate assumenda et non magni deserunt qui repellendus','04:18:30',1965305195), +(90,'vitae quis ullam eos in debitis laudantium!','22:39:14',535565611), +(91,'quo consequatur expedita.','12:33:03',1037848256), +(92,'ipsum at ea consequatur tempore natus!','12:40:38',1216234763), +(93,'numquam repellendus modi culpa corporis aut.','07:46:22',984113837), +(94,'minima in sed modi maxime est iusto.','20:48:55',1026183968), +(95,NULL,'10:48:23',1418133890), +(96,'nesciunt similique fugiat quae repudiandae et eveniet.','17:44:07',583744287), +(97,'libero voluptatibus quibusdam.','09:09:23',1292950444), +(98,'id quasi distinctio molestiae eaque exercitationem id.','18:17:07',625537546), +(99,'veritatis ab quibusdam omnis eum dolor quasi doloremque quia.','02:10:52',1042143012), +(100,'vel accusamus nisi praesentium et.','04:15:54',661815870); +