diff --git a/fluent-package/apt/systemd-test/downgrade-to-v4.sh b/fluent-package/apt/systemd-test/downgrade-to-v4.sh new file mode 100755 index 000000000..b40c13d49 --- /dev/null +++ b/fluent-package/apt/systemd-test/downgrade-to-v4.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +set -exu + +. $(dirname $0)/../commonvar.sh + +# Install v4 +sudo apt install -y curl ca-certificates +curl -fsSL https://toolbelt.treasuredata.com/sh/install-${distribution}-${code_name}-td-agent4.sh | sh + +# td-agent is running +systemctl status --no-pager td-agent + +# fluent-package 5 (LTS) +#curl -fsSL https://toolbelt.treasuredata.com/sh/install-${distribution}-${code_name}-fluent-package5-lts.sh | sh +#sudo apt purge -y fluent-lts-apt-source + +# Ensure to install the current +sudo apt install -V -y \ + /vagrant/${distribution}/pool/${code_name}/${channel}/*/*/fluent-package_*_${architecture}.deb + +# td-agent.service is already masked (link to /dev/null), and remove td-agent.service alias not to conflict with v4 +sudo systemctl unmask td-agent + +# Keep log and .conf and so on. dpkg reports "rc fluent-package" and "rc td-agent" status. +sudo apt remove -y fluent-package td-agent + +# fluentd.service is already masked (link to /dev/null), then remove it. +sudo systemctl unmask fluentd + +# Drop symbolic links and recreate real directory. +sudo rm -f /var/log/td-agent +sudo rm -f /etc/td-agent +sudo mkdir -p /var/log/td-agent +sudo chown td-agent:td-agent /var/log/td-agent + +# Migrate logs +sudo mv /var/log/fluent/* /var/log/td-agent/ + +# Reinstall v4, but /etc/td-agent is empty. +curl -fsSL https://toolbelt.treasuredata.com/sh/install-${distribution}-${code_name}-td-agent4.sh | sh +sudo mv /etc/fluent/td-agent.conf /etc/td-agent/ + +sudo systemctl enable td-agent +sudo systemctl start td-agent + +# Test: service status +(! systemctl status --no-pager fluentd) +(systemctl status --no-pager td-agent) + +# Test: config migration +test -d /etc/td-agent +(! test -h /etc/td-agent/fluentd.conf) +test -e /etc/td-agent/td-agent.conf + +# Test: log file migration +test -d /var/log/td-agent +test -e /var/log/td-agent/td-agent.log + +# Test: bin file migration +test -x /usr/sbin/td-agent +test -x /usr/sbin/td-agent-gem + +# Test: environmental variables +pid=$(systemctl show td-agent --property=MainPID --value) +env_vars=$(sudo sed -e 's/\x0/\n/g' /proc/$pid/environ) +test $(eval $env_vars && echo $HOME) = "/var/lib/td-agent" +test $(eval $env_vars && echo $LOGNAME) = "td-agent" +test $(eval $env_vars && echo $USER) = "td-agent" +test $(eval $env_vars && echo $FLUENT_CONF) = "/etc/td-agent/td-agent.conf" +test $(eval $env_vars && echo $TD_AGENT_LOG_FILE) = "/var/log/td-agent/td-agent.log" +test $(eval $env_vars && echo $FLUENT_PLUGIN) = "/etc/td-agent/plugin" +test $(eval $env_vars && echo $FLUENT_SOCKET) = "/var/run/td-agent/td-agent.sock" + +# Test: No error logs +# (v4 default config outputs 'warn' log, so we should check only 'error' and 'fatal' logs) +sleep 3 +test -e /var/log/td-agent/td-agent.log +(! grep -e '\[error\]' -e '\[fatal\]' /var/log/td-agent/td-agent.log) diff --git a/fluent-package/apt/systemd-test/test.sh b/fluent-package/apt/systemd-test/test.sh index 4b06b6c97..c9d5146db 100755 --- a/fluent-package/apt/systemd-test/test.sh +++ b/fluent-package/apt/systemd-test/test.sh @@ -27,6 +27,7 @@ if [ ! $vm = "debian-bookworm" ]; then test_filenames+=( update-from-v4.sh update-to-next-version-with-backward-compat-for-v4.sh + downgrade-to-v4.sh ) fi diff --git a/fluent-package/yum/systemd-test/downgrade-to-v4.sh b/fluent-package/yum/systemd-test/downgrade-to-v4.sh new file mode 100755 index 000000000..2914baceb --- /dev/null +++ b/fluent-package/yum/systemd-test/downgrade-to-v4.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +set -exu + +. $(dirname $0)/commonvar.sh + +# Install v4 +case ${distribution} in + amazon) + curl -fsSL https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent.sh | sh + ;; + *) + curl -fsSL https://toolbelt.treasuredata.com/sh/install-redhat-td-agent4.sh | sh + ;; +esac + +# Not auto started +(!systemctl status --no-pager td-agent) + +# Start service to generate log +sudo systemctl enable --now td-agent +sudo systemctl stop td-agent + +# Install the current +sudo $DNF install -y \ + /vagrant/${distribution}/pool/${code_name}/${channel}/*/*/fluent-package_*_${architecture}.deb + +sudo systemctl daemon-reload +sudo systemctl enable --now fluentd +sudo systemctl stop fluentd + +# Remove td-agent.service alias not to conflict with v4 +sudo systemctl disable td-agent + +sudo $DNF remove fluent-package + +sudo rm -f /var/log/td-agent +sudo rm -f /etc/td-agent +sudo mkdir -p /var/log/td-agent +sudo chown td-agent:td-agent /var/log/td-agent + +sudo mv /var/log/fluent/* /var/log/td-agent/ + +# Downgrade to v4 +case ${distribution} in + amazon) + curl -fsSL https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent.sh | sh + ;; + *) + curl -fsSL https://toolbelt.treasuredata.com/sh/install-redhat-td-agent4.sh | sh + ;; +esac + +sudo systemctl daemon-reload +sudo systemctl enable --now td-agent + +# Test: service status +(!systemctl status --no-pager fluentd) +(systemctl status --no-pager td-agent) + +# Test: config migration +test -d /etc/td-agent +(! test -h /etc/td-agent/fluentd.conf) +test -e /etc/td-agent/td-agent.conf + +# Test: log file migration +test -d /var/log/td-agent +test -e /var/log/td-agent/td-agent.log + +# Test: bin file migration +test -x /usr/sbin/td-agent +test -x /usr/sbin/td-agent-gem + +# Test: environmental variables +pid=$(systemctl show td-agent --property=MainPID --value) +env_vars=$(sudo sed -e 's/\x0/\n/g' /proc/$pid/environ) +test $(eval $env_vars && echo $HOME) = "/var/lib/td-agent" +test $(eval $env_vars && echo $LOGNAME) = "td-agent" +test $(eval $env_vars && echo $USER) = "td-agent" +test $(eval $env_vars && echo $FLUENT_CONF) = "/etc/td-agent/td-agent.conf" +test $(eval $env_vars && echo $TD_AGENT_LOG_FILE) = "/var/log/td-agent/td-agent.log" +test $(eval $env_vars && echo $FLUENT_PLUGIN) = "/etc/td-agent/plugin" +test $(eval $env_vars && echo $FLUENT_SOCKET) = "/var/run/td-agent/td-agent.sock" + +# Test: No error logs +# (v4 default config outputs 'warn' log, so we should check only 'error' and 'fatal' logs) +sleep 3 +test -e /var/log/td-agent/td-agent.log +(! grep -e '\[error\]' -e '\[fatal\]' /var/log/td-agent/td-agent.log) diff --git a/fluent-package/yum/systemd-test/test.sh b/fluent-package/yum/systemd-test/test.sh index f254cea5b..f048db8fb 100755 --- a/fluent-package/yum/systemd-test/test.sh +++ b/fluent-package/yum/systemd-test/test.sh @@ -22,6 +22,7 @@ test_filenames=( update-from-v4.sh update-to-next-version.sh update-to-next-version-with-backward-compat-for-v4.sh + downgrade-to-v4.sh ) for yum_repo_type in local v5 lts; do