#!/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}