aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/.gitignore1
-rw-r--r--tests/Makefile.am8
-rw-r--r--tests/accept.at8
-rw-r--r--tests/atlocal.in2
-rwxr-xr-xtests/aux/in.test2
-rw-r--r--tests/builtin.at16
-rw-r--r--tests/chargen.c2
-rw-r--r--tests/control.at8
-rw-r--r--tests/cyclic.at39
-rw-r--r--tests/env.at12
-rw-r--r--tests/envglobal.at86
-rw-r--r--tests/envop.at4
-rw-r--r--tests/envtest.c2
-rw-r--r--tests/expandenv.at50
-rw-r--r--tests/inet.at6
-rw-r--r--tests/iobuf.h2
-rw-r--r--tests/lines.c3
-rw-r--r--tests/maxinst.at8
-rw-r--r--tests/nt.c2
-rw-r--r--tests/passfd.at8
-rw-r--r--tests/readtime.c2
-rw-r--r--tests/recvfd.c2
-rw-r--r--tests/redirect.at6
-rw-r--r--tests/respawn.at8
-rw-r--r--tests/ret-exec.at6
-rw-r--r--tests/ret-notify.at6
-rw-r--r--tests/shdnseq.at82
-rw-r--r--tests/shell.at8
-rw-r--r--tests/shutdown.at10
-rw-r--r--tests/sigterm.at49
-rw-r--r--tests/sigwait.c75
-rw-r--r--tests/startup.at8
-rw-r--r--tests/testsuite.at13
-rw-r--r--tests/to.c2
-rw-r--r--tests/version.at4
35 files changed, 466 insertions, 84 deletions
diff --git a/tests/.gitignore b/tests/.gitignore
index 43d3848..1993da2 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -13 +13,2 @@ readtime
chargen
+sigwait
diff --git a/tests/Makefile.am b/tests/Makefile.am
index bfdc692..6724aea 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,3 +1,3 @@
# This file is part of GNU Pies.
-# Copyright (C) 2008-2020 Sergey Poznyakoff
+# Copyright (C) 2008-2023 Sergey Poznyakoff
#
@@ -56,3 +56,5 @@ TESTSUITE_AT = \
env.at\
+ envglobal.at\
envop.at\
+ expandenv.at\
inet.at\
@@ -64,4 +66,6 @@ TESTSUITE_AT = \
ret-notify.at\
+ sigterm.at\
shell.at\
startup.at\
+ shdnseq.at\
shutdown.at\
@@ -72,3 +76,3 @@ M4=m4
-noinst_PROGRAMS = envtest to lines nt recvfd readtime chargen
+noinst_PROGRAMS = envtest to lines nt recvfd readtime chargen sigwait
nt_SOURCES = nt.c iobuf.h
diff --git a/tests/accept.at b/tests/accept.at
index e12be02..0249ad6 100644
--- a/tests/accept.at
+++ b/tests/accept.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2019-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2019-2023 Sergey Poznyakoff
#
@@ -42,3 +42,3 @@ set -e
to 10 \
- pies --foreground --stderr \
+ pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file pies.conf --debug 1 2>errlog
@@ -53,2 +53,2 @@ stop
])
-AT_CLEANUP \ No newline at end of file
+AT_CLEANUP
diff --git a/tests/atlocal.in b/tests/atlocal.in
index c043843..0e4695e 100644
--- a/tests/atlocal.in
+++ b/tests/atlocal.in
@@ -2,3 +2,3 @@
# Configurable variable values for GNU Pies test suite.
-# Copyright (C) 2016-2020 Sergey Poznyakoff
+# Copyright (C) 2016-2023 Sergey Poznyakoff
diff --git a/tests/aux/in.test b/tests/aux/in.test
index 1fae034..54b546a 100755
--- a/tests/aux/in.test
+++ b/tests/aux/in.test
@@ -6,3 +6,3 @@ IFS='
: ${PIESCTL:=piesctl}
-PIESCTL="$PIESCTL --no-netrc${PIES_CTLSOCK:+ --url=}$PIES_CTLSOCK"
+PIESCTL="$PIESCTL --config-file=/dev/null --no-netrc${PIES_CTLSOCK:+ --url=}$PIES_CTLSOCK"
while read COMMAND ARG
diff --git a/tests/builtin.at b/tests/builtin.at
index 88e24d7..c13b42b 100644
--- a/tests/builtin.at
+++ b/tests/builtin.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2016-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2016-2023 Sergey Poznyakoff
#
@@ -42,3 +42,3 @@ component controller {
action disable;
- exec "piesctl --url '$PIES_CTLSOCK' --no-netrc shutdown";
+ exec "piesctl --config-file=/dev/null --url '$PIES_CTLSOCK' --config-file=/dev/null --no-netrc shutdown";
}
@@ -48,3 +48,3 @@ set -e
to 10 \
- pies --foreground --stderr \
+ pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file pies.conf --debug 1 2>errlog
@@ -80,3 +80,3 @@ component controller {
action disable;
- exec "echo \$PIES_STATUS > $PWD/status ; piesctl --url '$PIES_CTLSOCK' --no-netrc shutdown";
+ exec "echo \$PIES_STATUS > $PWD/status ; piesctl --url '$PIES_CTLSOCK' --config-file=/dev/null --no-netrc shutdown";
}
@@ -88,3 +88,3 @@ set -e
to 10 \
- pies --foreground --stderr \
+ pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file pies.conf --debug 1 2>errlog
@@ -168,3 +168,3 @@ component test {
action disable;
- exec "piesctl --no-netrc --url=$PIES_CTLSOCK shutdown";
+ exec "piesctl --config-file=/dev/null --no-netrc --url=$PIES_CTLSOCK shutdown";
}
@@ -175,3 +175,3 @@ set -e
to 10 \
- pies --foreground --stderr \
+ pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file pies.conf --debug 1 2>errlog
diff --git a/tests/chargen.c b/tests/chargen.c
index 59aa0d8..5f5a170 100644
--- a/tests/chargen.c
+++ b/tests/chargen.c
@@ -1,3 +1,3 @@
/* This file is part of GNU Pies testsuite.
- Copyright (C) 2019-2020 Sergey Poznyakoff
+ Copyright (C) 2019-2023 Sergey Poznyakoff
diff --git a/tests/control.at b/tests/control.at
index 5171862..6027817 100644
--- a/tests/control.at
+++ b/tests/control.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2016-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2016-2023 Sergey Poznyakoff
#
@@ -22,6 +22,6 @@ PIES_CONTROL_INIT
-pies --config-file control.conf
+pies --no-preprocessor --config-file control.conf
sleep 1
-PIESCTL="piesctl --no-netrc --url '$PIES_CTLSOCK'"
+PIESCTL="piesctl --config-file=/dev/null --no-netrc --url '$PIES_CTLSOCK'"
if test -f $PIES_PIDFILE; then
diff --git a/tests/cyclic.at b/tests/cyclic.at
index 7c24acf..96a7b41 100644
--- a/tests/cyclic.at
+++ b/tests/cyclic.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2019-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2019-2023 Sergey Poznyakoff
#
@@ -17,2 +17,3 @@
AT_SETUP([Detecting cyclic dependencies])
+
AT_CHECK([
@@ -93,3 +94,3 @@ component h {
-pies --config-file test.conf --dump-depmap | trimws
+pies --no-preprocessor --config-file test.conf --dump-depmap | trimws
],
@@ -107,5 +108,4 @@ Legend:
],
-[pies: component a depends on itself
+[pies: cyclic dependencies detected:
pies: a -> d -> c -> e -> a
-pies: component b depends on itself
pies: b -> b
@@ -113,2 +113,31 @@ pies: b -> b
+AT_CHECK([
+AT_DATA([test.conf],[
+component a {
+ command "a";
+ prerequisites (b,c);
+}
+component b {
+ command "b";
+ prerequisites (c);
+}
+component c {
+ command "c";
+ prerequisites (d);
+}
+component d {
+ command "d";
+ prerequisites (a);
+}
+])
+pies --no-preprocessor --config-file test.conf --dump-depmap | trimws
+],
+[0],
+[No components defined
+],
+[pies: cyclic dependencies detected:
+pies: a -> c -> d -> a
+pies: a -> b -> c -> d -> a
+])
+
AT_CLEANUP
diff --git a/tests/env.at b/tests/env.at
index dba80a3..38c6604 100644
--- a/tests/env.at
+++ b/tests/env.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2020-2023 Sergey Poznyakoff
#
@@ -32,3 +32,3 @@ component envtest {
action disable;
- exec "$abs_top_builddir/src/piesctl --url unix:///$PWD/pies.ctl --no-netrc shutdown";
+ exec "$abs_top_builddir/src/piesctl --config-file=/dev/null --url unix:///$PWD/pies.ctl --no-netrc shutdown";
}
@@ -39,3 +39,3 @@ to 5 \
envtest -exec \
- $abs_top_builddir/src/pies --foreground --stderr \
+ $abs_top_builddir/src/pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file envtest.conf --debug 1 2>errlog
@@ -106,3 +106,3 @@ component envtest {
action disable;
- exec "$abs_top_builddir/src/piesctl --url unix:///$PWD/pies.ctl --no-netrc shutdown";
+ exec "$abs_top_builddir/src/piesctl --config-file=/dev/null --url unix:///$PWD/pies.ctl --no-netrc shutdown";
}
@@ -113,3 +113,3 @@ to 5 \
envtest -exec \
- $abs_top_builddir/src/pies --foreground --stderr \
+ $abs_top_builddir/src/pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file envtest.conf --debug 1 2>errlog
diff --git a/tests/envglobal.at b/tests/envglobal.at
new file mode 100644
index 0000000..9b89ce2
--- /dev/null
+++ b/tests/envglobal.at
@@ -0,0 +1,86 @@
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2020-2023 Sergey Poznyakoff
+#
+# GNU pies is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU pies is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU pies. If not, see <http://www.gnu.org/licenses/>.
+dnl ENVTEST(NAME,KW,ENV,OUT)
+m4_pushdef([ENVTEST],
+[AT_SETUP([$1])
+AT_KEYWORDS([env $2])
+AT_CHECK([
+PIES_XFAIL_CHECK
+PIES_CONTROL_INIT
+cat > envtest.conf <<_EOT
+env {
+ $3
+}
+component envtest {
+ command "$abs_builddir/envtest -clone";
+ chdir $PWD;
+ stdout file "$PWD/log";
+ return-code 0 {
+ action disable;
+ exec "$abs_top_builddir/src/piesctl --url unix:///$PWD/pies.ctl --config-file=/dev/null --no-netrc shutdown";
+ }
+}
+_EOT
+
+to 5 \
+ envtest -exec \
+ $abs_top_builddir/src/pies --no-preprocessor --foreground --stderr \
+ --config-file control.conf --config-file envtest.conf --debug 1 2>errlog
+cat log
+],
+[0],
+[$4])
+AT_CLEANUP])
+
+dnl #############################
+dnl Start tests
+dnl #############################
+
+AT_BANNER([Global environment statement])
+
+ENVTEST([clear],[clear],[clear;],[])
+
+ENVTEST([keep],[keep],[keep "LC_*";],
+[LC_ALL="C"
+LC_CTYPE="C"
+LC_MESSAGES="C"
+LC_NUMERIC="C"
+])
+
+ENVTEST([set],[set],[set "FOO=bar";],
+[FOO="bar"
+HOME="/home/user"
+LC_ALL="C"
+LC_CTYPE="C"
+LC_MESSAGES="C"
+LC_NUMERIC="C"
+LOGIN="user"
+PATH="/usr/local/bin:/usr/bin:/bin"
+PIES_INSTANCE="pies"
+PWD="/home"
+USER="user"
+])
+
+ENVTEST([unset],[unset],[unset "LC_*"; unset PWD;],
+[HOME="/home/user"
+LOGIN="user"
+PATH="/usr/local/bin:/usr/bin:/bin"
+PIES_INSTANCE="pies"
+USER="user"
+])
+
+m4_popdef([ENVTEST])
+
diff --git a/tests/envop.at b/tests/envop.at
index 5575772..8cc7a83 100644
--- a/tests/envop.at
+++ b/tests/envop.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2020-2023 Sergey Poznyakoff
#
diff --git a/tests/envtest.c b/tests/envtest.c
index 45d69a2..bdbbd40 100644
--- a/tests/envtest.c
+++ b/tests/envtest.c
@@ -1,3 +1,3 @@
/* Environment test program for GNU Pies.
- Copyright (C) 2019-2020 Sergey Poznyakoff
+ Copyright (C) 2019-2023 Sergey Poznyakoff
diff --git a/tests/expandenv.at b/tests/expandenv.at
new file mode 100644
index 0000000..c330c12
--- /dev/null
+++ b/tests/expandenv.at
@@ -0,0 +1,50 @@
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2016-2023 Sergey Poznyakoff
+#
+# GNU pies is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU pies is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU pies. If not, see <http://www.gnu.org/licenses/>.
+
+AT_SETUP([flags expandenv])
+
+AT_CHECK([
+PIES_XFAIL_CHECK
+PIES_CONTROL_INIT
+statefile=$PWD/state
+cat > pies.conf <<EOT
+component test {
+ mode respawn;
+ flags expandenv;
+ command "\$auxdir/respawn \$statefile 3";
+ chdir "$PWD";
+ return-code 1 {
+ action disable;
+ exec "piesctl --config-file=/dev/null --url unix:///$PWD/pies.ctl --no-netrc shutdown";
+ }
+}
+EOT
+
+export auxdir
+export statefile
+
+set -e
+to 5 \
+ pies --no-preprocessor --foreground --stderr \
+ --config-file control.conf --config-file pies.conf --debug 4 2>errlog
+
+cat state
+],
+[0],
+[3
+])
+
+AT_CLEANUP
diff --git a/tests/inet.at b/tests/inet.at
index cc4fceb..cf9c13c 100644
--- a/tests/inet.at
+++ b/tests/inet.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2016-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2016-2023 Sergey Poznyakoff
#
@@ -38,3 +38,3 @@ set -e
to 10 \
- pies --foreground --stderr \
+ pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file pies.conf --debug 1 2>errlog
diff --git a/tests/iobuf.h b/tests/iobuf.h
index df5f3ba..f64cb4c 100644
--- a/tests/iobuf.h
+++ b/tests/iobuf.h
@@ -1,3 +1,3 @@
/* This file is part of GNU Pies.
- Copyright (C) 2019-2020 Sergey Poznyakoff
+ Copyright (C) 2019-2023 Sergey Poznyakoff
diff --git a/tests/lines.c b/tests/lines.c
index 0ad9d13..b74dd8a 100644
--- a/tests/lines.c
+++ b/tests/lines.c
@@ -1,3 +1,3 @@
/* This file is part of GNU Pies testsuite.
- Copyright (C) 2019-2020 Sergey Poznyakoff
+ Copyright (C) 2019-2023 Sergey Poznyakoff
@@ -16,2 +16,3 @@
+#include <config.h>
#include <stdio.h>
diff --git a/tests/maxinst.at b/tests/maxinst.at
index f389e0b..91a6faa 100644
--- a/tests/maxinst.at
+++ b/tests/maxinst.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2019-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2019-2023 Sergey Poznyakoff
#
@@ -61,3 +61,3 @@ component con3 {
action disable;
- exec "$abs_top_builddir/src/piesctl --url unix://$PWD/pies.ctl --no-netrc shutdown";
+ exec "$abs_top_builddir/src/piesctl --url unix://$PWD/pies.ctl --config-file=/dev/null --no-netrc shutdown";
}
@@ -68,3 +68,3 @@ set -e
to 10 \
- pies --foreground --stderr \
+ pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file pies.conf --debug 1 2>errlog
diff --git a/tests/nt.c b/tests/nt.c
index 258970f..074cff4 100644
--- a/tests/nt.c
+++ b/tests/nt.c
@@ -1,3 +1,3 @@
/* This file is part of GNU Pies testsuite.
- Copyright (C) 2019-2020 Sergey Poznyakoff
+ Copyright (C) 2019-2023 Sergey Poznyakoff
diff --git a/tests/passfd.at b/tests/passfd.at
index 74d5ab3..f8af911 100644
--- a/tests/passfd.at
+++ b/tests/passfd.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2016-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2016-2023 Sergey Poznyakoff
#
@@ -45,3 +45,3 @@ set -e
to 10 \
- pies --foreground --stderr \
+ pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file pies.conf --debug 1 2>errlog
@@ -56,2 +56,2 @@ stop
])
-AT_CLEANUP \ No newline at end of file
+AT_CLEANUP
diff --git a/tests/readtime.c b/tests/readtime.c
index ed3f2f8..2f354f4 100644
--- a/tests/readtime.c
+++ b/tests/readtime.c
@@ -1,3 +1,3 @@
/* This file is part of GNU Pies testsuite.
- Copyright (C) 2019-2020 Sergey Poznyakoff
+ Copyright (C) 2019-2023 Sergey Poznyakoff
diff --git a/tests/recvfd.c b/tests/recvfd.c
index 8e0ec79..7e6a70a 100644
--- a/tests/recvfd.c
+++ b/tests/recvfd.c
@@ -1,3 +1,3 @@
/* This file is part of GNU Pies testsuite.
- Copyright (C) 2019-2020 Sergey Poznyakoff
+ Copyright (C) 2019-2023 Sergey Poznyakoff
diff --git a/tests/redirect.at b/tests/redirect.at
index 5cc5548..d405b3a 100644
--- a/tests/redirect.at
+++ b/tests/redirect.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2016-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2016-2023 Sergey Poznyakoff
#
@@ -31,3 +31,3 @@ _EOT
-pies --config-file control.conf --config-file pies.conf
+pies --no-preprocessor --config-file control.conf --config-file pies.conf
diff --git a/tests/respawn.at b/tests/respawn.at
index 68da448..c11379f 100644
--- a/tests/respawn.at
+++ b/tests/respawn.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2016-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2016-2023 Sergey Poznyakoff
#
@@ -29,3 +29,3 @@ component test {
action disable;
- exec "piesctl --url unix:///$PWD/pies.ctl --no-netrc shutdown";
+ exec "piesctl --url unix:///$PWD/pies.ctl --config-file=/dev/null --no-netrc shutdown";
}
@@ -35,3 +35,3 @@ _EOT
to 5 \
- pies --foreground --stderr \
+ pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file pies.conf --debug 1 2>errlog
diff --git a/tests/ret-exec.at b/tests/ret-exec.at
index 8f6152e..6540fc7 100644
--- a/tests/ret-exec.at
+++ b/tests/ret-exec.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2016-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2016-2023 Sergey Poznyakoff
#
@@ -37,3 +37,3 @@ _EOT
-pies --config-file control.conf --config-file pies.conf
+pies --no-preprocessor --config-file control.conf --config-file pies.conf
diff --git a/tests/ret-notify.at b/tests/ret-notify.at
index 29ff677..59bbdf5 100644
--- a/tests/ret-notify.at
+++ b/tests/ret-notify.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2016-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2016-2023 Sergey Poznyakoff
#
@@ -38,3 +38,3 @@ _EOT
-pies --config-file control.conf --config-file pies.conf
+pies --no-preprocessor --config-file control.conf --config-file pies.conf
diff --git a/tests/shdnseq.at b/tests/shdnseq.at
new file mode 100644
index 0000000..a6ed644
--- /dev/null
+++ b/tests/shdnseq.at
@@ -0,0 +1,82 @@
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2022-2023 Sergey Poznyakoff
+#
+# GNU pies is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU pies is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU pies. If not, see <http://www.gnu.org/licenses/>.
+
+AT_SETUP([component shutdown sequence])
+AT_KEYWORDS([shutdown shdnseq])
+AT_CHECK([
+PIES_XFAIL_CHECK
+PIES_CONTROL_INIT
+cat > pies.conf <<_EOT
+component a {
+ command "sigwait -f result -n a";
+ prerequisites (b,d);
+}
+component b {
+ command "sigwait -f result -n b";
+}
+component c {
+ command "sigwait -f result -n c";
+ prerequisites (e);
+}
+component d {
+ command "sigwait -f result -n d";
+ prerequisites (c);
+}
+component e {
+ command "sigwait -f result -n e";
+ prerequisites (g,h);
+}
+component f {
+ command "sigwait -f result -n f";
+}
+component g {
+ command "sigwait -f result -n g";
+ prerequisites (h);
+}
+component h {
+ command "sigwait -f result -n h";
+}
+component sentinel {
+ mode respawn;
+ prerequisites (test);
+ command "piesctl --config-file=/dev/null --url unix:///$PWD/pies.ctl --no-netrc shutdown";
+}
+_EOT
+
+rm -f result
+set -e
+to 5 \
+ pies --no-preprocessor --foreground --stderr \
+ --config-file control.conf --config-file pies.conf --debug 1 2>errlog
+# Two components stop in shutdown sequence 0; their traces can appear in any
+# order.
+sed -n 1,2p result | sort -k1
+# Same for the components in sequence 1.
+sed -n 3,4p result | sort -k1
+# The order for the rest of components is fixed.
+tail -n 4 result
+],
+[0],
+[a: 15
+f: 15
+b: 15
+d: 15
+c: 15
+e: 15
+g: 15
+h: 15
+])
+AT_CLEANUP
diff --git a/tests/shell.at b/tests/shell.at
index 8375e22..69aa436 100644
--- a/tests/shell.at
+++ b/tests/shell.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2016-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2016-2023 Sergey Poznyakoff
#
@@ -31,3 +31,3 @@ component test {
action disable;
- exec "piesctl --url unix:///$PWD/pies.ctl --no-netrc shutdown";
+ exec "piesctl --url unix:///$PWD/pies.ctl --config-file=/dev/null --no-netrc shutdown";
}
@@ -38,3 +38,3 @@ set -e
to 5 \
- pies --foreground --stderr \
+ pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file pies.conf --debug 1 2>errlog
diff --git a/tests/shutdown.at b/tests/shutdown.at
index d89f6f9..3982496 100644
--- a/tests/shutdown.at
+++ b/tests/shutdown.at
@@ -1,3 +1,3 @@
-# This file is part of GNU pies testsuite. -*- Autotest -*-
-# Copyright (C) 2019-2020 Sergey Poznyakoff
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2019-2023 Sergey Poznyakoff
#
@@ -31,4 +31,4 @@ component test {
action disable;
- exec "piesctl --url unix:///$PWD/pies.ctl --no-netrc shutdown";
- }
+ exec "piesctl --config-file=/dev/null --url unix:///$PWD/pies.ctl --no-netrc shutdown";
+ }
}
@@ -43,3 +43,3 @@ set -e
to 5 \
- pies --foreground --stderr \
+ pies --no-preprocessor --foreground --stderr \
--config-file control.conf --config-file pies.conf --debug 1 2>errlog
diff --git a/tests/sigterm.at b/tests/sigterm.at
new file mode 100644
index 0000000..37256ca
--- /dev/null
+++ b/tests/sigterm.at
@@ -0,0 +1,49 @@
+# This file is part of GNU pies testsuite. -*- autotest -*-
+# Copyright (C) 2022-2023 Sergey Poznyakoff
+#
+# GNU pies is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU pies is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU pies. If not, see <http://www.gnu.org/licenses/>.
+
+AT_SETUP([sigterm])
+AT_KEYWORDS([sigterm])
+AT_CHECK([
+PIES_XFAIL_CHECK
+PIES_CONTROL_INIT
+
+resultfile=$PWD/result
+
+cat > pies.conf <<_EOT
+component test {
+ mode respawn;
+ command "sigwait -f$resultfile";
+ sigterm SIGQUIT;
+}
+component sentinel {
+ mode respawn;
+ prerequisites (test);
+ command "piesctl --config-file=/dev/null --url unix:///$PWD/pies.ctl --no-netrc shutdown";
+}
+_EOT
+
+rm -f result
+set -e
+to 5 \
+ pies --no-preprocessor --foreground --stderr \
+ --config-file control.conf --config-file pies.conf --debug 1 2>errlog
+cat result
+],
+[0],
+[sigwait: 3
+])
+
+AT_CLEANUP \ No newline at end of file
diff --git a/tests/sigwait.c b/tests/sigwait.c
new file mode 100644
index 0000000..dd13b58
--- /dev/null
+++ b/tests/sigwait.c
@@ -0,0 +1,75 @@
+/* This file is part of GNU Pies testsuite.
+ Copyright (C) 2019-2023 Sergey Poznyakoff
+
+ GNU Pies is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GNU Pies is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNU Pies. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <stdio.h>
+#include <signal.h>
+#include <assert.h>
+#include <unistd.h>
+
+static void
+sighan (int signo)
+{
+}
+
+int
+main (int argc, char **argv)
+{
+ sigset_t set;
+ struct sigaction act;
+ int c, n;
+ FILE *fp = stdout;
+ char const *program_name = argv[0];
+ char const *file_name = NULL;
+
+ while ((c = getopt (argc, argv, "n:f:")) != EOF)
+ {
+ switch (c)
+ {
+ case 'n':
+ program_name = optarg;
+ break;
+
+ case 'f':
+ file_name = optarg;
+ break;
+
+ default:
+ return 1;
+ }
+ }
+ assert (argc == optind);
+
+ act.sa_flags = 0;
+ sigemptyset (&act.sa_mask);
+ act.sa_handler = sighan;
+ sigaction (SIGTERM, &act, NULL);
+ sigaction (SIGQUIT, &act, NULL);
+ sigfillset (&set);
+ assert (sigwait (&set, &n) == 0);
+ if (file_name)
+ {
+ if ((fp = fopen (file_name, "a")) == NULL)
+ perror (file_name);
+ assert (lockf (fileno (fp), F_LOCK, 0) == 0);
+ }
+ fprintf (fp, "%s: %d\n", program_name, n);
+ fclose (fp);
+ return 0;
+}
+
+
+
diff --git a/tests/startup.at b/tests/startup.at
index 5a6b19a..fa6e22d 100644
--- a/tests/startup.at
+++ b/tests/startup.at