1#!/bin/bash
2#
3# Copyright (C) 2013 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# Stop if something fails.
18set -e
19
20# Write out classes
21
22${JAVAC} ClassGen.java
23
24mkdir src
25mkdir classes
26
27# Heap size, min and max
28MEM=4g
29
30MULTIDEX="--multi-dex"
31THREADS="--num-threads=5"
32
33# Extra statistics, use to calibrate test.
34#EXTRA="--profile-concurrency"
35
36# Test smaller dex files
37#EXTRA="--set-max-idx-number=20000"
38
39# Test GC options
40#GC="-JXX:+UseConcMarkSweepGC"
41
42# Limit HW threads
43#TASKSET="taskset 0x00000fff
44
45# Number of classes, initial
46TEST_SIZE=1000
47
48# number of classes, max
49LIMIT=1000
50
51# Number of additional classes per test
52STEP=100
53
54# Number of fields per classes
55FIELDS=4
56
57# Number of methods per class
58METHODS=6
59
60
61first=1;
62while [ $TEST_SIZE -le $LIMIT ]; do
63  rm -rf out
64  mkdir out
65
66  sleep 2
67  java -classpath . ClassGen $first $TEST_SIZE $FIELDS $METHODS
68  first=`expr $TEST_SIZE + 1`
69
70  ${JAVAC} -d classes `find src -name '*.java'`
71  (cd classes; jar cf ../x.jar `find . -name '*.class'`)
72  sleep 3
73
74  start=`date +'%s%N'`
75  $TASKSET dx -JXmx$MEM -JXms$MEM $GC --dex $EXTRA --no-optimize $MULTIDEX $THREADS --output=out x.jar
76  end=`date +'%s%N'`
77  nsec=`expr $end - $start`
78  msec=`expr $nsec / 1000000`
79  echo "Classes/msec $TEST_SIZE $msec"
80
81  TEST_SIZE=`expr $TEST_SIZE + $STEP`
82done
83
84if [ "$?" = "1" ]; then
85    echo "Yay!"
86else
87    cat unit-out.txt
88fi
89