blob: de085afc3484a30dbf212b22361ef6b73d2c6eeb [file] [log] [blame]
#!/bin/sh
#
# Copyright (C) 2014 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
UNIT_TEST_DIR="jemalloc5_unittests"
UNIT_TESTS=( \
"a0" \
"arena_reset" \
"atomic" \
"background_thread" \
"background_thread_enable" \
"base" \
"bitmap" \
"ckh" \
"div" \
"emitter" \
"extent_quantize" \
"fork" \
"hash" \
"hooks" \
"junk" \
"junk_alloc" \
"junk_free" \
"log" \
"mallctl" \
"malloc_io" \
"math" \
"mq" \
"mtx" \
"pack" \
"pages" \
"prng" \
"prof_accum" \
"prof_active" \
"prof_gdump" \
"prof_idump" \
"prof_reset" \
"prof_thread_name" \
"ql" \
"qr" \
"rb" \
"retained" \
"rtree" \
"SFMT" \
"size_classes" \
"slab" \
"smoothstep" \
"spin" \
"stats" \
"stats_print" \
"ticker" \
"nstime" \
"tsd" \
"witness" \
)
# These tests have bit-rotted and are not working properly.
# "decay" \
# "zero" \
INTEGRATION_TEST_DIR="jemalloc5_integrationtests"
INTEGRATION_TESTS=( \
"aligned_alloc" \
"allocated" \
"extent" \
"mallocx" \
"MALLOCX_ARENA" \
"overflow" \
"posix_memalign" \
"rallocx" \
"sdallocx" \
"thread_arena" \
"xallocx" \
"basic" \
)
STRESS_TEST_DIR="jemalloc5_stresstests"
STRESS_TESTS=( \
"microbench" \
)
TEST_DIRECTORIES=( "nativetest" "nativetest64" )
FAILING_TESTS=()
function run_tests () {
local test_type=$1
shift
local test_dir=$1
shift
local test_list=$*
if [[ -d "${test_dir}" ]]; then
for test in ${test_list[@]}; do
echo "Running ${test_type} ${test}"
${test_dir}/$test
local exit_val=$?
# 0 means all tests passed.
# 1 means all tests passed but some tests were skipped.
# 2 means at least one failure.
if [[ ${exit_val} -ne 0 ]] && [[ ${exit_val} -ne 1 ]]; then
echo "*** $test failed: ${exit_val}"
FAILING_TESTS+=("${test_dir}/${test}")
EXIT_CODE=$((EXIT_CODE+1))
fi
done
fi
}
if [[ "" == "$1" ]]; then
directory="/data"
else
directory=$1;
fi
echo "Looking in $directory";
EXIT_CODE=0
for test_dir in ${TEST_DIRECTORIES[@]}; do
test_dir="${directory}/${test_dir}"
if [[ -d "${test_dir}" ]]; then
run_tests "unit" "${test_dir}/${UNIT_TEST_DIR}" ${UNIT_TESTS[@]}
run_tests "integration" "${test_dir}/${INTEGRATION_TEST_DIR}" ${INTEGRATION_TESTS[@]}
run_tests "stress" "${test_dir}/${STRESS_TEST_DIR}" ${STRESS_TESTS[@]}
fi
done
if [[ ${EXIT_CODE} -eq 0 ]]; then
echo "All tests passed"
else
echo "List of failing tests:"
for fail in ${FAILING_TESTS[@]}; do
echo " $fail"
done
fi
exit ${EXIT_CODE}