xref: /aosp_15_r20/external/jemalloc_new/android/run_jemalloc_tests.sh (revision 1208bc7e437ced7eb82efac44ba17e3beba411da)
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