#!/bin/bash # Copyright 2011 George Danchev # Licensed under GNU GPL version 2 or later set -e not_in_releng_exit() { printf "\nPlease execute the tests from releng directory.\n\n" exit 1 } # Include common bits . inc/releng_getopts.inc || not_in_releng_exit print_specific_help() { cat << HLP Specific options: none yet. Overview: Test performance of print_size against various input tree. Optionally compare with genisoimage and mkisofs. HLP } if test "$SPECIFIC_HELP" = 1; then print_specific_help exit 0 fi # Each test should decide whether or not it needs # a xorriso binary to test, since some do compilations only. if [ ! -x $RELENG_XORRISO ]; then print_help printf "\n${SELF}: -x absolute or relative path to binary to be run.\n\n" exit 31 fi # check data dir, if any and after checking -x xorriso if [ -d "${GEN_DATA_DIR}" ]; then printf "\n${SELF}: directory %s exists!" ${GEN_DATA_DIR} printf "\n${SELF}: use '${SELF} -c' to remove.\n" exit 8 else mkdir "${GEN_DATA_DIR}" fi # DIR_UPPER=32 FILE_UPPER=10 # All must be set at this point # TODO: work out a smarter way to quickly generate different # types of trees (long, deep, etc) printf "\n${SELF}: Generating sample tree in ${GEN_DATA_DIR} :\n" count=0 date # Hopefully the for-loops are much faster than while-loops with arithmetics # This needs 7/4*DIR_UPPER+FILE_UPPER (= 66) while-iterations # i1_list= i1=0 o1=$(expr ${DIR_UPPER} / 4) while test $i1 -lt $o1 do i1_list="$i1_list $i1" i1=$(expr $i1 + 1) done i2_list= i2=0 o2=$(expr ${DIR_UPPER} / 2) while test $i2 -lt $o2 do i2_list="$i2_list $i2" i2=$(expr $i2 + 1) done i3_list= i3=0 while test $i3 -lt ${DIR_UPPER} do i3_list="$i3_list $i3" i3=$(expr $i3 + 1) done i_file_list= i_file=0 while test $i_file -lt ${FILE_UPPER} do i_file_list="$i_file_list $i_file" i_file=$(expr $i_file + 1) done # # plus 1/8*DIR_UPPER*DIR_UPPER*DIR_UPPER*FILE_UPPER (= 40960) for-iterations # for i1 in $i1_list do for i2 in $i2_list do for i3 in $i3_list do mkdir -p ${GEN_DATA_DIR}/DirOne$i1/DirTwo$i2/DirThree$i3 for i_file in $i_file_list do echo -n \ > ${GEN_DATA_DIR}/DirOne$i1/DirTwo$i2/DirThree$i3/File_${i_file} count=$((count + 1)) done done done echo " ${count} files created ..." done printf "done.\n" date du -s "${GEN_DATA_DIR}" printf "\n${SELF}: Performing several print size runs to neutralize possible disk cache impact.\n" # run xorriso if [ -x ${RELENG_XORRISO} ]; then for run in 1 2 3; do printf "\n${SELF}: Running ${RELENG_XORRISO} -as mkisofs -quiet -print-size ${GEN_DATA_DIR}. Trial: ${run}.\n" time ${RELENG_XORRISO} -as mkisofs -quiet -print-size ${GEN_DATA_DIR} done fi # try to run genisoimage if which genisoimage >/dev/null 2>&1; then RELENG_GENISOIMAGE=`which genisoimage` for run in 1 2 3; do printf "\n${SELF}: Running ${RELENG_GENISOIMAGE} -quiet -print-size ${GEN_DATA_DIR}. Trial: ${run}.\n" time ${RELENG_GENISOIMAGE} -quiet -print-size ${GEN_DATA_DIR} done fi # try to run mkisofs if which mkisofs >/dev/null 2>&1; then RELENG_MKISOFS=`which mkisofs` for run in 1 2 3; do printf "\n${SELF}: Running ${RELENG_MKISOFS} -quiet -print-size ${GEN_DATA_DIR}. Trial: ${run}.\n" time ${RELENG_MKISOFS} -quiet -print-size ${GEN_DATA_DIR} done fi # cleanup # exit 0