6
PATH="$PATH:$PERCONA_TOOLKIT_SANDBOX/bin"
9
. "$LIB_DIR/log_warn_die.sh"
10
. "$LIB_DIR/alt_cmds.sh"
11
. "$LIB_DIR/parse_options.sh"
12
. "$LIB_DIR/summary_common.sh"
13
. "$LIB_DIR/parse_options.sh"
14
. "$LIB_DIR/collect_system_info.sh"
16
# Prefix (with path) for the collect files.
17
p="$TMPDIR/collect_mysql_info"
18
samples="$PERCONA_TOOLKIT_BRANCH/t/pt-summary/samples"
22
parse_options "$BIN_DIR/pt-summary" --sleep 1
26
collect_system_data "$p"
28
p2="$TMPDIR/collect_mysql_info2"
30
touch "$p2/some_empty_file"
31
collect_system_data "$p2"
33
cmd_ok "test ! -e \"$p2/some_empty_file\"" "collect_system_data removes empty files before exiting"
35
cat <<EOF > "$TMPDIR/expected"
38
find_raid_controller_lspci "$samples/lspci-001.txt" > "$TMPDIR/got"
39
no_diff "$TMPDIR/got" "$TMPDIR/expected" "lspci-001.txt"
41
cat <<EOF > "$TMPDIR/expected"
44
find_raid_controller_lspci "$samples/lspci-002.txt" > "$TMPDIR/got"
45
no_diff "$TMPDIR/got" "$TMPDIR/expected" "lspci-002.txt"
47
cat <<EOF > "$TMPDIR/expected"
50
find_raid_controller_lspci "$samples/lspci-003.txt" > "$TMPDIR/got"
51
no_diff "$TMPDIR/got" "$TMPDIR/expected" "lspci-003.txt"
53
cat <<EOF > "$TMPDIR/expected"
54
LSI Logic MegaRAID SAS
56
find_raid_controller_lspci "$samples/lspci-004.txt" > "$TMPDIR/got"
57
no_diff "$TMPDIR/got" "$TMPDIR/expected" "lspci-004.txt"
59
cat <<EOF > "$TMPDIR/expected"
62
find_raid_controller_lspci "$samples/lspci-005.txt" > "$TMPDIR/got"
63
no_diff "$TMPDIR/got" "$TMPDIR/expected" "lspci-005.txt"
65
cat <<EOF > "$TMPDIR/expected"
68
find_raid_controller_lspci "$samples/lspci-006.txt" > "$TMPDIR/got"
69
no_diff "$TMPDIR/got" "$TMPDIR/expected" "lspci-006.txt"
71
# find_raid_controller_dmesg
73
cat <<EOF > "$TMPDIR/expected"
76
find_raid_controller_dmesg "$samples/dmesg-001.txt" > "$TMPDIR/got"
77
no_diff "$TMPDIR/got" "$TMPDIR/expected" "dmesg-001.txt"
79
cat <<EOF > "$TMPDIR/expected"
82
find_raid_controller_dmesg "$samples/dmesg-002.txt" > "$TMPDIR/got"
83
no_diff "$TMPDIR/got" "$TMPDIR/expected" "dmesg-002.txt"
85
cat <<EOF > "$TMPDIR/expected"
86
LSI Logic MegaRAID SAS
88
find_raid_controller_dmesg "$samples/dmesg-003.txt" > "$TMPDIR/got"
89
no_diff "$TMPDIR/got" "$TMPDIR/expected" "dmesg-003.txt"
91
cat <<EOF > "$TMPDIR/expected"
94
find_raid_controller_dmesg "$samples/dmesg-004.txt" > "$TMPDIR/got"
95
no_diff "$TMPDIR/got" "$TMPDIR/expected" "dmesg-004.txt"
97
cat <<EOF > "$TMPDIR/expected"
100
find_raid_controller_dmesg "$samples/dmesg-005.txt" > "$TMPDIR/got"
101
no_diff "$TMPDIR/got" "$TMPDIR/expected" "dmesg-005.txt"
103
# TODO is this right?
104
cat <<EOF > "$TMPDIR/expected"
106
find_raid_controller_dmesg "$samples/dmesg-006.txt" > "$TMPDIR/got"
108
no_diff "$TMPDIR/got" "$TMPDIR/expected" "dmesg-006.txt"
110
# TODO is this right?
111
cat <<EOF > "$TMPDIR/expected"
113
find_raid_controller_dmesg "$samples/dmesg-007.txt" > "$TMPDIR/got"
115
no_diff "$TMPDIR/got" "$TMPDIR/expected" "dmesg-007.txt"
119
rm "$TMPDIR/raid_controller_outfile.tmp" 2>/dev/null
120
raid_controller "" "" > "$TMPDIR/raid_controller_outfile.tmp"
123
"$(get_var raid_controller "$TMPDIR/raid_controller_outfile.tmp")" \
124
"No RAID controller detected" \
125
"raid_controller has a sane default"
127
rm "$TMPDIR/raid_controller_outfile.tmp" 2>/dev/null
128
raid_controller "" "$samples/lspci-001.txt" > "$TMPDIR/raid_controller_outfile.tmp"
130
"$(get_var raid_controller "$TMPDIR/raid_controller_outfile.tmp")" \
132
"raid_controller gets the correct result from an lspci file"
134
rm "$TMPDIR/raid_controller_outfile.tmp" 2>/dev/null
135
raid_controller "$samples/dmesg-004.txt" "" > "$TMPDIR/raid_controller_outfile.tmp"
137
"$(get_var raid_controller "$TMPDIR/raid_controller_outfile.tmp")" \
139
"...Or from a dmseg file"
141
# find_virtualization_dmesg
144
for expected in "" "" "" "" "" "Xen" "VirtualBox"; do
145
find_virtualization_dmesg "$samples/dmesg-00$i.txt" > "$TMPDIR/got"
146
is "$(cat "$TMPDIR/got")" "$expected" "dmesg-00$i.txt"
150
# linux_exclusive_collection
156
printf "#!/usr/bin/env bash\necho \"${output}\"\n" > "$TMPDIR/${cmd}_replacement"
157
chmod +x "$TMPDIR/${cmd}_replacement"
158
eval "CMD_$(echo $cmd | tr '[a-z]' '[A-Z]')=\"$TMPDIR/${cmd}_replacement\""
161
test_linux_exclusive_collection () {
164
# First, let's try what happens if none of the commands are available
168
local PT_SUMMARY_SKIP=""
171
cp "$dir/sysctl" "$dir/1/"
172
linux_exclusive_collection "$dir/1"
175
"$(ls "$dir/1" | grep 'lvs\|vgs\|netstat' )" \
177
'linux_exclusive_collection: If a command isnt available, doesnt create spurious files'
180
for f in lvs vgs netstat; do
181
fake_command "$f" "ok $i"
186
cp "$dir/sysctl" "$dir/2/"
187
linux_exclusive_collection "$dir/2"
190
"$(ls "${dir}/2" | grep 'lvs\|vgs\|netstat' | sort | xargs echo )" \
191
"lvs lvs.stderr netstat vgs" \
192
"linux_exclusive_collection: And works as expected if they are there"
195
for f in lvs vgs netstat; do
197
"$(cat "${dir}/2/${f}")" \
199
"linux_exclusive_collection: output for $f is correct"
204
platform="$(get_var platform "$p/summary")"
206
if [ "$platform" = "Linux" ]; then
207
mkdir "$TMPDIR/linux_data"
208
cp "$p/sysctl" "$TMPDIR/linux_data/sysctl"
209
test_linux_exclusive_collection "$TMPDIR/linux_data"
211
skip 1 5 "Tests exclusive for Linux"
214
# propietary_raid_controller
216
test_propietary_raid_controller () {
220
local CMD_HPACUCLI=""
221
local CMD_MEGACLI64=""
225
for controller in "AACRAID" "HP Smart Array" "LSI Logic MegaRAID SAS"; do
226
rm "$dir/1/summary" 2>/dev/null
227
touch "$dir/1/summary"
228
propietary_raid_controller "$dir/1/raid-controller" "$dir/1/summary" "$dir/1" "$controller"
230
"$(get_var "internal::raid_opt" "$dir/1/summary")" \
232
"propietary_raid_controller: correct raid_opt default for $controller"
235
"grep -q 'RAID controller software not found' \"$dir/1/raid-controller\"" \
236
"propietary_raid_controller: correct default for $controller if the command isn't available"
240
fake_command arcconf "ok arcconf"
241
propietary_raid_controller "$dir/2/raid-controller" "$dir/2/summary" "$dir/2" "AACRAID"
243
"$(get_var "internal::raid_opt" "$dir/2/summary")" \
245
"propietary_raid_controller: correct raid_opt default for $controller when arcconf is there"
248
"$(cat "$dir/2/raid-controller")" \
250
"AACRAID calls arcconf"
253
mkdir "$TMPDIR/raid_controller"
254
test_propietary_raid_controller "$TMPDIR/raid_controller"
257
# notable_processes_info
263
if [ -e /proc/$forked_pid/oom_adj ] \
264
&& echo "-17" > /proc/$forked_pid/oom_adj 2>/dev/null; then
266
notable_processes_info > "$TMPDIR/notable_procs"
268
"$(cat "$TMPDIR/notable_procs")" \
269
"${forked_pid}\\s+-17" \
270
"notable_proccesses_info finds the process we manually changed earlier"
273
skip 1 1 "Either this OS doesn't have an oom, or this user doesn't have enough privileges to change the oom of other processes"
279
# dmidecode_system_info
281
test_dmidecode_system_info () {
284
local CMD_DMIDECODE=""
286
dmidecode_system_info "$dir/outfile"
288
cmd_ok '! test -s "$dir/outfile"' "If dmidecode isn't found, produces nothing"
290
fake_command dmidecode '[$@]'
291
dmidecode_system_info > "$dir/outfile"
293
cat <<EOF >> "$dir/expected"
294
vendor [-s system-manufacturer]
295
system [-s system-manufacturer]; [-s system-product-name]; v[-s system-version] ([-s chassis-type])
296
servicetag [-s system-serial-number]
302
"..but if it's there, it gets called with the expected parameters "
305
mkdir "$TMPDIR/dmidecode_system_info"
306
test_dmidecode_system_info "$TMPDIR/dmidecode_system_info"