github.com/greenplum-db/gpbackup@v0.0.0-20240517212602-89daab1885b3/ci/scripts/gprestore-regression.bash (about)

     1  #!/bin/bash
     2  
     3  set -ex
     4  
     5  ccp_src/scripts/setup_ssh_to_cluster.sh
     6  cp -r backup_artifact_resource/* /tmp
     7  cp -r regression_dump/* /tmp
     8  
     9  pushd /tmp
    10    tar -zxf gpbackup_all.tar.gz
    11    scp gpbackup_allsegments/gpbackup_cdw.tar.gz cdw:/tmp
    12    scp gpbackup_allsegments/gpbackup_sdw1.tar.gz sdw1:/tmp
    13  popd
    14  ssh -t sdw1 'pushd /tmp ; tar -xzf gpbackup_sdw1.tar.gz ; popd'
    15  ssh -t cdw 'pushd /tmp ; tar -xzf gpbackup_cdw.tar.gz ; popd'
    16  
    17  # restore the backedup data to a new cluster and generate a pg_dump.
    18  # do not fail here because might be possible for gpbackup to fail but still produce the same dump diff
    19  scp gpbackup/ci/scripts/gprestore_and_dump.bash cdw:/home/gpadmin/gprestore_and_dump.bash
    20  set +e
    21    ssh -t cdw "bash /home/gpadmin/gprestore_and_dump.bash"
    22  set -e
    23  
    24  scp cdw:/tmp/post_regression_dump.sql.xz /tmp/
    25  
    26  # Compare sqldump resource and the pg_dump that was newly generated
    27  
    28  xz -d /tmp/regression_dump.sql.xz
    29  xz -d /tmp/post_regression_dump.sql.xz
    30  set +e
    31    diff -u /tmp/regression_dump.sql /tmp/post_regression_dump.sql > /tmp/diff.txt
    32  set -e
    33  
    34  # Because there are known, trivial differences between pg_dump and
    35  # gpbackup, this diff will be non-zero, as described in
    36  # README_regression.md.
    37  # Therefore, we compare this diff with a frozen version,
    38  # expecting no significant changes. First, however, we need to cut off
    39  # headers/footers which may contain timestamps
    40  FROZEN_DIFF=gpbackup/ci/regression/diff.txt
    41  tail -n+4 /tmp/diff.txt | grep -v "@@ .* @@" > /tmp/diff_no_header.txt
    42  tail -n+4 ${FROZEN_DIFF}  | grep -v "@@ .* @@" > /tmp/existing_diff_no_header.txt
    43  
    44  # here is any real difference:
    45  set +e
    46    diff /tmp/diff_no_header.txt /tmp/existing_diff_no_header.txt
    47    result=$?
    48  set -e
    49  
    50  if [[ ${result} -ne 0 ]] ; then
    51    echo "#####################################"
    52    echo "beginning of differences:"
    53    cat /tmp/diff.txt | head -200
    54    echo "\n...\n"
    55    echo "#####################################"
    56    exit 1
    57  fi