diff --git a/cts/Makefile.am b/cts/Makefile.am index a6bc3be9c4..441e266567 100644 --- a/cts/Makefile.am +++ b/cts/Makefile.am @@ -1,104 +1,105 @@ # # Copyright 2001-2019 the Pacemaker project contributors # # The version control history for this file may have further details. # # This source code is licensed under the GNU General Public License version 2 # or later (GPLv2+) WITHOUT ANY WARRANTY. # MAINTAINERCLEANFILES = Makefile.in noinst_SCRIPTS = cluster_test \ OCFIPraTest.py # Commands intended to be run only via other commands halibdir = $(CRM_DAEMON_DIR) dist_halib_SCRIPTS = cts-log-watcher \ cts-support # Test commands and globally applicable test files should be in $(testdir), # and command-specific test data should be in a command-specific subdirectory. testdir = $(datadir)/$(PACKAGE)/tests test_SCRIPTS = cts-cli \ cts-coverage \ cts-exec \ cts-fencing \ cts-regression \ cts-scheduler dist_test_DATA = README.md \ valgrind-pcmk.suppressions ctslibdir = $(pythondir)/cts ctslib_PYTHON = __init__.py \ CIB.py \ cib_xml.py \ CM_common.py \ CM_corosync.py \ CTSaudits.py \ CTSscenarios.py \ CTStests.py \ environment.py \ logging.py \ patterns.py \ remote.py \ watcher.py nodist_ctslib_PYTHON = CTS.py \ CTSvars.py ctsdir = $(testdir)/cts cts_DATA = pacemaker-cts-dummyd@.service +dist_cts_DATA = cts.conf if BUILD_UPSTART -dist_cts_DATA = pacemaker-cts-dummyd.conf +dist_cts_DATA += pacemaker-cts-dummyd.conf endif cts_SCRIPTS = CTSlab.py \ cts \ fence_dummy \ LSBDummy \ lxc_autogen.sh \ pacemaker-cts-dummyd clidir = $(testdir)/cli dist_cli_DATA = cli/crm_diff_new.xml \ cli/crm_diff_old.xml \ cli/regression.acls.exp \ cli/regression.dates.exp \ cli/regression.rules.exp \ cli/regression.tools.exp \ cli/regression.upgrade.exp \ cli/regression.validity.exp PE_TESTS = $(wildcard scheduler/*.scores) pedir = $(testdir)/scheduler dist_pe_DATA = $(PE_TESTS) \ $(PE_TESTS:%.scores=%.xml) \ $(PE_TESTS:%.scores=%.exp) \ $(PE_TESTS:%.scores=%.dot) \ $(PE_TESTS:%.scores=%.summary) \ $(wildcard scheduler/*.stderr) # For "make check", run a single scheduler test TESTS = scheduler/bug-rh-1097457.xml TEST_EXTENSIONS = .xml XML_LOG_COMPILER = ./cts-scheduler AM_XML_LOG_FLAGS = --io-dir="$(srcdir)/scheduler" \ --out-dir="$(builddir)" \ -V --run scheduler-list: @for T in "$(srcdir)"/scheduler/*.xml; do \ echo $$(basename $$T .xml); \ done CLEANFILES = $(builddir)/.regression.failed.diff clean-local: rm -f scheduler/*.pe.* SUBDIRS = benchmark cts-support-install: cts-support ./cts-support install cts-support-uninstall: cts-support ./cts-support uninstall diff --git a/cts/cts-support.in b/cts/cts-support.in index 8a0822fa0e..a67689aad0 100644 --- a/cts/cts-support.in +++ b/cts/cts-support.in @@ -1,149 +1,167 @@ #!/bin/sh # # Installer for support files needed by Pacemaker's Cluster Test Suite # # Copyright 2018-2019 the Pacemaker project contributors # # The version control history for this file may have further details. # # This source code is licensed under the GNU General Public License version 2 # or later (GPLv2+) WITHOUT ANY WARRANTY. # USAGE_TEXT="Usage: $0 " HELP_TEXT="$USAGE_TEXT Commands (must be run as root): install Install support files needed by Pacemaker CTS uninstall Remove support files needed by Pacemaker CTS" # These constants must track crm_exit_t values CRM_EX_OK=0 CRM_EX_ERROR=1 CRM_EX_USAGE=64 UNIT_DIR="@systemdsystemunitdir@" +RUNTIME_UNIT_DIR="@runstatedir@/systemd/system" LIBEXEC_DIR="@libexecdir@/pacemaker" INIT_DIR="@INITDIR@" SBIN_DIR="@sbindir@" DATA_DIR="@datadir@/pacemaker/tests/cts" UPSTART_DIR="/etc/init" DUMMY_DAEMON="pacemaker-cts-dummyd" DUMMY_DAEMON_UNIT="pacemaker-cts-dummyd@.service" +COROSYNC_RUNTIME_UNIT="corosync.service.d" +COROSYNC_RUNTIME_CONF="cts.conf" LSB_DUMMY="LSBDummy" UPSTART_DUMMY="pacemaker-cts-dummyd.conf" FENCE_DUMMY="fence_dummy" FENCE_DUMMY_ALIASES="fence_dummy_auto_unfence fence_dummy_no_reboot" # If the install directory doesn't exist, assume we're in a build directory. if [ ! -d "$DATA_DIR" ]; then # If readlink supports -e (i.e. GNU), use it. readlink -e / >/dev/null 2>/dev/null if [ $? -eq 0 ]; then DATA_DIR="$(dirname "$(readlink -e "$0")")" else DATA_DIR="$(dirname "$0")" fi fi usage() { echo "Error:" "$@" echo "$USAGE_TEXT" exit $CRM_EX_USAGE } must_be_root() { if ! [ "$(id -u)" = "0" ]; then usage "this command must be run as root" return $CRM_EX_ERROR fi return $CRM_EX_OK } support_uninstall() { must_be_root || return $CRM_EX_ERROR if [ -e "$UNIT_DIR/$DUMMY_DAEMON_UNIT" ]; then echo "Removing $UNIT_DIR/$DUMMY_DAEMON_UNIT ..." rm -f "$UNIT_DIR/$DUMMY_DAEMON_UNIT" systemctl daemon-reload # Ignore failure fi + if [ -e "$RUNTIME_UNIT_DIR/$COROSYNC_RUNTIME_UNIT" ]; then + echo "Removing $RUNTIME_UNIT_DIR/$COROSYNC_RUNTIME_UNIT ..." + rm -rf "$RUNTIME_UNIT_DIR/$COROSYNC_RUNTIME_UNIT" + systemctl daemon-reload # Ignore failure + fi + for FILE in \ "$LIBEXEC_DIR/$DUMMY_DAEMON" \ "$UPSTART_DIR/$UPSTART_DUMMY" \ "$SBIN_DIR/$FENCE_DUMMY" \ "$INIT_DIR/$LSB_DUMMY" do if [ -e "$FILE" ]; then echo "Removing $FILE ..." rm -f "$FILE" fi done for ALIAS in $FENCE_DUMMY_ALIASES; do \ FILE="$SBIN_DIR/$ALIAS" if [ -L "$FILE" ] || [ -e "$FILE" ]; then echo "Removing $FILE ..." rm -f "$FILE" fi done return $CRM_EX_OK } support_install() { support_uninstall || return $CRM_EX_ERROR cd "$DATA_DIR" || return $CRM_EX_ERROR if [ -d "$UNIT_DIR" ]; then echo "Installing $DUMMY_DAEMON ..." mkdir -p "$LIBEXEC_DIR" install -m 0755 "$DUMMY_DAEMON" "$LIBEXEC_DIR" || return $CRM_EX_ERROR echo "Installing $DUMMY_DAEMON_UNIT ..." install -m 0644 "$DUMMY_DAEMON_UNIT" "$UNIT_DIR" || return $CRM_EX_ERROR systemctl daemon-reload # Ignore failure fi + if [ -d "$RUNTIME_UNIT_DIR" ]; then + + echo "Installing $COROSYNC_RUNTIME_CONF to $RUNTIME_UNIT_DIR/$COROSYNC_RUNTIME_UNIT ..." + mkdir -p "$RUNTIME_UNIT_DIR/$COROSYNC_RUNTIME_UNIT" + install -m 0644 "$COROSYNC_RUNTIME_CONF" "$RUNTIME_UNIT_DIR/$COROSYNC_RUNTIME_UNIT" || return $CRM_EX_ERROR + + systemctl daemon-reload # Ignore failure + fi + echo "Installing $FENCE_DUMMY to $SBIN_DIR ..." mkdir -p "$SBIN_DIR" install -m 0755 "$FENCE_DUMMY" "$SBIN_DIR" || return $CRM_EX_ERROR for alias in $FENCE_DUMMY_ALIASES; do \ echo "Installing $alias to $SBIN_DIR ..." ln -s "$FENCE_DUMMY" "$SBIN_DIR/$alias" || return $CRM_EX_ERROR done echo "Installing $LSB_DUMMY to $INIT_DIR ..." mkdir -p "$INIT_DIR" install -m 0755 "$LSB_DUMMY" "$INIT_DIR" || return $CRM_EX_ERROR if [ -d "$UPSTART_DIR" ] && [ -f "$UPSTART_DUMMY" ]; then echo "Installing $UPSTART_DUMMY to $UPSTART_DIR ..." install -m 0644 "$UPSTART_DUMMY" "$UPSTART_DIR" || return $CRM_EX_ERROR fi return $CRM_EX_OK } COMMAND="" while [ $# -gt 0 ] ; do case "$1" in --help) echo "$HELP_TEXT" exit $CRM_EX_OK ;; install|uninstall) COMMAND="$1" shift ;; *) usage "unknown option '$1'" ;; esac done case "$COMMAND" in install) support_install ;; uninstall) support_uninstall ;; *) usage "must specify command" ;; esac diff --git a/cts/cts.conf b/cts/cts.conf new file mode 100644 index 0000000000..2f59b89dcb --- /dev/null +++ b/cts/cts.conf @@ -0,0 +1,3 @@ +[Service] +Restart=always +RestartSec=70