summaryrefslogtreecommitdiff
path: root/tools/valgrind_test/valgrind_test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/valgrind_test/valgrind_test.sh')
-rwxr-xr-xtools/valgrind_test/valgrind_test.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/tools/valgrind_test/valgrind_test.sh b/tools/valgrind_test/valgrind_test.sh
new file mode 100755
index 0000000..b06342e
--- /dev/null
+++ b/tools/valgrind_test/valgrind_test.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+
+test_dir=$(dirname $0)
+cd $test_dir
+
+dg_path="../../drumgizmo"
+
+memcheck_log_file="valgrind_memcheck.log"
+helgrind_log_file="valgrind_helgrind.log"
+dg_log_file="drumgizmo.log"
+memcheck_options="--tool=memcheck --log-file=$memcheck_log_file --leak-check=full --show-leak-kinds=all --track-origins=yes"
+helgrind_options="--tool=helgrind --log-file=$helgrind_log_file"
+midi_file="../../test/midi/file1.mid"
+wav_file_prefix="valgrind_test"
+midimap="../../test/kit/midimap.xml"
+drumkit="../../test/kit/kit1.xml"
+
+# check for drumgizmo
+if ! [ -e $dg_path/drumgizmo ]
+then
+ echo "ERROR: The drumgizmo binary doesn't exist. Maybe you forgot to compile?"
+ exit
+fi
+
+# check for valgrind
+if ! command -v valgrind >/dev/null 2>&1
+then
+ echo "ERROR: Cannot find valgrind. Maybe it isn't installed?"
+ exit
+fi
+
+# print nice header
+echo "==========================================="
+echo "Starting the valgrind test"
+echo
+echo "Memcheck output file: $memcheck_log_file"
+echo "Helgrind output file: $helgrind_log_file"
+echo "==========================================="
+echo
+echo "----------------"
+echo "Running memcheck"
+echo "----------------"
+echo
+
+# run memcheck and print summary
+valgrind $memcheck_options $dg_path/./drumgizmo -i midifile -I file=$midi_file,midimap=$midimap -o wavfile -O file=$wav_file_prefix $drumkit > /dev/null
+sed -n '/LEAK SUMMARY:/,$p' $memcheck_log_file
+echo
+echo "=> For details see: $memcheck_log_file"
+
+echo
+echo "----------------"
+echo "Running helgrind"
+echo "----------------"
+echo
+
+# run helgrind and print summary
+valgrind $helgrind_options $dg_path/./drumgizmo -i midifile -I file=$midi_file,midimap=$midimap -o wavfile -O file=$wav_file_prefix $drumkit > $dg_log_file
+sed -n '/ERROR SUMMARY:/,$p' $helgrind_log_file
+echo
+echo "=> For details see: $helgrind_log_file"
+
+echo
+
+# delete created wav files
+rm *.wav