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

Simon Marchi simon.marchi at polymtl.ca
Thu Nov 15 00:25:09 EST 2012


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.

> 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



More information about the lttng-dev mailing list