Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HLT development: add unit test for online vs dev tables consistency [14.0.X] #43884

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion HLTrigger/Configuration/tables/online_grun.txt
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,6 @@ HLT_IsoMu24_TwoProngs35_v* # CMSHLT-1885
HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_PFDiJet30_v* # CMSHLT-1796
HLT_Mu8_TrkIsoVVL_Ele23_CaloIdL_TrackIdL_IsoVL_DZ_CaloDiJet30_v* # CMSHLT-1796
HLT_VBF_DoubleMediumDeepTauPFTauHPS20_eta2p1_v* # CMSHLT-2289
HLT_IsoMu27_MediumDeepTauPFTauHPS20_eta2p1_SingleL1_v* # CMSHLT-2349
HLT_ZeroBias_Alignment_v* # CMSHLT-1892
HLT_CDC_L2cosmic_5p5_er1p0_v* # CMSHLT-1896
HLT_Ele30_WPTight_Gsf_v* # CMSHLT-1921
Expand Down
3 changes: 3 additions & 0 deletions HLTrigger/Configuration/test/BuildFile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,6 @@

<!-- test script hltFindDuplicates -->
<test name="test_hltFindDuplicates" command="test_hltFindDuplicates.sh"/>

<!-- test script testOnlineVsDevTablesConsistency -->
<test name="test_OnlineVsDevTablesConsistency" command="test_OnlineVsDevTablesConsistency.sh"/>
75 changes: 75 additions & 0 deletions HLTrigger/Configuration/test/test_OnlineVsDevTablesConsistency.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#!/bin/bash

function die { echo $1: status $2 ; exit $2; }

function compare_files() {
local file1_path="$1"
local file2_path="$2"
local exclude_set=("HLTAnalyzerEndpath" "RatesMonitoring" "DQMHistograms")

local lines_file1=()
local lines_file2=()
local not_in_file2=()

# extract the list of paths to match from the first file
while IFS= read -r line; do
if [[ ! $line =~ ^# ]]; then
# Extract the first word before a space
first_word=$(echo "$line" | awk '{print $1}')
lines_file1+=("$first_word")
fi
done < "$file1_path"

# extract the list of paths to match from the second file
while IFS= read -r line; do
if [[ ! $line =~ ^# ]]; then
# Extract the first word before a space
first_word=$(echo "$line" | awk '{print $1}')
lines_file2+=("$first_word")
fi
done < "$file2_path"

# find the set not in common
for line in "${lines_file1[@]}"; do
if [[ ! "${lines_file2[@]}" =~ "$line" ]]; then
not_in_file2+=("$line")
fi
done

# Remove lines from not_in_file2 that contain any substring in exclude_set
for pattern in "${exclude_set[@]}"; do
not_in_file2=("${not_in_file2[@]//*$pattern*}")
done

# Remove empty elements and empty lines after substitution
not_in_file2=("${not_in_file2[@]//''}")

# Remove empty elements from the array
local cleaned_not_in_file2=()
for element in "${not_in_file2[@]}"; do
if [[ -n "$element" ]]; then
cleaned_not_in_file2+=("$element")
fi
done

file1_name=$(basename "$file1_path")
file2_name=$(basename "$file2_path")

if [ ${#cleaned_not_in_file2[@]} -eq 0 ]; then
echo "All lines from $file1_name are included in $file2_name."
return 0
else
echo "Lines present in $file1_name but not in $file2_name (excluding the exclusion set):"
printf '%s\n' "${not_in_file2[@]}"
return 1
fi
}

TABLES_AREA="$CMSSW_BASE/src/HLTrigger/Configuration/tables"

compare_files $TABLES_AREA/online_pion.txt $TABLES_AREA/PIon.txt || die "Failure comparing online_pion and PIon" $?
compare_files $TABLES_AREA/online_hion.txt $TABLES_AREA/HIon.txt || die "Failure comparing online_hion and HIon" $?
compare_files $TABLES_AREA/online_pref.txt $TABLES_AREA/PRef.txt || die "Failure comparing online_pref and PRef" $?
compare_files $TABLES_AREA/online_cosmics.txt $TABLES_AREA/Special.txt || die "Failure comparing online_cosmics and Special" $?
compare_files $TABLES_AREA/online_special.txt $TABLES_AREA/Special.txt || die "Failure comparing online_special and Special" $?
compare_files $TABLES_AREA/online_grun.txt $TABLES_AREA/GRun.txt || die "Failure comparing online_grun and GRun" $?