Home | History | Annotate | Download | only in 127-merge-stress
      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 # NB This test is likely to be flakey. It attempts to merge random
     18 # DEX files from the Android build tree.
     19 
     20 # Find dx.jar from dx in the android dev tree
     21 prog=`which dx`
     22 progdir=`dirname "${prog}"`
     23 dxjar=$progdir/../framework/dx.jar
     24 
     25 for i in "$dxjar"; do
     26     if [ ! -r $i ]; then
     27         echo Missing dependency $i. Build dx/junit-tests.
     28         exit 1
     29     fi
     30 done
     31 
     32 # Find dex files in the tree
     33 dexes=`find $ANDROID_BUILD_TOP/out -name '*.dex' -printf '%p '`
     34 dexesinjars=`find $ANDROID_BUILD_TOP/libcore $ANDROID_BUILD_TOP/out -name '*.jar' -exec sh -c 'unzip -l "{}" 2>/dev/null | grep -q classes.dex ' \; -printf '%p '`
     35 dexesinapks=`find $ANDROID_BUILD_TOP/libcore $ANDROID_BUILD_TOP/out -name '*.apk' -exec sh -c 'unzip -l "{}" 2>/dev/null | grep -q classes.dex ' \; -printf '%p '`
     36 
     37 # Select only the valid dex files
     38 validdexes=""
     39 for dex in $dexes $dexesinjars $dexesinapks; do
     40   if [[ "$dex" = *"core"* ]]; then
     41     # Ignoring core files as hit limits of merging capability.
     42     continue
     43   fi
     44   dexdump2 -c $dex >/dev/null
     45   if [ $? -eq 0 ]; then
     46     validdexes="$validdexes $dex"
     47   fi
     48 done
     49 
     50 if [ "$validdexes" = "" ]; then
     51   echo No valid DEX files found.
     52   exit 1
     53 fi
     54 
     55 # Compile and run java merging test
     56 $JAVAC -Xlint:-options -source 1.7 -target 1.7 -cp $dxjar -d . com/android/dx/merge/MergeTest.java
     57 java -cp .:$dxjar com.android.dx.merge.MergeTest $validdexes >/dev/null
     58 
     59