Home | History | Annotate | Download | only in test
      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