1
0
Fork 0
dispatcher/bash_scripts/suite_testing.sh
2025-03-31 19:57:16 +03:00

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"