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