1*1208bc7eSAndroid Build Coastguard Worker#!/bin/sh 2*1208bc7eSAndroid Build Coastguard Worker# 3*1208bc7eSAndroid Build Coastguard Worker# Copyright (C) 2014 The Android Open Source Project 4*1208bc7eSAndroid Build Coastguard Worker# 5*1208bc7eSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*1208bc7eSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*1208bc7eSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*1208bc7eSAndroid Build Coastguard Worker# 9*1208bc7eSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*1208bc7eSAndroid Build Coastguard Worker# 11*1208bc7eSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*1208bc7eSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*1208bc7eSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*1208bc7eSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*1208bc7eSAndroid Build Coastguard Worker# limitations under the License. 16*1208bc7eSAndroid Build Coastguard Worker 17*1208bc7eSAndroid Build Coastguard WorkerUNIT_TEST_DIR="jemalloc5_unittests" 18*1208bc7eSAndroid Build Coastguard Worker 19*1208bc7eSAndroid Build Coastguard WorkerUNIT_TESTS=( \ 20*1208bc7eSAndroid Build Coastguard Worker "a0" \ 21*1208bc7eSAndroid Build Coastguard Worker "arena_reset" \ 22*1208bc7eSAndroid Build Coastguard Worker "atomic" \ 23*1208bc7eSAndroid Build Coastguard Worker "background_thread" \ 24*1208bc7eSAndroid Build Coastguard Worker "background_thread_enable" \ 25*1208bc7eSAndroid Build Coastguard Worker "base" \ 26*1208bc7eSAndroid Build Coastguard Worker "bitmap" \ 27*1208bc7eSAndroid Build Coastguard Worker "ckh" \ 28*1208bc7eSAndroid Build Coastguard Worker "div" \ 29*1208bc7eSAndroid Build Coastguard Worker "emitter" \ 30*1208bc7eSAndroid Build Coastguard Worker "extent_quantize" \ 31*1208bc7eSAndroid Build Coastguard Worker "fork" \ 32*1208bc7eSAndroid Build Coastguard Worker "hash" \ 33*1208bc7eSAndroid Build Coastguard Worker "hooks" \ 34*1208bc7eSAndroid Build Coastguard Worker "junk" \ 35*1208bc7eSAndroid Build Coastguard Worker "junk_alloc" \ 36*1208bc7eSAndroid Build Coastguard Worker "junk_free" \ 37*1208bc7eSAndroid Build Coastguard Worker "log" \ 38*1208bc7eSAndroid Build Coastguard Worker "mallctl" \ 39*1208bc7eSAndroid Build Coastguard Worker "malloc_io" \ 40*1208bc7eSAndroid Build Coastguard Worker "math" \ 41*1208bc7eSAndroid Build Coastguard Worker "mq" \ 42*1208bc7eSAndroid Build Coastguard Worker "mtx" \ 43*1208bc7eSAndroid Build Coastguard Worker "pack" \ 44*1208bc7eSAndroid Build Coastguard Worker "pages" \ 45*1208bc7eSAndroid Build Coastguard Worker "prng" \ 46*1208bc7eSAndroid Build Coastguard Worker "prof_accum" \ 47*1208bc7eSAndroid Build Coastguard Worker "prof_active" \ 48*1208bc7eSAndroid Build Coastguard Worker "prof_gdump" \ 49*1208bc7eSAndroid Build Coastguard Worker "prof_idump" \ 50*1208bc7eSAndroid Build Coastguard Worker "prof_reset" \ 51*1208bc7eSAndroid Build Coastguard Worker "prof_thread_name" \ 52*1208bc7eSAndroid Build Coastguard Worker "ql" \ 53*1208bc7eSAndroid Build Coastguard Worker "qr" \ 54*1208bc7eSAndroid Build Coastguard Worker "rb" \ 55*1208bc7eSAndroid Build Coastguard Worker "retained" \ 56*1208bc7eSAndroid Build Coastguard Worker "rtree" \ 57*1208bc7eSAndroid Build Coastguard Worker "SFMT" \ 58*1208bc7eSAndroid Build Coastguard Worker "size_classes" \ 59*1208bc7eSAndroid Build Coastguard Worker "slab" \ 60*1208bc7eSAndroid Build Coastguard Worker "smoothstep" \ 61*1208bc7eSAndroid Build Coastguard Worker "spin" \ 62*1208bc7eSAndroid Build Coastguard Worker "stats" \ 63*1208bc7eSAndroid Build Coastguard Worker "stats_print" \ 64*1208bc7eSAndroid Build Coastguard Worker "ticker" \ 65*1208bc7eSAndroid Build Coastguard Worker "nstime" \ 66*1208bc7eSAndroid Build Coastguard Worker "tsd" \ 67*1208bc7eSAndroid Build Coastguard Worker "witness" \ 68*1208bc7eSAndroid Build Coastguard Worker) 69*1208bc7eSAndroid Build Coastguard Worker 70*1208bc7eSAndroid Build Coastguard Worker# These tests have bit-rotted and are not working properly. 71*1208bc7eSAndroid Build Coastguard Worker# "decay" \ 72*1208bc7eSAndroid Build Coastguard Worker# "zero" \ 73*1208bc7eSAndroid Build Coastguard Worker 74*1208bc7eSAndroid Build Coastguard WorkerINTEGRATION_TEST_DIR="jemalloc5_integrationtests" 75*1208bc7eSAndroid Build Coastguard Worker 76*1208bc7eSAndroid Build Coastguard WorkerINTEGRATION_TESTS=( \ 77*1208bc7eSAndroid Build Coastguard Worker "aligned_alloc" \ 78*1208bc7eSAndroid Build Coastguard Worker "allocated" \ 79*1208bc7eSAndroid Build Coastguard Worker "extent" \ 80*1208bc7eSAndroid Build Coastguard Worker "mallocx" \ 81*1208bc7eSAndroid Build Coastguard Worker "MALLOCX_ARENA" \ 82*1208bc7eSAndroid Build Coastguard Worker "overflow" \ 83*1208bc7eSAndroid Build Coastguard Worker "posix_memalign" \ 84*1208bc7eSAndroid Build Coastguard Worker "rallocx" \ 85*1208bc7eSAndroid Build Coastguard Worker "sdallocx" \ 86*1208bc7eSAndroid Build Coastguard Worker "thread_arena" \ 87*1208bc7eSAndroid Build Coastguard Worker "xallocx" \ 88*1208bc7eSAndroid Build Coastguard Worker "basic" \ 89*1208bc7eSAndroid Build Coastguard Worker) 90*1208bc7eSAndroid Build Coastguard Worker 91*1208bc7eSAndroid Build Coastguard WorkerSTRESS_TEST_DIR="jemalloc5_stresstests" 92*1208bc7eSAndroid Build Coastguard Worker 93*1208bc7eSAndroid Build Coastguard WorkerSTRESS_TESTS=( \ 94*1208bc7eSAndroid Build Coastguard Worker "microbench" \ 95*1208bc7eSAndroid Build Coastguard Worker) 96*1208bc7eSAndroid Build Coastguard Worker 97*1208bc7eSAndroid Build Coastguard WorkerTEST_DIRECTORIES=( "nativetest" "nativetest64" ) 98*1208bc7eSAndroid Build Coastguard WorkerFAILING_TESTS=() 99*1208bc7eSAndroid Build Coastguard Worker 100*1208bc7eSAndroid Build Coastguard Workerfunction run_tests () { 101*1208bc7eSAndroid Build Coastguard Worker local test_type=$1 102*1208bc7eSAndroid Build Coastguard Worker shift 103*1208bc7eSAndroid Build Coastguard Worker local test_dir=$1 104*1208bc7eSAndroid Build Coastguard Worker shift 105*1208bc7eSAndroid Build Coastguard Worker local test_list=$* 106*1208bc7eSAndroid Build Coastguard Worker if [[ -d "${test_dir}" ]]; then 107*1208bc7eSAndroid Build Coastguard Worker for test in ${test_list[@]}; do 108*1208bc7eSAndroid Build Coastguard Worker echo "Running ${test_type} ${test}" 109*1208bc7eSAndroid Build Coastguard Worker ${test_dir}/$test 110*1208bc7eSAndroid Build Coastguard Worker local exit_val=$? 111*1208bc7eSAndroid Build Coastguard Worker # 0 means all tests passed. 112*1208bc7eSAndroid Build Coastguard Worker # 1 means all tests passed but some tests were skipped. 113*1208bc7eSAndroid Build Coastguard Worker # 2 means at least one failure. 114*1208bc7eSAndroid Build Coastguard Worker if [[ ${exit_val} -ne 0 ]] && [[ ${exit_val} -ne 1 ]]; then 115*1208bc7eSAndroid Build Coastguard Worker echo "*** $test failed: ${exit_val}" 116*1208bc7eSAndroid Build Coastguard Worker FAILING_TESTS+=("${test_dir}/${test}") 117*1208bc7eSAndroid Build Coastguard Worker EXIT_CODE=$((EXIT_CODE+1)) 118*1208bc7eSAndroid Build Coastguard Worker fi 119*1208bc7eSAndroid Build Coastguard Worker done 120*1208bc7eSAndroid Build Coastguard Worker fi 121*1208bc7eSAndroid Build Coastguard Worker} 122*1208bc7eSAndroid Build Coastguard Worker 123*1208bc7eSAndroid Build Coastguard Workerif [[ "" == "$1" ]]; then 124*1208bc7eSAndroid Build Coastguard Worker directory="/data" 125*1208bc7eSAndroid Build Coastguard Workerelse 126*1208bc7eSAndroid Build Coastguard Worker directory=$1; 127*1208bc7eSAndroid Build Coastguard Workerfi 128*1208bc7eSAndroid Build Coastguard Worker 129*1208bc7eSAndroid Build Coastguard Workerecho "Looking in $directory"; 130*1208bc7eSAndroid Build Coastguard Worker 131*1208bc7eSAndroid Build Coastguard WorkerEXIT_CODE=0 132*1208bc7eSAndroid Build Coastguard Workerfor test_dir in ${TEST_DIRECTORIES[@]}; do 133*1208bc7eSAndroid Build Coastguard Worker test_dir="${directory}/${test_dir}" 134*1208bc7eSAndroid Build Coastguard Worker if [[ -d "${test_dir}" ]]; then 135*1208bc7eSAndroid Build Coastguard Worker run_tests "unit" "${test_dir}/${UNIT_TEST_DIR}" ${UNIT_TESTS[@]} 136*1208bc7eSAndroid Build Coastguard Worker run_tests "integration" "${test_dir}/${INTEGRATION_TEST_DIR}" ${INTEGRATION_TESTS[@]} 137*1208bc7eSAndroid Build Coastguard Worker run_tests "stress" "${test_dir}/${STRESS_TEST_DIR}" ${STRESS_TESTS[@]} 138*1208bc7eSAndroid Build Coastguard Worker fi 139*1208bc7eSAndroid Build Coastguard Workerdone 140*1208bc7eSAndroid Build Coastguard Workerif [[ ${EXIT_CODE} -eq 0 ]]; then 141*1208bc7eSAndroid Build Coastguard Worker echo "All tests passed" 142*1208bc7eSAndroid Build Coastguard Workerelse 143*1208bc7eSAndroid Build Coastguard Worker echo "List of failing tests:" 144*1208bc7eSAndroid Build Coastguard Worker for fail in ${FAILING_TESTS[@]}; do 145*1208bc7eSAndroid Build Coastguard Worker echo " $fail" 146*1208bc7eSAndroid Build Coastguard Worker done 147*1208bc7eSAndroid Build Coastguard Workerfi 148*1208bc7eSAndroid Build Coastguard Workerexit ${EXIT_CODE} 149