Skip to content

Commit

Permalink
systemtests: backport for parallel runs from master
Browse files Browse the repository at this point in the history
  • Loading branch information
pstorz committed Jan 15, 2020
1 parent 4ffb89f commit 19bfd24
Show file tree
Hide file tree
Showing 47 changed files with 538 additions and 123 deletions.
3 changes: 2 additions & 1 deletion core/scripts/bareos-ctl-dir.in
Expand Up @@ -11,7 +11,8 @@ export AWK="@AWK@"
export PIDOF="@PIDOF@"
export PGREP="@PGREP@"

BAREOS_DIRECTOR_BINARY="${BAREOS_BIN_DIR:-@sbindir@/bareos-dir}"
PIDDIR=${PIDDIR:-@piddir@}
BAREOS_DIRECTOR_BINARY="${BAREOS_DIRECTOR_BINARY:-@sbindir@/bareos-dir}"
export BAREOS_CONFIG_DIR=${BAREOS_CONFIG_DIR:-@confdir@}
BAREOS_DIRECTOR_PORT=${BAREOS_DIRECTOR_PORT:-@dir_port@}
BAREOS_DIRECTOR_USER=${BAREOS_DIRECTOR_USER:-@dir_user@}
Expand Down
18 changes: 10 additions & 8 deletions core/scripts/bareos-ctl-fd.in
Expand Up @@ -22,8 +22,10 @@ AWK=@AWK@
# easier to "steal" this code for the development
# environment where they are different.
#
BIN=@sbindir@/bareos-fd
PIDDIR=@piddir@


BAREOS_FILEDAEMON_BINARY=${BAREOS_FILEDAEMON_BINARY:-@sbindir@/bareos-fd}
PIDDIR=${PIDDIR:-@piddir@}
SUBSYSDIR=@subsysdir@

BAREOS_CONFIG_DIR=${BAREOS_CONFIG_DIR:-@confdir@}
Expand All @@ -49,7 +51,7 @@ fi

case "$1" in
start)
if [ -x ${BIN} ]; then
if [ -x ${BAREOS_FILEDAEMON_BINARY} ]; then
echo "Starting the $Bareos File daemon"
OPTIONS=''
if [ "${BAREOS_FD_USER}" != '' ]; then
Expand All @@ -65,17 +67,17 @@ case "$1" in
fi

if [ "x${VALGRIND_FD}" = "x1" ]; then
valgrind --leak-check=full ${BIN} -v $2 $3 ${OPTIONS}
valgrind --leak-check=full ${BAREOS_FILEDAEMON_BINARY} -v $2 $3 ${OPTIONS}
else
${BIN} -v $2 $3 ${OPTIONS}
${BAREOS_FILEDAEMON_BINARY} -v $2 $3 ${OPTIONS}
fi
fi
;;

stop)
if [ -x ${BIN} ]; then
if [ -x ${BAREOS_FILEDAEMON_BINARY} ]; then
echo "Stopping the $Bareos File daemon"
killproc ${BIN} ${BAREOS_FD_PORT}
killproc ${BAREOS_FILEDAEMON_BINARY} ${BAREOS_FD_PORT}
fi
;;

Expand All @@ -86,7 +88,7 @@ case "$1" in
;;

status)
[ -x ${BIN} ] && status ${BIN} ${BAREOS_FD_PORT}
[ -x ${BAREOS_FILEDAEMON_BINARY} ] && status ${BAREOS_FILEDAEMON_BINARY} ${BAREOS_FD_PORT}
exit $?
;;

Expand Down
16 changes: 8 additions & 8 deletions core/scripts/bareos-ctl-sd.in
Expand Up @@ -22,8 +22,8 @@ AWK=@AWK@
# easier to "steal" this code for the development
# environment where they are different.
#
BIN=@sbindir@/bareos-sd
export PIDDIR=@piddir@
BAREOS_STORAGEDAEMON_BINARY=${BAREOS_STORAGEDAEMON_BINARY:-@sbindir@/bareos-sd}
PIDDIR=${PIDDIR:-@piddir@}
SUBSYSDIR=@subsysdir@

BAREOS_CONFIG_DIR=${BAREOS_CONFIG_DIR:-@confdir@}
Expand All @@ -49,7 +49,7 @@ fi

case "$1" in
start)
if [ -x ${BIN} ]; then
if [ -x ${BAREOS_STORAGEDAEMON_BINARY} ]; then
echo "Starting the $Bareos Storage daemon"
OPTIONS=''
if [ "${BAREOS_SD_USER}" != '' ]; then
Expand All @@ -65,17 +65,17 @@ case "$1" in
fi

if [ "x${VALGRIND_SD}" = "x1" ]; then
valgrind --leak-check=full ${BIN} -v $2 $3 ${OPTIONS}
valgrind --leak-check=full ${BAREOS_STORAGEDAEMON_BINARY} -v $2 $3 ${OPTIONS}
else
${BIN} -v $2 $3 ${OPTIONS}
${BAREOS_STORAGEDAEMON_BINARY} -v $2 $3 ${OPTIONS}
fi
fi
;;

