• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/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
17UNIT_TEST_DIR="jemalloc5_unittests"
18
19UNIT_TESTS=( \
20  "a0" \
21  "arena_reset" \
22  "atomic" \
23  "background_thread" \
24  "background_thread_enable" \
25  "base" \
26  "bitmap" \
27  "ckh" \
28  "div" \
29  "emitter" \
30  "extent_quantize" \
31  "fork" \
32  "hash" \
33  "hooks" \
34  "junk" \
35  "junk_alloc" \
36  "junk_free" \
37  "log" \
38  "mallctl" \
39  "malloc_io" \
40  "math" \
41  "mq" \
42  "mtx" \
43  "pack" \
44  "pages" \
45  "prng" \
46  "prof_accum" \
47  "prof_active" \
48  "prof_gdump" \
49  "prof_idump" \
50  "prof_reset" \
51  "prof_thread_name" \
52  "ql" \
53  "qr" \
54  "rb" \
55  "retained" \
56  "rtree" \
57  "SFMT" \
58  "size_classes" \
59  "slab" \
60  "smoothstep" \
61  "spin" \
62  "stats" \
63  "stats_print" \
64  "ticker" \
65  "nstime" \
66  "tsd" \
67  "witness" \
68)
69
70# These tests have bit-rotted and are not working properly.
71#  "decay" \
72#  "zero" \
73
74INTEGRATION_TEST_DIR="jemalloc5_integrationtests"
75
76INTEGRATION_TESTS=( \
77  "aligned_alloc" \
78  "allocated" \
79  "extent" \
80  "mallocx" \
81  "MALLOCX_ARENA" \
82  "overflow" \
83  "posix_memalign" \
84  "rallocx" \
85  "sdallocx" \
86  "thread_arena" \
87  "xallocx" \
88  "basic" \
89)
90
91STRESS_TEST_DIR="jemalloc5_stresstests"
92
93STRESS_TESTS=( \
94  "microbench" \
95)
96
97TEST_DIRECTORIES=( "nativetest" "nativetest64" )
98FAILING_TESTS=()
99
100function run_tests () {
101  local test_type=$1
102  shift
103  local test_dir=$1
104  shift
105  local test_list=$*
106  if [[ -d "${test_dir}" ]]; then
107    for test in ${test_list[@]}; do
108      echo "Running ${test_type} ${test}"
109      ${test_dir}/$test
110      local exit_val=$?
111      # 0 means all tests passed.
112      # 1 means all tests passed but some tests were skipped.
113      # 2 means at least one failure.
114      if [[ ${exit_val} -ne 0 ]] && [[ ${exit_val} -ne 1 ]]; then
115        echo "*** $test failed: ${exit_val}"
116        FAILING_TESTS+=("${test_dir}/${test}")
117        EXIT_CODE=$((EXIT_CODE+1))
118      fi
119    done
120  fi
121}
122
123if [[ "" == "$1" ]]; then
124  directory="/data"
125else
126  directory=$1;
127fi
128
129echo "Looking in $directory";
130
131EXIT_CODE=0
132for test_dir in ${TEST_DIRECTORIES[@]}; do
133  test_dir="${directory}/${test_dir}"
134  if [[ -d "${test_dir}" ]]; then
135    run_tests "unit" "${test_dir}/${UNIT_TEST_DIR}" ${UNIT_TESTS[@]}
136    run_tests "integration" "${test_dir}/${INTEGRATION_TEST_DIR}" ${INTEGRATION_TESTS[@]}
137    run_tests "stress" "${test_dir}/${STRESS_TEST_DIR}" ${STRESS_TESTS[@]}
138  fi
139done
140if [[ ${EXIT_CODE} -eq 0 ]]; then
141  echo "All tests passed"
142else
143  echo "List of failing tests:"
144  for fail in ${FAILING_TESTS[@]}; do
145    echo "  $fail"
146  done
147fi
148exit ${EXIT_CODE}
149