2023-11-16 00:02:43 -05:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2023-12-11 20:04:15 -05:00
|
|
|
# Description: Compare the current evaluation metrics to the previoud evaluation metrics and exit
|
|
|
|
# with an error if they are different. If the environment variable OVERWRITE_FIXTURES
|
2023-11-16 00:02:43 -05:00
|
|
|
# is not "false", then this script will instead copy the output files to the expected
|
|
|
|
# output directory.
|
|
|
|
#
|
|
|
|
# Environment Variables:
|
|
|
|
# - OVERWRITE_FIXTURES: Controls whether to overwrite fixtures or not. default: "false"
|
|
|
|
|
2023-11-22 16:30:16 -05:00
|
|
|
set +e
|
2023-11-16 00:02:43 -05:00
|
|
|
|
|
|
|
SCRIPT_DIR=$(dirname "$(realpath "$0")")
|
|
|
|
OVERWRITE_FIXTURES=${OVERWRITE_FIXTURES:-false}
|
|
|
|
TMP_DIRECTORY_CLEANUP=${TMP_DIRECTORY_CLEANUP:-true}
|
2023-11-21 15:04:30 -05:00
|
|
|
EVAL_NAME=$1
|
2023-11-16 00:02:43 -05:00
|
|
|
OUTPUT_ROOT=${OUTPUT_ROOT:-$SCRIPT_DIR}
|
2023-12-11 20:04:15 -05:00
|
|
|
# TMP_METRICS_LATEST_RUN_DIR could be test_unstructured_ingest/metrics-tmp/text-extraction
|
|
|
|
# or test_unstructured_ingest/metrics-tmp/element-type
|
2023-11-21 15:04:30 -05:00
|
|
|
TMP_METRICS_LATEST_RUN_DIR=$OUTPUT_ROOT/metrics-tmp/$EVAL_NAME
|
2023-12-11 20:04:15 -05:00
|
|
|
# METRICS_DIR could be test_unstructured_ingest/metrics/text-extraction
|
|
|
|
# or test_unstructured_ingest/metrics/element-type
|
2023-11-21 15:04:30 -05:00
|
|
|
METRICS_DIR=$OUTPUT_ROOT/metrics/$EVAL_NAME
|
2023-11-16 00:02:43 -05:00
|
|
|
|
|
|
|
# shellcheck disable=SC1091
|
|
|
|
source "$SCRIPT_DIR"/cleanup.sh
|
|
|
|
|
|
|
|
function cleanup() {
|
2023-12-18 23:48:21 -08:00
|
|
|
if [ "$TMP_DIRECTORY_CLEANUP" == "true" ]; then
|
|
|
|
cleanup_dir "$TMP_METRICS_LATEST_RUN_DIR"
|
|
|
|
else
|
|
|
|
echo "skipping tmp directory cleanup"
|
|
|
|
fi
|
2023-11-16 00:02:43 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
trap cleanup EXIT
|
|
|
|
|
2023-11-25 10:46:05 -05:00
|
|
|
function check_output_folder() {
|
2023-12-18 23:48:21 -08:00
|
|
|
if [ ! -d "$TMP_METRICS_LATEST_RUN_DIR" ]; then
|
|
|
|
# there is no evaluation output to perform action
|
|
|
|
exit 0
|
|
|
|
fi
|
2023-11-25 10:46:05 -05:00
|
|
|
}
|
|
|
|
|
2023-11-16 00:02:43 -05:00
|
|
|
# to update ingest test fixtures, run scripts/ingest-test-fixtures-update.sh on x86_64
|
|
|
|
if [ "$OVERWRITE_FIXTURES" != "false" ]; then
|
2023-12-18 23:48:21 -08:00
|
|
|
# remove folder if it exists
|
|
|
|
if [ -d "$METRICS_DIR" ]; then
|
|
|
|
rm -rf "$METRICS_DIR"
|
|
|
|
# find "$METRICS_DIR" -maxdepth 1 -type f ! -name "metrics-json-manifest.txt" -exec rm -rf {} +
|
|
|
|
fi
|
|
|
|
# force copy (overwrite) files from metrics-tmp (new eval metrics) to metrics (old eval metrics)
|
|
|
|
mkdir -p "$METRICS_DIR"
|
|
|
|
check_output_folder
|
|
|
|
cp -rf "$TMP_METRICS_LATEST_RUN_DIR" "$OUTPUT_ROOT/metrics"
|
2023-12-11 20:04:15 -05:00
|
|
|
elif ! diff -ru "$METRICS_DIR" "$TMP_METRICS_LATEST_RUN_DIR"; then
|
2023-12-18 23:48:21 -08:00
|
|
|
check_output_folder
|
|
|
|
"$SCRIPT_DIR"/clean-permissions-files.sh "$TMP_METRICS_LATEST_RUN_DIR"
|
|
|
|
diff -ru "$METRICS_DIR" "$TMP_METRICS_LATEST_RUN_DIR" >metricsdiff.txt
|
|
|
|
diffstat -c metricsdiff.txt
|
|
|
|
echo
|
|
|
|
echo "There are differences from the previously checked-in structured outputs."
|
|
|
|
echo
|
|
|
|
echo "If these differences are acceptable, overwrite by the fixtures by setting the env var:"
|
|
|
|
echo
|
|
|
|
echo " export OVERWRITE_FIXTURES=true"
|
|
|
|
echo
|
|
|
|
echo "and then rerun this script."
|
|
|
|
echo
|
|
|
|
echo "NOTE: You'll likely just want to run scripts/ingest-test-fixtures-update.sh on x86_64 hardware"
|
|
|
|
echo "to update fixtures for CI."
|
|
|
|
echo
|
|
|
|
exit 1
|
2023-11-16 00:02:43 -05:00
|
|
|
fi
|