stop)
if [ -x ${BIN} ]; then
if [ -x ${BAREOS_STORAGEDAEMON_BINARY} ]; then
echo "Stopping the $Bareos Storage daemon"
killproc ${BIN} ${BAREOS_SD_PORT}
killproc ${BAREOS_STORAGEDAEMON_BINARY} ${BAREOS_SD_PORT}
fi
;;

Expand All @@ -86,7 +86,7 @@ case "$1" in
;;

status)
[ -x ${BIN} ] && status ${BIN} ${BAREOS_SD_PORT}
[ -x ${BAREOS_STORAGEDAEMON_BINARY} ] && status ${BAREOS_STORAGEDAEMON_BINARY} ${BAREOS_SD_PORT}
exit $?
;;

Expand Down
2 changes: 1 addition & 1 deletion core/src/tests/catalog.cc
Expand Up @@ -184,5 +184,5 @@ TEST_F(CatalogTest, database)

time_t time_converted = static_cast<time_t>(StrToUtime(stime.data()));

EXPECT_EQ(time_converted, 1574863489);
EXPECT_EQ(time_converted, StrToUtime("2019-11-27 15:04:49"));
}
38 changes: 28 additions & 10 deletions core/src/tests/run_on_incoming_connect_interval.cc
Expand Up @@ -119,11 +119,21 @@ TEST_F(RunOnIncomingConnectIntervalTest,
EXPECT_TRUE(find(jobs, "backup-bareos-fd-connect-2"));
}

static struct TestResults {
int job_counter{};
int scheduler_sleep_count{};
int timeout{};
std::map<std::string, int> job_names;
} test_results;

class TestTimeSource : public TimeSource {
public:
int counter = 0;
int counter{};
time_t SystemTime() override { return ++counter; }
void SleepFor(std::chrono::seconds /*wait_interval*/) override {}
void SleepFor(std::chrono::seconds /*wait_interval*/) override
{
++test_results.scheduler_sleep_count;
}
void Terminate() override {}
};

Expand All @@ -135,11 +145,6 @@ class TimeAdapter : public SchedulerTimeAdapter {
}
};

static struct TestResults {
int job_counter{};
std::map<std::string, int> job_names;
} test_results;

static void SchedulerJobCallback(JobControlRecord* jcr)
{
++test_results.job_counter;
Expand Down Expand Up @@ -220,13 +225,17 @@ static void RunSchedulerAndSimulateClientConnect(BareosDb& db)
std::make_unique<TimeAdapter>(std::make_unique<TestTimeSource>()),
SchedulerJobCallback);

std::thread scheduler_thread(scheduler_loop, &scheduler);

test_results = TestResults();

SimulateClientConnect("bareos-fd", scheduler, db);

std::this_thread::sleep_for(std::chrono::milliseconds(20));
std::thread scheduler_thread(scheduler_loop, &scheduler);

int timeout{};
while (test_results.scheduler_sleep_count < 3 && timeout < 500) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
++timeout;
}

scheduler.Terminate();
scheduler_thread.join();
Expand All @@ -237,6 +246,9 @@ TEST_F(RunOnIncomingConnectIntervalTest, no_start_time_found_in_database)
MockDatabase db(MockDatabase::Mode::kFindNoStartTime);
RunSchedulerAndSimulateClientConnect(db);

EXPECT_TRUE(test_results.scheduler_sleep_count > 0)
<< "The scheduler did not sleep";

ASSERT_EQ(test_results.job_counter, 2) << "Not all jobs did run";

EXPECT_NE(test_results.job_names.find("backup-bareos-fd-connect"),
Expand All @@ -253,6 +265,9 @@ TEST_F(RunOnIncomingConnectIntervalTest, start_time_found_in_database)
MockDatabase db(MockDatabase::Mode::kFindStartTime);
RunSchedulerAndSimulateClientConnect(db);

EXPECT_TRUE(test_results.scheduler_sleep_count > 0)
<< "The scheduler did not sleep";

ASSERT_EQ(test_results.job_counter, 1)
<< "backup-bareos-fd-connect did not run";

Expand All @@ -266,6 +281,9 @@ TEST_F(RunOnIncomingConnectIntervalTest, start_time_found_wrong_time_string)
MockDatabase db(MockDatabase::Mode::kFindStartTimeWrongString);
RunSchedulerAndSimulateClientConnect(db);

EXPECT_TRUE(test_results.scheduler_sleep_count > 0)
<< "The scheduler did not sleep";

ASSERT_EQ(test_results.job_counter, 0)
<< "backup-bareos-fd-connect did not run";
}

0 comments on commit 19bfd24

Please sign in to comment.