| 
									
										
										
										
											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 |