#!/bin/bash

set -e

# Include common bits
. inc/releng_getopts.inc

# Each releng_ 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} -c1' to remove.\n"
 exit 8
else
 mkdir "${GEN_DATA_DIR}"
fi

#
UPPER=40

# 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}..."
for ((i1=0; i1 < ${UPPER}/4; i1++))
do
  for ((i2=0; i2 < ${UPPER}/2; i2++))
  do
    for ((i3=0; i3 < ${UPPER}; i3++))
    do
    mkdir -p ${GEN_DATA_DIR}/DirOne$i1/DirTwo$i2/DirThree$i3
    touch    ${GEN_DATA_DIR}/DirOne$i1/DirTwo$i2/DirThree$i3/FileOne
    done
  done
done
printf "done.\n"

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