You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
3.0 KiB
149 lines
3.0 KiB
#!/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}
|