1 #!/system/bin/sh 2 # 3 # Copyright (C) 2014 The Android Open Source Project 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 UNIT_TEST_DIR="jemalloc_unittests" 18 19 UNIT_TESTS=( \ 20 "atomic" \ 21 "bitmap" \ 22 "ckh" \ 23 "decay" \ 24 "hash" \ 25 "junk" \ 26 "junk_alloc" \ 27 "junk_free" \ 28 "lg_chunk" \ 29 "mallctl" \ 30 "math" \ 31 "mq" \ 32 "mtx" \ 33 "nstime" \ 34 "prng" \ 35 "prof_accum" \ 36 "prof_active" \ 37 "prof_gdump" \ 38 "prof_idump" \ 39 "prof_reset" \ 40 "prof_thread_name" \ 41 "ql" \ 42 "qr" \ 43 "quarantine" \ 44 "rb" \ 45 "rtree" \ 46 "run_quantize" \ 47 "SFMT" \ 48 "size_classes" \ 49 "smoothstep" \ 50 "stats" \ 51 "ticker" \ 52 "tsd" \ 53 "util" \ 54 "zero" \ 55 ) 56 57 INTEGRATION_TEST_DIR="jemalloc_integrationtests" 58 59 INTEGRATION_TESTS=( \ 60 "aligned_alloc" \ 61 "allocated" \ 62 "chunk" \ 63 "MALLOCX_ARENA" \ 64 "mallocx" \ 65 "overflow" \ 66 "posix_memalign" \ 67 "rallocx" \ 68 "sdallocx" \ 69 "thread_arena" \ 70 "thread_tcache_enabled" \ 71 "xallocx" \ 72 ) 73 74 TEST_DIRECTORIES=( "/data/nativetest" "/data/nativetest64" ) 75 FAILING_TESTS=() 76 77 function run_tests () { 78 local test_type=$1 79 shift 80 local test_dir=$1 81 shift 82 local test_list=$* 83 if [[ -d "${test_dir}" ]]; then 84 for test in ${test_list[@]}; do 85 echo "Running ${test_type} ${test}" 86 ${test_dir}/$test 87 local exit_val=$? 88 # 0 means all tests passed. 89 # 1 means all tests passed but some tests were skipped. 90 # 2 means at least one failure. 91 if [[ ${exit_val} -ne 0 ]] && [[ ${exit_val} -ne 1 ]]; then 92 echo "*** $test failed: ${exit_val}" 93 FAILING_TESTS+=("${test}") 94 EXIT_CODE=$((EXIT_CODE+1)) 95 fi 96 done 97 fi 98 } 99 100 EXIT_CODE=0 101 for test_dir in ${TEST_DIRECTORIES[@]}; do 102 if [[ -d "${test_dir}" ]]; then 103 run_tests "unit" "${test_dir}/${UNIT_TEST_DIR}" ${UNIT_TESTS[@]} 104 run_tests "integration" "${test_dir}/${INTEGRATION_TEST_DIR}" ${INTEGRATION_TESTS[@]} 105 fi 106 done 107 if [[ ${EXIT_CODE} -eq 0 ]]; then 108 echo "All tests passed" 109 else 110 echo "List of failing tests:" 111 for fail in ${FAILING_TESTS[@]}; do 112 echo " $fail" 113 done 114 fi 115 exit ${EXIT_CODE} 116