From bf6506cdc46446eada5090a428c2407ebd17468a Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Tue, 11 Jun 2019 12:54:02 +0300 Subject: Improve the nt tool. Test inet running instance limit. * tests/Makefile.am: Add new test. * tests/aux/in.test (PIESCTL): Provide the necessary options. Discontinue the use of STOPCMD environment variable. New commands: enable, sleep, touch. * tests/testsuite.at (PIES_CONTROL_INIT): Rename pidfile to PIES_PIDFILE and ctlsock to PIES_CTLSOCK. Export both. Include maxinst.at * tests/control.at: Use new variables. * tests/inet.at: Remove the env block. * tests/iobuf.h (iobuf_copy): Return number of bytes copied. * tests/maxinst.at: New file. * tests/nt.c (netcat_stream_disconnect): New function. (netcat_stream_read): Disconnect the peer stream if no more input is available and the peer is not available for output (i.e. its output buffer is empty). (netcat_stream_write): Stop polling if output buffer is empty. (netcat): Fix event mask --- tests/maxinst.at | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 tests/maxinst.at (limited to 'tests/maxinst.at') diff --git a/tests/maxinst.at b/tests/maxinst.at new file mode 100644 index 0000000..f67d15e --- /dev/null +++ b/tests/maxinst.at @@ -0,0 +1,78 @@ +# This file is part of GNU pies testsuite. -*- Autotest -*- +# Copyright (C) 2019 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 . + +AT_SETUP([inet component: max instances]) +AT_CHECK([ +PIES_XFAIL_CHECK +PIES_CONTROL_INIT + +AT_DATA([in1], +[test +enable con2 +sleep 10 +quit +]) + +AT_DATA([in2], +[test +enable con3 +sleep 10 +quit +]) + +: ${PIES_TEST_INET_SOCKET:=unix://$PWD/in.sock} + +cat > pies.conf <<_EOT +component in { + command "$auxdir/in.test /tmp/in.log"; + mode inetd; + socket "$PIES_TEST_INET_SOCKET"; + stderr file "$PWD/in.err"; + max-instances 2; + max-instances-message "too many instances running\n"; +} +component con1 { + command "nt $PIES_TEST_INET_SOCKET -i in1 -o con1.out"; + stderr file "/tmp/con1.err"; +} +component con2 { + command "nt $PIES_TEST_INET_SOCKET -i in2 -o con2.out"; + stderr file "/tmp/con2.err"; + flags (disable); +} +component con3 { + flags (disable); + command "nt $PIES_TEST_INET_SOCKET -o con3.out"; + stderr file "/tmp/con3.err"; + return-code * { + action disable; + exec "$abs_top_builddir/src/piesctl --url unix://$PWD/pies.ctl --no-netrc shutdown"; + } +} +_EOT + +set -e +to 10 \ + pies --foreground --stderr \ + --config-file control.conf --config-file pies.conf --debug 1 2>errlog + +cat con3.out +], +[0], +[too many instances running +]) + +AT_CLEANUP -- cgit v1.2.1