71 lines
2.3 KiB
Bash
71 lines
2.3 KiB
Bash
#!/bin/bash
|
|
set -exo pipefail
|
|
|
|
JAVA_CALL="java"
|
|
TEST_RUNNER_PREFIX="valgrind"
|
|
# Find libjvm.so
|
|
if [[ -n $LIBJVM_SO ]]; then
|
|
LIBJVM_PATH=$LIBJVM_SO
|
|
else
|
|
JAVA_REAL_PATH=$(readlink -f $(which java))
|
|
JAVA_HOME=$(dirname $(dirname $JAVA_REAL_PATH))
|
|
LIBJVM_PATH=$(find $JAVA_HOME -type f -name "libjvm.so" | grep "/server/" | head -n 1)
|
|
fi
|
|
|
|
# If libjvm.so not found, terminate
|
|
if [[ -z $LIBJVM_PATH ]]; then
|
|
echo "libjvm.so not found"
|
|
exit 1
|
|
fi
|
|
|
|
# If TEST_RUNNER_PREFIX is not empty and contains "valgrind"
|
|
if [[ -n $TEST_RUNNER_PREFIX && $TEST_RUNNER_PREFIX =~ "valgrind" ]]; then
|
|
# Create a file to store the suppression information
|
|
SUPPRESSION_FILE="valgrind_suppressions.supp"
|
|
|
|
# If suppression file exists, delete it
|
|
if [[ -f $SUPPRESSION_FILE ]]; then
|
|
rm -f $SUPPRESSION_FILE
|
|
fi
|
|
|
|
# Generate the suppression file for all memcheck error types except Param
|
|
echo "Generating Valgrind suppression file at $SUPPRESSION_FILE..."
|
|
for error_type in Addr1 Addr2 Addr4 Addr8 Value1 Value2 Value4 Value8 Jump Cond
|
|
do
|
|
cat << EOF >> $SUPPRESSION_FILE
|
|
{
|
|
SuppressLibJvm${error_type}
|
|
Memcheck:${error_type}
|
|
...
|
|
obj:$LIBJVM_PATH
|
|
}
|
|
EOF
|
|
done
|
|
|
|
echo "Valgrind suppression file has been generated."
|
|
|
|
# Check if "--suppressions" already exists in TEST_RUNNER_PREFIX
|
|
if [[ $TEST_RUNNER_PREFIX != *"--suppressions"* ]]; then
|
|
TEST_RUNNER_PREFIX="$TEST_RUNNER_PREFIX --suppressions=$SUPPRESSION_FILE --track-origins=yes --keep-stacktraces=alloc-and-free --error-limit=no"
|
|
fi
|
|
|
|
JAVA_CALL="${JAVA_CALL} -Djava.compiler=NONE"
|
|
fi
|
|
|
|
|
|
# Print the final command
|
|
echo "$TEST_RUNNER_PREFIX $JAVA_CALL $@"
|
|
export MALLOC_CHECK_=3
|
|
# Execute the command
|
|
|
|
$TEST_RUNNER_PREFIX $JAVA_CALL -Djava.compiler=NONE -cp /home/agibsonccc/Downloads/junit-platform-console-standalone-1.9.3.jar \
|
|
org.junit.platform.console.ConsoleLauncher -cp=target/platform-tests-1.0.0-SNAPSHOT-shaded.jar \
|
|
-c=org.eclipse.deeplearning4j.dl4jcore.gradientcheck.CNN1DGradientCheckTest
|
|
|
|
# If TEST_RUNNER_PREFIX is not empty and contains "valgrind", remove the suppression file
|
|
if [[ -n $TEST_RUNNER_PREFIX && $TEST_RUNNER_PREFIX =~ "valgrind" ]]; then
|
|
rm -f $SUPPRESSION_FILE
|
|
fi
|
|
|
|
|