Bug 14245

Summary: [FR] wait_test()
Product: Sisyphus Reporter: Michael Shigorin <mike>
Component: libshellAssignee: Alexey Gladkov <legion>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P2 CC: inger, legion
Version: unstable   
Hardware: all   
OS: Linux   

Description Michael Shigorin 2008-01-30 11:45:06 MSK
Возможно ли добавить в libshell такую функцию для конечного периодического теста
с таймаутом? (название, возможно, неоптимальное...)

# $1 is a test (e.g. "-s" for "non-empty file")
# $2 is an object to apply test to (e.g. a filename)
# $3 is timeout (5 by default; e.g. "10")
# $4 is a pause (1 sec by default; e.g. "0.1")
wait_test()
{
    [ -n "$1" -a -n "$2 ] || return
    tries=${3:-5}
    pause=${4:-1}
    for i in `seq 1 $tries`; do
        [ "$1" "$2" ] && break
        sleep $pause
    done
}

В некоторых ситуациях может хотеться поспать "перед", а не
"после", но это можно компенсировать добавлением своего sleep
перед вызовом данной функции.

Пример ситуации, когда понадобилось -- alterator-ovz:

alt_new()
{
# ...
    запускаем_длинную_команду_в_фоне \
            > $LOG_DIR/$in_profile 2>&1" &
# а вот здесь можем вернуться слишком рано 
# и за этим логом следить не предложат
    for i in `seq 1 5`; do
        [ -s "$LOG_DIR/$in_profile" ] && break
        sleep 1
    done
# но мы хитрей :)
    echo '()'
}
Comment 1 Alexey Gladkov 2009-02-27 13:57:03 MSK
(В ответ на комментарий №0)
> Пример ситуации, когда понадобилось -- alterator-ovz:
> 
> alt_new()
> {
> # ...
>     запускаем_длинную_команду_в_фоне \
>             > $LOG_DIR/$in_profile 2>&1" &

Почему после этого не сказать wait и после этого проверить файл ?

> # а вот здесь можем вернуться слишком рано 
> # и за этим логом следить не предложат
>     for i in `seq 1 5`; do
>         [ -s "$LOG_DIR/$in_profile" ] && break
>         sleep 1
>     done
> # но мы хитрей :)
>     echo '()'
> }
Comment 2 Michael Shigorin 2009-03-03 19:11:44 MSK
Уже не помню, но про wait знал и тогда.
Comment 3 Alexey Gladkov 2009-03-03 19:18:58 MSK
(В ответ на комментарий №2)
> Уже не помню, но про wait знал и тогда.

Тогда закрой.
Comment 4 Michael Shigorin 2009-03-10 20:33:36 MSK
Хорошо.