27 lines
2.1 KiB
Bash
Executable file
27 lines
2.1 KiB
Bash
Executable file
#!/bin/bash
|
|
echo "Тестирование доступности страниц в вёб-интерфейсе на сервере."
|
|
domain="git.org.ru" && source info_param.sh
|
|
file="DIRECTORY_TREE.md" # две тестовые страницы для каждого проекта
|
|
[ "$domain" == "hub.mos.ru" ] && folder="blob" || folder="src/branch"
|
|
[ "$domain" == "hub.mos.ru" ] && wiki_home="-/wikis/home" || wiki_home="wiki"
|
|
# подготовка массива строк — адрес страницы и название файла через пробел
|
|
for repo in {1..6} {dispatcher,pomodoro,older-tomato-theme,color-tomato-theme}; do
|
|
case "$repo" in [1-6]) owner="pomodoro" ;; *) owner="golovin" ;; esac
|
|
pages+=("'https://$domain/$owner/$repo/$folder/master/$file' '$file'")
|
|
pages+=("'https://$domain/$owner/$repo/$wiki_home' 'Home'")
|
|
done
|
|
# тестирование доступности страниц
|
|
function testing {
|
|
# название файла должно быть в заголовке страницы, иначе конвейер должен вернуть ошибку,
|
|
# обычный цвет для существующих страниц, светло-красный цвет для несуществующих страниц
|
|
curl -f "$1" 2>/dev/null | grep -q "<title>.*$2.*</title>" && color="0" || color="91"
|
|
# текст соответствующего цвета и адрес страницы
|
|
printf "\e[${color}m%s\e[0m %s\n" "Страница:" "$1"
|
|
}
|
|
export -f testing
|
|
time_ms="$(date '+%s%3N')"
|
|
# вывод строк массива, параллельный запуск функции и сортировка результатов
|
|
printf "testing %s\0" "${pages[@]}" | xargs -n1 -0 -P0 bash -c | sort -k2
|
|
# замер продолжительности выполнения в миллисекундах, пересчёт в минуты, секунды и миллисекунды
|
|
tms="$(($(date '+%s%3N') - time_ms))" && min="$((tms / 1000 / 60))" && sec="$((tms / 1000 % 60))"
|
|
ms="$((tms % 1000))" && printf 'Общее время выполнения: %02d:%02d.%03d мс.\n' "$min" "$sec" "$ms"
|