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
21mkdir src
22awk '
23BEGIN {
24    for (c = 1; c <= 1000; c++) {
25        writeClass(c);
26    }
27}
28function writeClass(name) {
29    fileName = "src/Clazz" name ".java";
30    printf("public class Clazz%s {\n", name) > fileName;
31    for (i = 1; i <= 100; i++) {
32        printf("    int field%d;\n", i) > fileName;
33    }
34    for (i = 1; i <= 100; i++) {
35        printf("    void method%d(int param) { }\n", i) > fileName;
36    }
37    printf("}\n") > fileName;
38}'
39
40mkdir classes
41${JAVAC} -d classes `find src -name '*.java'`
42
43mkdir out
44dx -JXmx4g -JXms4g --dex --no-optimize --multi-dex --output=out classes
45
46mkdir out-multi
47dx -JXmx4g -JXms4g --dex --no-optimize --multi-dex --num-threads=4 --output=out-multi classes
48
49diff -r out out-multi > unit-out.txt
50if [ "$?" = "0" ]; then
51    echo "Yay!"
52else
53    cat unit-out.txt
54fi
55