1
0
Fork 0
dispatcher/bash_scripts/repo_testing.smpl.sh
2025-02-28 19:13:07 +03:00

35 lines
2 KiB
Bash
Executable file

#!/bin/bash
echo "Образец скрипта для тестирования доступности страниц в вёб-интерфейсе на сервере."
domain="git.org.ru" && source info_param.sh
# две страницы для тестирования
file="DIRECTORY_TREE.md"
if [ "$domain" == "hub.mos.ru" ]; then
folder="blob" && wiki_home="-/wikis/home"
else
folder="src/branch" && wiki_home="wiki"
fi
# подготовка массива строк — адрес страницы и название файла через пробел
for repo in {1..6}; do
#pages+=("'https://$domain/golovin/$repo/$folder/master/$file' '$file'")
pages+=("'https://$domain/pomodoro/$repo/$folder/master/$file' '$file'")
pages+=("'https://$domain/pomodoro/$repo/$wiki_home' 'Home'")
done
for repo in {pomodoro,older-tomato-theme,color-tomato-theme}; do
pages+=("'https://$domain/golovin/$repo/$folder/master/$file' '$file'")
pages+=("'https://$domain/golovin/$repo/$wiki_home' 'Home'")
done
# тестирование доступности страниц
function testing {
# название файла должно находиться в заголовке страницы, иначе сервер должен вернуть ошибку
case "$(curl "$1" 2>/dev/null | grep -oP '(?<=<title>).*(?=</title>)' | grep -cF "$2")" in
0) color="91" ;; # светло-красный цвет для отсутствующих страниц
*) color="0" ;; # обычный цвет для всех остальных страниц
esac
# текст соответствующего цвета и адрес страницы
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 -r -k2
echo "Общее время выполнения: $(($(date '+%s%3N') - time_ms)) мс."