source include/have_ndb.inc;

--echo Verify that one can run ndb_print_backup_file on all saved backup files
--echo without errors.
--echo That should cover most kinds of backup files, and both newer and older
--echo formats.

--perl
use strict;
use lib "lib/";
use My::Find;
use File::Basename;
use File::Find;
use locale ':not_characters';

my $mysql_test_dir = $ENV{MYSQL_TEST_DIR} or die "Need MYSQL_TEST_DIR";
my $basedir = dirname($mysql_test_dir);

# In the RPM case, binaries and libraries are installed in the
# default system locations, instead of having our own private base
# directory. And we install "usr/share/mysql-test". Moving up two
# more directory relative to "mysql-test" gives us a usable base
# directory for RPM installs.
if (! -d "$basedir/sql" and ! -d "$basedir/bin" )
{
  $basedir= dirname($basedir);
}
my $bindir = $ENV{MTR_BINDIR} || $basedir; # Out of source set MTR_BINDIR

my $NDB_PRINT_BACKUP_FILE =  my_find_bin($bindir,
                                         ["runtime_output_directory", "bin"],
                                         "ndb_print_backup_file");

# Directory containing backups from earlier versions of NDB
my $NDB_SAVED_BACKUPS = "$ENV{MYSQL_TEST_DIR}/suite/ndb/backups";

sub sorted
{
  sort(@_);
}

sub process
{
  return unless -f;
  print "ndb_print_backup_file " .
        "suite/ndb/backups" .
          substr($File::Find::name, length($NDB_SAVED_BACKUPS)) .
        "\n";

  my $output;
  open(my $fh, '-|', "$NDB_PRINT_BACKUP_FILE ${File::Find::name}")
    or die("Unable to open $File::Find::name: $!\n");
  {
    local $/;
    $output = <$fh>;
  }
  close($fh) or die("Unable to close $File::Find::name: $!\n");

  if (!defined($output))
  {
    die "Failed running: $NDB_PRINT_BACKUP_FILE $File::Find::name";
  }
  # hide difference in reported byte order
  $output =~ s/ByteOrder: 0x\d{8}/ByteOrder: 0xXXXXXXXX/m;
  # make sure lines ends with LF
  $output =~ s/\r[\n]?/\n/gm;
  print length($output) . " bytes in output\n";
}

find({ wanted => \&process, preprocess => \&sorted }, $NDB_SAVED_BACKUPS);

EOF
