[lttng-dev] [PATCH] runtests: Make path of time binary configurable

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Thu Nov 15 08:42:51 EST 2012


* Simon Marchi (simon.marchi at polymtl.ca) wrote:
> On Thu, Nov 15, 2012 at 12:00 AM, Mathieu Desnoyers
> <mathieu.desnoyers at efficios.com> wrote:
> > * Simon Marchi (simon.marchi at polymtl.ca) wrote:
> >> I work on a platform that does not come with a time program. This patch
> >> makes it possible to specify the path of the time binary or not use it
> >> if none is available.
> >>
> >> If the URCU_TEST_TIME_BIN environment variable exists and is executable,
> >> it is used. Otherwise it tries with /usr/bin/time, the most common
> >> location. If it is not there, the tests are ran without timing info.
> >>
> >> Signed-off-by: Simon Marchi <simon.marchi at polymtl.ca>
> >> ---
> >>  tests/common.sh         |   13 +++++++++++++
> >>  tests/runtests-batch.sh |   15 +++++++++++++--
> >>  tests/runtests.sh       |   15 +++++++++++++--
> >>  3 files changed, 39 insertions(+), 4 deletions(-)
> >>  create mode 100755 tests/common.sh
> >>
> >> diff --git a/tests/common.sh b/tests/common.sh
> >> new file mode 100755
> >> index 0000000..a321bf2
> >> --- /dev/null
> >> +++ b/tests/common.sh
> >> @@ -0,0 +1,13 @@
> >> +#!/bin/sh
> >
> > If it is meant to be sourced from other files, then the #!/bin/sh header
> > is useless. Mainly because common.sh is useless when not sourced from
> > other scripts (useless indivitually).
> 
> Right.
> 
> >> +#
> >> +# This file is meant to be sourced from other tests scripts.
> >> +#
> >> +
> >> +if [ -x "$URCU_TEST_TIME_BIN" ]; then
> >> +     test_time_bin="$URCU_TEST_TIME_BIN"
> >
> > We use capital letters to represent "variables" (which are really
> > environment variables) in bash.
> >
> > e.g.: test_time_bin -> TEST_TIME_BIN
> >
> > Same for log_file and time_command.
> 
> If I understand correctly, it is not an environment variable until you
> export it (thus make it available to child processes). There is such a
> thing plain variable, there is just one big scope. I think there is
> not a single right way to do this, but I tend to agree with the SO
> answer below. By using capitalized names, you risk interfering with
> important environment variables. It would be a shame to do
> PATH="/tmp/something" by accident.
> 
> The answer I am referring to:
> http://stackoverflow.com/questions/673055/correct-bash-and-shell-script-variable-capitalization.

That's a compelling argument,

I'll gradually adapt my bash coding style then,

Thanks,

Mathieu

> 
> > Thanks,
> >
> > Mathieu
> >
> >> +elif [ -x "/usr/bin/time" ]; then
> >> +     test_time_bin="/usr/bin/time"
> >> +else
> >> +     test_time_bin=""
> >> +fi
> >> +
> >> diff --git a/tests/runtests-batch.sh b/tests/runtests-batch.sh
> >> index 6c2340d..222069c 100755
> >> --- a/tests/runtests-batch.sh
> >> +++ b/tests/runtests-batch.sh
> >> @@ -1,8 +1,19 @@
> >>  #!/bin/sh
> >>
> >> +source "./common.sh"
> >> +
> >> +log_file="runall.detail.log"
> >> +
> >> +# Check if time bin is defined
> >> +if [ -n "$test_time_bin" ]; then
> >> +     time_command="$test_time_bin -a -o $log_file"
> >> +else
> >> +     time_command=""
> >> +fi
> >> +
> >>  #for a in test_urcu_gc test_urcu_gc_mb test_urcu_qsbr_gc; do
> >>  for a in test_urcu_gc; do
> >> -     echo "./${a} $*" | tee -a runall.detail.log
> >> -     /usr/bin/time -a -o runall.detail.log ./${a} $*
> >> +     echo "./${a} $*" | tee -a "$log_file"
> >> +     $time_command ./${a} $*
> >>  done
> >>
> >> diff --git a/tests/runtests.sh b/tests/runtests.sh
> >> index 79e54df..b3d3dc2 100755
> >> --- a/tests/runtests.sh
> >> +++ b/tests/runtests.sh
> >> @@ -1,10 +1,21 @@
> >>  #!/bin/sh
> >>
> >> +source "./common.sh"
> >> +
> >> +log_file="runall.detail.log"
> >> +
> >> +# Check if time bin is defined
> >> +if [ -n "$test_time_bin" ]; then
> >> +     time_command="$test_time_bin -a -o $log_file"
> >> +else
> >> +     time_command=""
> >> +fi
> >> +
> >>  for a in test_urcu_gc test_urcu_signal_gc test_urcu_mb_gc test_urcu_qsbr_gc \
> >>       test_urcu_lgc test_urcu_signal_lgc test_urcu_mb_lgc test_urcu_qsbr_lgc \
> >>       test_urcu test_urcu_signal test_urcu_mb test_urcu_qsbr \
> >>       test_rwlock test_perthreadlock test_mutex; do
> >> -     echo "./${a} $*" | tee -a runall.detail.log
> >> -     /usr/bin/time -a -o runall.detail.log ./${a} $*
> >> +     echo "./${a} $*" | tee -a "$log_file"
> >> +     $time_command ./${a} $*
> >>  done
> >>
> >> --
> >> 1.7.1
> >>
> >>
> >> _______________________________________________
> >> lttng-dev mailing list
> >> lttng-dev at lists.lttng.org
> >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> >
> > --
> > Mathieu Desnoyers
> > Operating System Efficiency R&D Consultant
> > EfficiOS Inc.
> > http://www.efficios.com

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list