Home | History | Annotate | Download | only in courgette
      1 #!/bin/bash
      2 
      3 # Copyright 2013 The Chromium Authors. All rights reserved.
      4 # Use of this source code is governed by a BSD-style license that can be
      5 # found in the LICENSE file.
      6 
      7 # Collect memory usage on the patches from run_stress_test
      8 
      9 source "$(dirname ${0})/stress_test_common"
     10 
     11 main() {
     12   if [ $# -lt 1 ]; then
     13     cat <<EOF
     14 
     15 USAGE: $(basename ${0}) dir
     16 
     17 Collect memory usage on the patches from run_stress_test
     18 
     19 EOF
     20     exit 1
     21   fi
     22 
     23   local dir="${1}"
     24   if [ ! -d "${dir}" ]; then
     25     error "\"${dir}\" not found"
     26     exit 1
     27   fi
     28 
     29   local patches_dir="${dir}/patches"
     30 
     31   find "${patches_dir}" \
     32     | grep "\.patch$" \
     33     | while read i; do
     34     local patch="${i}"
     35     local subdir_filename="${patch:$((${#patches_dir} + 1))}"
     36     local out_base="${dir}/metrics/${subdir_filename}"
     37     mkdir -p "$(dirname ${out_base})"
     38 
     39     local original="${subdir_filename%.patch}"
     40     local applied="${out_base}.applied"
     41     local apply_mem="${out_base}.apply_mem"
     42     valgrind --tool=massif --massif-out-file="${apply_mem}" courgette -apply \
     43       "${original}" "${patch}" "${applied}" &
     44 
     45     local bz2_patch="${i}.bz2"
     46     local unbz2="${out_base}.unbz2"
     47     local unbz2_mem="${out_base}.unbz2_mem"
     48     valgrind --tool=massif --massif-out-file="${unbz2_mem}" bunzip2 -c \
     49       "${bz2_patch}" > "${unbz2}" &
     50 
     51     local xz_patch="${i}.xz"
     52     local unxz="${out_base}.unxz"
     53     local unxz_mem="${out_base}.unxz_mem"
     54     valgrind --tool=massif --massif-out-file="${unxz_mem}" unxz -c \
     55       "${xz_patch}" > "${unxz}" &
     56 
     57     local bsdiff_patch="${patch%.patch}.bsdiff_patch"
     58     local applied_bsdiff="${out_base}.applied_bsdiff"
     59     local bsdiff_mem="${out_base}.bsdiff_mem"
     60     valgrind --tool=massif --massif-out-file="${bsdiff_mem}" bspatch \
     61       "${original}" "${applied_bsdiff}" "${bsdiff_patch}" &
     62 
     63     wait
     64   done
     65 }
     66 
     67 main "${@}"
     68