diff --git a/tests/vagrant/Vagrantfile b/tests/vagrant/Vagrantfile index 98c7b371e3..68f9f831ae 100644 --- a/tests/vagrant/Vagrantfile +++ b/tests/vagrant/Vagrantfile @@ -15,6 +15,7 @@ Vagrant.configure("2") do |config| config.vm.provision "file", source: "../../../DocSpace-buildtools/install/OneClickInstall/.", destination: "/tmp/docspace/" end + config.vm.provision "file", source: "../../../DocSpace-buildtools/install/common/systemd/build.sh", destination: "/tmp/docspace/build.sh" config.vm.provision "shell", path: './install.sh', :args => "#{ENV['DOWNLOAD_SCRIPT']} #{ENV['TEST_REPO']} #{ENV['ARGUMENTS']}" # Prevent SharedFoldersEnableSymlinksCreate errors diff --git a/tests/vagrant/install.sh b/tests/vagrant/install.sh index 76802eb254..9e45cb2ab7 100644 --- a/tests/vagrant/install.sh +++ b/tests/vagrant/install.sh @@ -1,91 +1,45 @@ #!/bin/bash -set -ex +set -e while [ "$1" != "" ]; do - case $1 in + case $1 in + -ds | --download-scripts ) + if [ "$2" != "" ]; then + DOWNLOAD_SCRIPTS=$2 + shift + fi + ;; - -ds | --download-scripts ) - if [ "$2" != "" ]; then - DOWNLOAD_SCRIPTS=$2 - shift - fi - ;; + -arg | --arguments ) + if [ "$2" != "" ]; then + ARGUMENTS=$2 + shift + fi + ;; - -arg | --arguments ) - if [ "$2" != "" ]; then - ARGUMENTS=$2 - shift - fi - ;; + -li | --local-install ) + if [ "$2" != "" ]; then + LOCAL_INSTALL=$2 + shift + fi + ;; - - -pi | --production-install ) - if [ "$2" != "" ]; then - PRODUCTION_INSTALL=$2 - shift - fi - ;; - - -li | --local-install ) - if [ "$2" != "" ]; then - LOCAL_INSTALL=$2 - shift - fi - ;; - - -lu | --local-update ) - if [ "$2" != "" ]; then - LOCAL_UPDATE=$2 - shift - fi - ;; - - -tr | --test-repo ) - if [ "$2" != "" ]; then - TEST_REPO_ENABLE=$2 - shift - fi - ;; - - - esac - shift + -tr | --test-repo ) + if [ "$2" != "" ]; then + TEST_REPO_ENABLE=$2 + shift + fi + ;; + esac + shift done export TERM=xterm-256color^M -SERVICES_SYSTEMD=( - "docspace-api.service" - "docspace-doceditor.service" - "docspace-studio-notify.service" - "docspace-files.service" - "docspace-notify.service" - "docspace-studio.service" - "docspace-backup-background.service" - "docspace-files-services.service" - "docspace-people-server.service" - "docspace-backup.service" - "docspace-healthchecks.service" - "docspace-socket.service" - "docspace-clear-events.service" - "docspace-login.service" - "docspace-ssoauth.service" - "ds-converter.service" - "ds-docservice.service" - "ds-metrics.service") - function common::get_colors() { - COLOR_BLUE=$'\e[34m' - COLOR_GREEN=$'\e[32m' - COLOR_RED=$'\e[31m' - COLOR_RESET=$'\e[0m' - COLOR_YELLOW=$'\e[33m' - export COLOR_BLUE - export COLOR_GREEN - export COLOR_RED - export COLOR_RESET - export COLOR_YELLOW + export LINE_SEPARATOR="-----------------------------------------" + export COLOR_BLUE=$'\e[34m' COLOR_GREEN=$'\e[32m' COLOR_RED=$'\e[31m' COLOR_RESET=$'\e[0m' COLOR_YELLOW=$'\e[33m' } ############################################################################################# @@ -98,13 +52,10 @@ function common::get_colors() { # None ############################################################################################# function check_hw() { - local FREE_RAM=$(free -h) - local FREE_CPU=$(nproc) - echo "${COLOR_RED} ${FREE_RAM} ${COLOR_RESET}" - echo "${COLOR_RED} ${FREE_CPU} ${COLOR_RESET}" + echo "${COLOR_RED} $(free -h) ${COLOR_RESET}" + echo "${COLOR_RED} $(nproc) ${COLOR_RESET}" } - ############################################################################################# # Add nexus repositories for test packages for .deb and .rpm packages # Globals: None @@ -149,12 +100,8 @@ function prepare_vm() { ;; debian) - if [ "$VERSION_CODENAME" == "bookworm" ]; then - apt-get update -y - apt install -y curl gnupg - fi - apt-get remove postfix -y - echo "${COLOR_GREEN}☑ PREPAVE_VM: Postfix was removed${COLOR_RESET}" + [ "$VERSION_CODENAME" == "bookworm" ] && apt-get update -y && apt install -y curl gnupg + apt-get remove postfix -y && echo "${COLOR_GREEN}☑ PREPAVE_VM: Postfix was removed${COLOR_RESET}" [[ "${TEST_REPO_ENABLE}" == 'true' ]] && add-repo-deb ;; @@ -163,10 +110,7 @@ function prepare_vm() { ;; centos) - if [ "$VERSION_ID" == "9" ]; then - update-crypto-policies --set LEGACY - echo "${COLOR_GREEN}☑ PREPAVE_VM: sha1 gpg key chek enabled${COLOR_RESET}" - fi + [ "$VERSION_ID" == "8" ] && sed -i 's|^mirrorlist=|#&|; s|^#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|' /etc/yum.repos.d/CentOS-* [[ "${TEST_REPO_ENABLE}" == 'true' ]] && add-repo-rpm yum -y install centos*-release ;; @@ -175,21 +119,16 @@ function prepare_vm() { echo "${COLOR_RED}Failed to determine Linux dist${COLOR_RESET}"; exit 1 ;; esac - else echo "${COLOR_RED}File /etc/os-release doesn't exist${COLOR_RESET}"; exit 1 fi # Clean up home folder rm -rf /home/vagrant/* - - if [ -d /tmp/docspace ]; then - mv /tmp/docspace/* /home/vagrant - fi + [ -d /tmp/docspace ] && mv /tmp/docspace/* /home/vagrant echo '127.0.0.1 host4test' | sudo tee -a /etc/hosts echo "${COLOR_GREEN}☑ PREPAVE_VM: Hostname was setting up${COLOR_RESET}" - } ############################################################################################# @@ -202,34 +141,23 @@ function prepare_vm() { # Script log ############################################################################################# function install_docspace() { - if [ "${DOWNLOAD_SCRIPTS}" == 'true' ]; then - wget https://download.onlyoffice.com/docspace/docspace-install.sh - else - sed 's/set -e/set -xe/' -i *.sh - fi - - printf "N\nY\nY" | bash docspace-install.sh ${ARGUMENTS} - - if [[ $? != 0 ]]; then - echo "Exit code non-zero. Exit with 1." - exit 1 - else - echo "Exit code 0. Continue..." - fi + [[ "${DOWNLOAD_SCRIPTS}" == 'true' ]] && wget https://download.onlyoffice.com/docspace/docspace-install.sh || sed 's/set -e/set -xe/' -i *.sh + bash docspace-install.sh package ${ARGUMENTS} || { echo "Exit code non-zero. Exit with 1."; exit 1; } + echo "Exit code 0. Continue..." } ############################################################################################# # Healthcheck function for systemd services # Globals: -# SERVICES_SYSTEMD +# None # Arguments: # None # Outputs: # Message about service status ############################################################################################# function healthcheck_systemd_services() { - for service in ${SERVICES_SYSTEMD[@]} - do + for service in ${SERVICES_SYSTEMD[@]}; do + [[ "$service" == "docspace-migration-runner.service" ]] && continue; if systemctl is-active --quiet ${service}; then echo "${COLOR_GREEN}☑ OK: Service ${service} is running${COLOR_RESET}" else @@ -239,7 +167,6 @@ function healthcheck_systemd_services() { done } - ############################################################################################# # Set output if some services failed # Globals: @@ -261,7 +188,7 @@ function healthcheck_general_status() { ############################################################################################# # Get logs for all services # Globals: -# $SERVICES_SYSTEMD +# None # Arguments: # None # Outputs: @@ -272,83 +199,27 @@ function healthcheck_general_status() { # This function succeeds even if the file for cat was not found. For that use ${SKIP_EXIT} variable ############################################################################################# function services_logs() { + SERVICES_SYSTEMD=($(awk '/SERVICE_NAME=\(/{flag=1; next} /\)/{flag=0} flag' "build.sh" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | sed 's/^/docspace-/' | sed 's/$/.service/')) + SERVICES_SYSTEMD+=("ds-converter.service" "ds-docservice.service" "ds-metrics.service") + for service in ${SERVICES_SYSTEMD[@]}; do - echo ----------------------------------------- - echo "${COLOR_GREEN}Check logs for systemd service: $service${COLOR_RESET}" - echo ---------------------- ------------------- - EXIT_CODE=0 - journalctl -u $service || true + echo $LINE_SEPARATOR && echo "${COLOR_GREEN}Check logs for systemd service: $service${COLOR_RESET}" && echo $LINE_SEPARATOR + journalctl -u $service -n 30 || true done - local MAIN_LOGS_DIR="/var/log/onlyoffice" - local DOCSPACE_LOGS_DIR="${MAIN_LOGS_DIR}/docspace" - local DOCUMENTSERVER_LOGS_DIR="${MAIN_LOGS_DIR}/documentserver" - local DOCSERVICE_LOGS_DIR="${DOCUMENTSERVER_LOGS_DIR}/docservice" - local CONVERTER_LOGS_DIR="${DOCUMENTSERVER_LOGS_DIR}/converter" - local METRICS_LOGS_DIR="${DOCUMENTSERVER_LOGS_DIR}/metrics" - - ARRAY_MAIN_SERVICES_LOGS=($(ls ${MAIN_LOGS_DIR} | grep log | sed 's/web.sql.log//;s/web.api.log//;s/nginx.*//' )) - ARRAY_DOCSPACE_LOGS=($(ls ${DOCSPACE_LOGS_DIR})) - ARRAY_DOCSERVICE_LOGS=($(ls ${DOCSERVICE_LOGS_DIR})) - ARRAY_CONVERTER_LOGS=($(ls ${CONVERTER_LOGS_DIR})) - ARRAY_METRICS_LOGS=($(ls ${METRICS_LOGS_DIR})) - - echo "-----------------------------------" - echo "${COLOR_YELLOW} Check logs for main services ${COLOR_RESET}" - echo "-----------------------------------" - for file in ${ARRAY_MAIN_SERVICES_LOGS[@]}; do - echo --------------------------------------- - echo "${COLOR_GREEN}logs from file: ${file}${COLOR_RESET}" - echo --------------------------------------- - cat ${MAIN_LOGS_DIR}/${file} || true - done - - echo "-----------------------------------" - echo "${COLOR_YELLOW} Check logs for Docservice ${COLOR_RESET}" - echo "-----------------------------------" - for file in ${ARRAY_DOCSERVICE_LOGS[@]}; do - echo --------------------------------------- - echo "${COLOR_GREEN}logs from file: ${file}${COLOR_RESET}" - echo --------------------------------------- - cat ${DOCSERVICE_LOGS_DIR}/${file} || true - done - - echo "-----------------------------------" - echo "${COLOR_YELLOW} Check logs for Converter ${COLOR_RESET}" - echo "-----------------------------------" - for file in ${ARRAY_CONVERTER_LOGS[@]}; do - echo --------------------------------------- - echo "${COLOR_GREEN}logs from file ${file}${COLOR_RESET}" - echo --------------------------------------- - cat ${CONVERTER_LOGS_DIR}/${file} || true - done - - echo "-----------------------------------" - echo "${COLOR_YELLOW} Start logs for Metrics ${COLOR_RESET}" - echo "-----------------------------------" - for file in ${ARRAY_METRICS_LOGS[@]}; do - echo --------------------------------------- - echo "${COLOR_GREEN}logs from file ${file}${COLOR_RESET}" - echo --------------------------------------- - cat ${METRICS_LOGS_DIR}/${file} || true - done + local DOCSPACE_LOGS_DIR="/var/log/onlyoffice/docspace" + local DOCUMENTSERVER_LOGS_DIR="/var/log/onlyoffice/documentserver" - echo "-----------------------------------" - echo "${COLOR_YELLOW} Start logs for DocSpace ${COLOR_RESET}" - echo "-----------------------------------" - for file in ${ARRAY_DOCSPACE_LOGS[@]}; do - echo --------------------------------------- - echo "${COLOR_GREEN}logs from file ${file}${COLOR_RESET}" - echo --------------------------------------- - cat ${DOCSPACE_LOGS_DIR}/${file} || true + for LOGS_DIR in "${DOCSPACE_LOGS_DIR}" "${DOCUMENTSERVER_LOGS_DIR}"; do + echo $LINE_SEPARATOR && echo "${COLOR_YELLOW}Check logs for $(basename "${LOGS_DIR}"| tr '[:lower:]' '[:upper:]') ${COLOR_RESET}" && echo $LINE_SEPARATOR + + find "${LOGS_DIR}" -type f -name "*.log" ! -name "*sql*" ! -name "*nginx*" | while read -r FILE; do + echo $LINE_SEPARATOR && echo "${COLOR_GREEN}Logs from file: ${FILE}${COLOR_RESET}" && echo $LINE_SEPARATOR + tail -30 "${FILE}" || true + done done } -function healthcheck_docker_installation() { - exit 0 -} - - main() { common::get_colors prepare_vm