-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathverification
executable file
·131 lines (125 loc) · 3.31 KB
/
verification
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/bash
#
# Using a set of known results files, verify the test is still correct.
#
TOOLS_BIN=`echo $0 | rev | cut -d/ -f2- | rev`
test_cmd=""
verify_file=""
curdir=`pwd`
home_parent=""
run_user=""
vdir=""
verification_run()
{
tmp_dir=`pwd`
verify_res_before=`mktemp ${tmp_dir}/wrapper_verify.XXXXX`
verify_res_after=`mktemp ${tmp_dir}wrapper_verify.XXXXX`
test_descript=$verify_file
required_systems=`grep "^Required_Systems:" $test_descript | cut -d: -f2`
fields=`grep ^fields $test_descript | cut -d: -f2-`
header_lines=`grep ^header_lines $test_descript | cut -d: -f2`
grep "^test:" $test_descript | cut -d: -f 2,3 > tests_to_run
while IFS= read -r test_entry
do
pushd ${home_parent}/${run_user} > /dev/null
if [[ -d "export_results" ]]; then
cd export_results
ls -d * > $verify_res_before
else
echo "" > $verify_res_before
fi
popd > /dev/null
test_args=`echo $test_entry | cut -d':' -f1`
test_base_results=`echo $test_entry | cut -d':' -f2`
$test_cmd $test_args --home_parent $home_parent --run_user $run_user
pushd ${home_parent}/${run_user}/export_results > /dev/null
ls -d * > $verify_res_after
popd >/dev/null
file_to_check=`diff $verify_res_after $verify_res_before | grep -v tar | grep '<' | sed "s/< //g"`
#
# Check dir contents first
#
files_present=$verify_res_before
pushd ${home_parent}/${run_user}/export_results
ls -R ${home_parent}/${run_user}/export_results/$file_to_check/* | cut -d'/' -f 6- > $verify_res_before
res_dir=${home_parent}/${run_user}/export_results/$file_to_check
popd > /dev/null
pushd $vdir/$test_base_results > /dev/null
ls -R * | cut -d'/' -f 3- > $verify_res_after
tfile=`ls *csv`
base_res_file=$vdir/$test_base_results/tfile
popd > /dev/null
diff -q $verify_res_before $verify_res_after > /dev/null
if [ $? -ne 0 ]; then
echo Warning: There are different files/file names between the results.
echo Files may still be valid as things like threads etc can be different.
diff $verify_res_before $verify_res_after
fi
new_res_file=`find $res_dir -print | grep csv | grep results | tail -1`
$TOOLS_BIN/validate_line --results_file $new_res_file --fields "$fields" --header_lines $header_lines --base_results_file $base_res_file
done < "tests_to_run"
rm -rf $verify_res_after $verify_res_before
}
usage()
{
echo Usage: $1
echo "home_parent <dir>: Parent of the users home directory."
echo "run_user <user>: Name of user running the test."
echo "test_cmd <command>: Test wrapper that is being executed."
echo "verify_file <file>: Path to the test verification file."
exit $2
}
ARGUMENT_LIST=(
"home_parent"
"run_user"
"test_cmd"
"verify_file"
)
NO_ARGUMENTS=(
"usage"
)
# read arguments
opts=$(getopt \
--longoptions "$(printf "%s:," "${ARGUMENT_LIST[@]}")" \
--longoptions "$(printf "%s," "${NO_ARGUMENTS[@]}")" \
--name "$(basename "$0")" \
--options "h" \
-- "$@"
)
eval set --$opts
while [[ $# -gt 0 ]]; do
case "$1" in
--home_parent)
home_parent=$2
shift 2
;;
--run_user)
run_user=$2
shift 2
;;
--verify_file)
verify_file=$2
shift 2
;;
--test_cmd)
test_cmd=$2
shift 2
;;
--usage)
usage $0 0
;;
-h)
usage $0 0
;;
--)
break;
;;
*)
echo "option not found ${1}"
usage $0 1
;;
esac
done
vdir=`echo $verify_file | rev | cut -d / -f 3- | rev`
verification_run
exit 0