Uploaded image for project: 'Percona Toolkit'
  1. Percona Toolkit
  2. PT-2138

Fix tests for pt-table-checksum

Details

    • Improvement
    • Status: Done
    • Medium
    • Resolution: Fixed
    • 3.5.0
    • 3.5.1
    • pt-table-checksum
    • None
    • Yes
    • Yes
    • 40

    Description

      How to Repeat

      $ prove -vw --trap --timer t/pt-table-checksum/
      [20:14:42] t/pt-table-checksum/basics.t .................. 
      1..40
      not ok 1 - Default checksum
      
      #   Failed test 'Default checksum'
      #   at t/pt-table-checksum/basics.t line 75.
      ok 2 - Between 25 and 60 chunks
      not ok 3 - Static chunk size (--chunk-time 0)
      
      #   Failed test 'Static chunk size (--chunk-time 0)'
      #   at t/pt-table-checksum/basics.t line 101.
      ok 4 - Between 75 and 90 chunks on master
      ok 5 - ... same number of chunks on slave
      Checking if all tables can be checksummed ...
      Starting checksum ...
                  TS ERRORS  DIFFS     ROWS  DIFF_ROWS  CHUNKS SKIPPED    TIME TABLE
      12-20T20:15:39      0      1      600          0     602       0  22.358 sakila.city
      ok 6 - --replicate-check on by default, detects diff
      Checking if all tables can be checksummed ...
      Starting checksum ...
      ok 7 - --no-replicate-check, no diff detected
      Checking if all tables can be checksummed ...
      Starting checksum ...
      Checking if all tables can be checksummed ...
      Starting checksum ...
      ok 8 - --emptry-replicate-table on by default
      Checking if all tables can be checksummed ...
      Starting checksum ...
      ok 9 - --no-recheck (just --replicate-check)
      ok 10 - Detects infinite loop
      ok 11 - Upper boundary same as next lower boundary
      ok 12 - Skipped oversize chunks
      ok 13 - Oversize chunks are not errors
      ok 14 - Skipped chunk 2
      ok 15 - Skipped 1 chunk (bug 1011738)
      ok 16 - Warns about skipping large slave table
      ok 17 - Does not checksum large slave table on master
      ok 18 - Does not checksum large slave table on slave
      ok 19 - Non-zero exit status
      ok 20 - 0 skipped
      ok 21 - 0 errors
      ok 22 - 52 rows checksummed
      ok 23 - --chunk-size-limit=0 does not disable \#-of-rows checks on slaves
      ok 24 - Warns when no slave are found (bug 1087804)
      ok 25 - Exit status 8 when no slaves are found (bug 1087804)
      ok 26 - --where in checksum chunk query
      ok 27 - --where in past lower chunk query
      ok 28 - --where in past upper chunk query
      ok 29 - --where in next chunk boundary query
      ok 30 - --where for first chunk
      ok 31 - --where for last chunk
      ok 32 - --where for lower oob chunk
      ok 33 - --where for upper oob chunk
      ok 34 - Bug 932442: 0 exit
      ok 35 - Bug 932442: 0 errors
      ok 36 - Bug 821675 (dot): queries
      ok 37 - Bug 821675 (dot): 0 exit
      ok 38 - Bug 821675 (dot): 0 errors
      Checking if all tables can be checksummed ...
      Starting checksum ...
      ok 39 - sql_mode ONLY_FULL_GROUP_BY is overidden
      ok 40 - Sandbox servers
      # Looks like you failed 2 tests of 40.
      Dubious, test returned 2 (wstat 512, 0x200)
      Failed 2/40 subtests 
      [20:16:32] t/pt-table-checksum/bugs.t .................... 
      ok 1 - Bug 995274 (undef array): zero exit status
      ok 2 - Bug 995274 (undef array): checksummed rows
      ok 3 - Bug 987393 (empty table): zero exit status
      ok 4 - Bug 987393 (empty table): no errors
      ok 5 - Bug 987393 (empty table): checksums
      ok 6 - Bug 987393 (Perl 5.8 scoping): no errors
      not ok 7 - Bug 987393 (Perl 5.8 scoping): checksummed table
      
      #   Failed test 'Bug 987393 (Perl 5.8 scoping): checksummed table'
      #   at t/pt-table-checksum/bugs.t line 2281.
      #          got: '0'
      #     expected: '109'
      ok 8 - Bug 1030031 (wrong DIFFS): 2 diffs
      ok 9 - Bug 1030031 (wrong DIFFS): 3 diffs
      ok 10 - Bug 1074179: ignore-tables-regex works with --replicate-check-only
      ok 11 - Bug 1016131: ptc should skip tables where all columns are excluded
      ok 12 - --skip-check-slave-lag
      ok 13 - Bugs 1075638 and 1050737: No division by zero error when nibble_time is zero
      ok 14 - Bug 1075638 and 1050737: ...And we get the correct number of diffs
      # Creating default databases ...
      # Starting MySQL test server on port 12348... return 0
      # OK (3s)
      # Creating default databases ...
      # Starting MySQL test server on port 12349... return 0
      # OK (2s)
      ok 15 - Bug 938068: doesn't warn if binlog_format=row or mixed on slaves
      ok 16 - ...and warns for both level 1 and level 2 slaves
      # Stopping MySQL test server on port 12349... OK (4s)
      # Stopping MySQL test server on port 12348... OK (2s)
      ok 17 - Bug 1210537: no crash with --recursion-method cluster
      ok 18 - Bug 1210537: tool ran
      ok 19 - Bug 1388870 - No false positive reported when system_tz differ on slave
      ok 20 - Sandbox servers
      1..20
      ok 6 - Bug 987393 (Perl 5.8 scoping): no errors
      not ok 7 - Bug 987393 (Perl 5.8 scoping): checksummed table
      
      #   Failed test 'Bug 987393 (Perl 5.8 scoping): checksummed table'
      #   at t/pt-table-checksum/bugs.t line 2281.
      #          got: '0'
      #     expected: '109'
      DBD::mysql::db do failed: Lost connection to MySQL server during query [for Statement "UPDATE test.t SET c='' WHERE id=5"] at t/pt-table-checksum/bugs.t line 2295.
      # Tests were run but no plan was declared and done_testing() was not seen.
      # Looks like your test exited with 255 just after 7.
      Dubious, test returned 255 (wstat 65280, 0xff00)
      Failed 1/20 subtests 
      [20:18:52] t/pt-table-checksum/char_chunking.t ........... 
      1..6
      ok 1 - Char chunk ascii, explain
      ok 2 - Char chunk ascii, chunk size 20
      ok 3 - First boundaries
      ok 4 - Lower oob boundary
      ok 5 - Upper oob boundary
      ok 6 - Sandbox servers
      ok     7206 ms ( 0.01 usr  0.00 sys +  0.90 cusr  0.49 csys =  1.40 CPU)
      [20:18:59] t/pt-table-checksum/chunk_index.t ............. 
      1..14
      ok 1 - Chooses chunk index by default
      ok 2 - Chooses chunk index if --chunk-index doesn't exist
      ok 3 - Use --chunk-index
      ok 4 - Chunks on left-most --chunk-index column
      ok 5 - Explicit --chunk-index overrides MySQL's index for --where
      ok 6 - Zero exit status (bug 925855)
      ok 7 - 0 skipped (bug 925855)
      ok 8 - 0 errors (bug 925855)
      ok 9 - 14 rows checksummed (bug 925855)
      ok 10 - Smarter chunk index selection (bug 978432)
      ok 11 - --chunk-index-columns
      ok 12 - --chunk-index-columns > number of index columns
      ok 13 - Initial key_len reflects --chunk-index-columns
      ok 14 - Sandbox servers
      ok     5965 ms ( 0.00 usr  0.00 sys +  0.98 cusr  0.46 csys =  1.44 CPU)
      [20:19:05] t/pt-table-checksum/chunk_size.t .............. 
      1..8
      Checking if all tables can be checksummed ...
      Starting checksum ...
      ok 1 - First chunk is default size
      ok 2 - 2nd chunk lower boundary
      ok 3 - 2nd chunk is larger
      Checking if all tables can be checksummed ...
      Starting checksum ...
      ok 4 - Explicit --chunk-size disables auto chunk sizing
      ok 5 # skip Too slow
      DBD::mysql::db do failed: LOAD DATA LOCAL INFILE file request rejected due to restrictions on access. [for Statement "LOAD DATA LOCAL INFILE '/home/sveta/src/percona-toolkit/t/pt-table-checksum/samples/600cities.data' INTO TABLE test.t"] at t/pt-table-checksum/chunk_size.t line 114.
      # Looks like your test exited with 255 just after 5.
      Dubious, test returned 255 (wstat 65280, 0xff00)
      Failed 3/8 subtests 
      	(less 1 skipped subtest: 4 okay)
      [20:19:08] t/pt-table-checksum/create_replicate_table.t .. 
      1..5
      Unknown option: no-create-replicate-table
      Usage: pt-table-checksum [OPTIONS] [DSN]
      
      Errors in command-line arguments:
        * Error parsing options
      
      pt-table-checksum performs an online replication consistency check by executing
      checksum queries on the master, which produces different results on replicas
      that are inconsistent with the master.  The optional DSN specifies the master
      host.  The tool's L<"EXIT STATUS"> is non-zero if any differences are found, or
      if any warnings or errors occur.  For more details, please use the --help
      option, or try 'perldoc t/pt-table-checksum/create_replicate_table.t' for
      complete documentation.
      # Looks like your test exited with 1 before it could output anything.
      Dubious, test returned 1 (wstat 256, 0x100)
      Failed 5/5 subtests 
      [20:19:09] t/pt-table-checksum/error_handling.t .......... 
      1..0 # SKIP TODO master master sandbox is failing with MySQL 8.0+. FIX ME !!!!
      skipped: TODO master master sandbox is failing with MySQL 8.0+. FIX ME !!!!
      [20:19:09] t/pt-table-checksum/filters.t ................. 
      1..9
      ok 1 - --databases sakila
      ok 2 - --tables actor
      ok 3 - --tables sakila.actor
      ok 4 - --tables actor,film
      ok 5 - --tables sakila.actor,mysql.user
      ok 6 - -d sakila --engines MyISAM
      ok 7 - -d sakila --engines myisam
      ok 8 - --databases sakila --ignore-tables sakila.actor,sakila.address,category,city,payment
      ok 9 - Sandbox servers
      ok     1572 ms ( 0.01 usr  0.00 sys +  0.50 cusr  0.24 csys =  0.75 CPU)
      [20:19:10] t/pt-table-checksum/float_precision.t ......... 
      1..7
      ok 1 - Got output
      ok 2 - No --float-precision, no rounding
      ok 3 - Got output
      ok 4 - Column a is rounded
      ok 5 - Column b is rounded
      ok 6 - Column b is not rounded inside ISNULL
      ok 7 - Sandbox servers
      ok     3126 ms ( 0.00 usr  0.00 sys +  0.36 cusr  0.17 csys =  0.53 CPU)
      [20:19:14] t/pt-table-checksum/fnv_64.t .................. 
      1..0 # SKIP No FNV_64 UDF lib
      skipped: No FNV_64 UDF lib
      [20:19:14] t/pt-table-checksum/ignore_columns.t .......... 
      1..4
      ok 1 - Diff when column not ignored
      ok 2 - No diff when column ignored
      ok 3 - Ignored column is not in checksum query
      ok 4 - Sandbox servers
      ok     3125 ms ( 0.00 usr  0.00 sys +  0.39 cusr  0.20 csys =  0.59 CPU)
      [20:19:17] t/pt-table-checksum/issue_1485195.t ........... 
      1..2
      not ok 1 - Large BLOB/TEXT/BINARY Checksum
      
      #   Failed test 'Large BLOB/TEXT/BINARY Checksum'
      #   at t/pt-table-checksum/issue_1485195.t line 43.
      #          got: '31'
      #     expected: '29'
      ok 2 - Sandbox servers
      # Looks like you failed 1 test of 2.
      Dubious, test returned 1 (wstat 256, 0x100)
      Failed 1/2 subtests 
      [20:19:20] t/pt-table-checksum/issue_1592608.t ........... 
      1..2
      ok 1 - Large BLOB/TEXT/BINARY Checksum
      ok 2 - Sandbox servers
      ok     4336 ms ( 0.00 usr  0.00 sys +  0.37 cusr  0.16 csys =  0.53 CPU)
      [20:19:25] t/pt-table-checksum/issue_1651002.t ........... 
      1..2
      ok 1 - Large BLOB/TEXT/BINARY Checksum
      # Stopping the sandbox to leave a clean sandbox for the next test file
      ok 2 - Sandbox servers
      ok     3809 ms ( 0.00 usr  0.00 sys +  0.50 cusr  0.30 csys =  0.80 CPU)
      [20:19:28] t/pt-table-checksum/issue_388.t ............... 
      1..3
      ok 1 - No error (issue 388)
      ok 2 - Checksums the table (issue 388)
      ok 3 - Sandbox servers
      ok     2313 ms ( 0.00 usr  0.00 sys +  0.40 cusr  0.13 csys =  0.53 CPU)
      [20:19:31] t/pt-table-checksum/issue_47.t ................ 
      1..3
      Checking if all tables can be checksummed ...
      Starting checksum ...
      12-20T20:19:32 Skipping chunk 5 of test.issue_47 because MySQL chose no index  instead of the idxindex.
      not ok 1 - No error nibbling very large int
      
      #   Failed test 'No error nibbling very large int'
      #   at t/pt-table-checksum/issue_47.t line 50.
      #          got: '32'
      #     expected: '0'
      not ok 2 - Uses very large int as chunk boundary
      
      #   Failed test 'Uses very large int as chunk boundary'
      #   at t/pt-table-checksum/issue_47.t line 57.
      #     Structures begin differing at:
      #          $got->[4] = Does not exist
      #     $expected->[4] = ARRAY(0x55b2d2826948)
      ok 3 - Sandbox servers
      # Looks like you failed 2 tests of 3.
      Dubious, test returned 2 (wstat 512, 0x200)
      Failed 2/3 subtests 
      [20:19:33] t/pt-table-checksum/issue_602.t ............... 
      1..2
      ok 1 - Checksums table despite invalid datetime
      ok 2 - Sandbox servers
      ok     3027 ms ( 0.00 usr  0.00 sys +  0.34 cusr  0.17 csys =  0.51 CPU)
      [20:19:36] t/pt-table-checksum/option_sanity.t ........... Can't exec "/home/sveta/src/percona-toolkit/bin/pt-table-checksum": Permission denied at t/pt-table-checksum/option_sanity.t line 28.
      
      not ok 1 - Default --check-replication-filters=TRUE
      
      #   Failed test 'Default --check-replication-filters=TRUE'
      #   at t/pt-table-checksum/option_sanity.t line 30.
      #                   ''
      #     doesn't match '(?^m:^  --check-replication-filters\s+TRUE$)'
      not ok 2 - Default --create-replicate-table=TRUE
      
      #   Failed test 'Default --create-replicate-table=TRUE'
      #   at t/pt-table-checksum/option_sanity.t line 36.
      #                   ''
      #     doesn't match '(?^m:^  --create-replicate-table\s+TRUE$)'
      not ok 3 - Default --empty-replicate-table=TRUE
      
      #   Failed test 'Default --empty-replicate-table=TRUE'
      #   at t/pt-table-checksum/option_sanity.t line 42.
      #                   ''
      #     doesn't match '(?^m:^  --empty-replicate-table\s+TRUE$)'
      not ok 4 - Default --explain=0
      
      #   Failed test 'Default --explain=0'
      #   at t/pt-table-checksum/option_sanity.t line 48.
      #                   ''
      #     doesn't match '(?^m:^  --explain\s+0$)'
      not ok 5 - Default --host=localhost
      
      #   Failed test 'Default --host=localhost'
      #   at t/pt-table-checksum/option_sanity.t line 54.
      #                   ''
      #     doesn't match '(?^m:^  --host\s+localhost$)'
      not ok 6 - Default --max-lag=1
      
      #   Failed test 'Default --max-lag=1'
      #   at t/pt-table-checksum/option_sanity.t line 66.
      #                   ''
      #     doesn't match '(?^m:^  --max-lag\s+1$)'
      not ok 7 - Default --quiet=0
      
      #   Failed test 'Default --quiet=0'
      #   at t/pt-table-checksum/option_sanity.t line 72.
      #                   ''
      #     doesn't match '(?^m:^  --quiet\s+0$)'
      not ok 8 - Default --replicate-check-only=FALSE
      
      #   Failed test 'Default --replicate-check-only=FALSE'
      #   at t/pt-table-checksum/option_sanity.t line 78.
      #                   ''
      #     doesn't match '(?^m:^  --replicate-check-only\s+FALSE$)'
      not ok 9 - Default --replicate=percona.checksums
      
      #   Failed test 'Default --replicate=percona.checksums'
      #   at t/pt-table-checksum/option_sanity.t line 84.
      #                   ''
      #     doesn't match '(?^m:^  --replicate\s+percona\.checksums$)'
      not ok 10 - Default --replicate-check=TRUE
      
      #   Failed test 'Default --replicate-check=TRUE'
      #   at t/pt-table-checksum/option_sanity.t line 90.
      #                   ''
      #     doesn't match '(?^m:^  --replicate-check\s+TRUE$)'
      not ok 11 - --recursion-method is an array
      
      #   Failed test '--recursion-method is an array'
      #   at t/pt-table-checksum/option_sanity.t line 96.
      #                   ''
      #     doesn't match '(?^m:^\s+--recursion-method=a)'
      not ok 12 - Default --recursion-method is processlist,hosts
      
      #   Failed test 'Default --recursion-method is processlist,hosts'
      #   at t/pt-table-checksum/option_sanity.t line 102.
      #                   ''
      #     doesn't match '(?^m:^\s+--recursion-method\s+processlist,hosts)'
      Can't exec "/home/sveta/src/percona-toolkit/bin/pt-table-checksum": Permission denied at t/pt-table-checksum/option_sanity.t line 111.
      not ok 13 - --explain disables --empty-replicate-table
      
      #   Failed test '--explain disables --empty-replicate-table'
      #   at t/pt-table-checksum/option_sanity.t line 112.
      #                   ''
      #     doesn't match '(?^m:^  --empty-replicate-table\s+FALSE$)'
      Can't exec "/home/sveta/src/percona-toolkit/bin/pt-table-checksum": Permission denied at t/pt-table-checksum/option_sanity.t line 118.
      not ok 14 - --resume disables --empty-replicate-table
      
      #   Failed test '--resume disables --empty-replicate-table'
      #   at t/pt-table-checksum/option_sanity.t line 119.
      #                   ''
      #     doesn't match '(?^m:^  --empty-replicate-table\s+FALSE$)'
      Can't exec "/home/sveta/src/percona-toolkit/bin/pt-table-checksum": Permission denied at t/pt-table-checksum/option_sanity.t line 125.
      not ok 15 - --quiet disables --progress
      
      #   Failed test '--quiet disables --progress'
      #   at t/pt-table-checksum/option_sanity.t line 126.
      #                   ''
      #     doesn't match '(?^m:^  --progress\s+\(No value\)$)'
      Can't exec "/home/sveta/src/percona-toolkit/bin/pt-table-checksum": Permission denied at t/pt-table-checksum/option_sanity.t line 132.
      not ok 16 - --chunk-size sets --chunk-time=0
      
      #   Failed test '--chunk-size sets --chunk-time=0'
      #   at t/pt-table-checksum/option_sanity.t line 133.
      #                   ''
      #     doesn't match '(?^m:^  --chunk-time\s+0$)'
      Can't exec "/home/sveta/src/percona-toolkit/bin/pt-table-checksum": Permission denied at t/pt-table-checksum/option_sanity.t line 142.
      not ok 17 - Only one DSN allowed on the command line
      
      #   Failed test 'Only one DSN allowed on the command line'
      #   at t/pt-table-checksum/option_sanity.t line 143.
      #                   ''
      #     doesn't match '(?^:More than one host specified; only one allowed)'
      Can't exec "/home/sveta/src/percona-toolkit/bin/pt-table-checksum": Permission denied at t/pt-table-checksum/option_sanity.t line 152.
      not ok 18 - --replicate table must be database-qualified
      
      #   Failed test '--replicate table must be database-qualified'
      #   at t/pt-table-checksum/option_sanity.t line 153.
      #                   ''
      #     doesn't match '(?^:--replicate table must be database-qualified)'
      Can't exec "/home/sveta/src/percona-toolkit/bin/pt-table-checksum": Permission denied at t/pt-table-checksum/option_sanity.t line 162.
      not ok 19 - --chunk-size-limit must be >= 1 or 0
      
      #   Failed test '--chunk-size-limit must be >= 1 or 0'
      #   at t/pt-table-checksum/option_sanity.t line 163.
      #                   ''
      #     doesn't match '(?^:chunk-size-limit must be >= 1 or 0 to disable)'
      Can't exec "/home/sveta/src/percona-toolkit/bin/pt-table-checksum": Permission denied at t/pt-table-checksum/option_sanity.t line 173.
      not ok 20 - Validates --max-load
      
      #   Failed test 'Validates --max-load'
      #   at t/pt-table-checksum/option_sanity.t line 174.
      #                   ''
      #     doesn't match '(?^:Invalid --max-load)'
      1..20
      # Looks like you failed 20 tests of 20.
      Dubious, test returned 20 (wstat 5120, 0x1400)
      Failed 20/20 subtests 
      [20:19:36] t/pt-table-checksum/plugin.t .................. 
      ok 1 - Called all plugins on basic run
      ok 2 - Called all plugins on replicate-check run
      ok 3 - Sandbox servers
      1..3
      ok     2308 ms ( 0.00 usr  0.00 sys +  0.41 cusr  0.16 csys =  0.57 CPU)
      [20:19:39] t/pt-table-checksum/privs.t ................... 
      ok 1 - Error if percona db doesn't exist and user can't create it
      # Tests were run but no plan was declared and done_testing() was not seen.
      # Looks like your test exited with 1 just after 1.
      Dubious, test returned 1 (wstat 256, 0x100)
      All 1 subtests passed 
      [20:19:39] t/pt-table-checksum/progress.t ................ 
      1..5
      ok 1 - --progress for slave lag
      ok 2 - Checksumming continues after waiting for slave lag
      ok 3 - No errors after waiting for slave lag
      ok 4 - --progress for --replicate table (bug 1008778)
      ERROR: Tables are different on master: mysql.db
      ERROR: Tables are different on slave1: mysql.db
      ERROR: Tables are different on slave2: mysql.db
      not ok 5 - Sandbox servers
      
      #   Failed test 'Sandbox servers'
      #   at t/pt-table-checksum/progress.t line 146.
      Bailout called.  Further testing stopped:  t/pt-table-checksum/progress.t broke the sandbox
      Bail out!  t/pt-table-checksum/progress.t broke the sandbox
      FAILED--Further testing stopped: t/pt-table-checksum/progress.t broke the sandbox
      

      Suggested Fix

      Identify which tests fail, because badly written and which show real issues with code, fix either tests or code.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              sveta.smirnova Sveta Smirnova
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Smart Checklist