gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] branch master updated (37c29157 -> 001f1552)


From: gnunet
Subject: [taler-exchange] branch master updated (37c29157 -> 001f1552)
Date: Sat, 08 Feb 2020 19:06:22 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a change to branch master
in repository exchange.

    from 37c29157 do not report missing reserve closures of amount 0.0
     new f70596ff adding UNIX socket and restart tests (#5309)
     new 001f1552 make script a bit nicer

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 contrib/taler-exchange-revoke                      |   2 +-
 src/exchange/Makefile.am                           |   4 +-
 src/exchange/test_taler_exchange_httpd_restart.sh  | 114 +++++++++++++++++++++
 ...ge_httpd.conf => test_taler_exchange_unix.conf} |   8 +-
 4 files changed, 124 insertions(+), 4 deletions(-)
 create mode 100755 src/exchange/test_taler_exchange_httpd_restart.sh
 copy src/exchange/{test_taler_exchange_httpd.conf => 
test_taler_exchange_unix.conf} (92%)

diff --git a/contrib/taler-exchange-revoke b/contrib/taler-exchange-revoke
index 8ce0e878..8e4bc6ed 100755
--- a/contrib/taler-exchange-revoke
+++ b/contrib/taler-exchange-revoke
@@ -19,6 +19,6 @@ fi
 taler-exchange-keyup -c $1 -r $2
 
 EXCHANGE_PID=`ps x | grep taler-exchange-httpd | awk '{print $1}'`
-kill -HUP $EXCHANGE_PID
+kill -SIGUSR1 $EXCHANGE_PID
 
 exit 0
diff --git a/src/exchange/Makefile.am b/src/exchange/Makefile.am
index 50eb545b..cf9f984d 100644
--- a/src/exchange/Makefile.am
+++ b/src/exchange/Makefile.am
@@ -83,7 +83,8 @@ taler_exchange_httpd_LDADD = \
 AM_TESTS_ENVIRONMENT=export TALER_PREFIX=$${TALER_PREFIX:-@libdir@};export 
PATH=$${TALER_PREFIX:-@prefix@}/bin:$$PATH;
 
 check_SCRIPTS = \
-  test_taler_exchange_httpd.sh
+  test_taler_exchange_httpd.sh \
+  test_taler_exchange_httpd_restart.sh
 if HAVE_EXPENSIVE_TESTS
 check_SCRIPTS += \
   test_taler_exchange_httpd_afl.sh
@@ -97,6 +98,7 @@ TESTS = \
 EXTRA_DIST = \
   
test_taler_exchange_httpd_home/.local/share/taler/exchange/offline-keys/master.priv
 \
   test_taler_exchange_httpd.conf \
+  test_taler_exchange_unix.conf \
   test_taler_exchange_httpd.get \
   test_taler_exchange_httpd.post \
   exchange.conf \
diff --git a/src/exchange/test_taler_exchange_httpd_restart.sh 
b/src/exchange/test_taler_exchange_httpd_restart.sh
new file mode 100755
index 00000000..f7d7a305
--- /dev/null
+++ b/src/exchange/test_taler_exchange_httpd_restart.sh
@@ -0,0 +1,114 @@
+#!/bin/bash
+#
+# This file is part of TALER
+# Copyright (C) 2020 Taler Systems SA
+#
+#  TALER is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU Affero General Public License as published by the Free 
Software
+#  Foundation; either version 3, or (at your option) any later version.
+#
+#  TALER 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 Affero General Public License for more 
details.
+#
+#  You should have received a copy of the GNU Affero General Public License 
along with
+#  TALER; see the file COPYING.  If not, If not, see 
<http://www.gnu.org/licenses/>
+#
+#
+# This script launches an exchange (binding to a UNIX domain socket) and then
+# restarts it in various ways (SIGHUP to re-read configuration, and SIGUSR1 to
+# re-spawn a new binary).  Basically, the goal is to make sure that the HTTP
+# server survives these less common operations.
+#
+#
+set -eu
+
+# Exit, with status code "skip" (no 'real' failure)
+function exit_skip() {
+    echo $1
+    exit 77
+}
+
+# Exit, with error message (hard failure)
+function exit_fail() {
+    echo $1
+    kill `jobs -p` >/dev/null 2>/dev/null || true
+    wait
+    exit 1
+}
+
+echo -n "Testing for curl"
+curl --version >/dev/null </dev/null || exit_skip " MISSING"
+echo " FOUND"
+
+
+# Clear environment from variables that override config.
+unset XDG_DATA_HOME
+unset XDG_CONFIG_HOME
+#
+echo -n "Launching exchange ..."
+PREFIX=
+# Uncomment this line to run with valgrind...
+# PREFIX="valgrind --trace-children=yes --leak-check=yes --track-fds=yes 
--error-exitcode=1 --log-file=valgrind.%p"
+
+# Setup keys.
+taler-exchange-keyup -c test_taler_exchange_unix.conf || exit 1
+# Setup wire accounts.
+taler-exchange-wire -c test_taler_exchange_unix.conf > /dev/null || exit 1
+# Run Exchange HTTPD (in background)
+$PREFIX taler-exchange-httpd -c test_taler_exchange_unix.conf -i 2> 
test-exchange.log &
+
+# Where should we be bound to?
+UNIXPATH=`taler-config -s exchange -f -o UNIXPATH`
+
+# Give HTTP time to start
+
+for n in `seq 1 100`
+do
+    echo -n "."
+    sleep 0.1
+    OK=1
+    curl --unix-socket "${UNIXPATH}" "http://ignored/"; >/dev/null 2> /dev/null 
&& break
+    OK=0
+done
+if [ 1 != $OK ]
+then
+    exit_fail "Failed to launch exchange"
+fi
+echo " DONE"
+
+# Finally run test...
+echo -n "Reloading keys ..."
+kill -SIGUSR1 $!
+sleep 1
+curl --unix-socket "${UNIXPATH}" "http://ignored/"; >/dev/null 2> /dev/null || 
exit_fail "SIGUSR1 killed HTTP service"
+echo " DONE"
+
+# Finally run test...
+echo -n "Restarting program ..."
+kill -SIGHUP $!
+sleep 1
+curl --unix-socket "${UNIXPATH}" "http://ignored/"; >/dev/null 2> /dev/null || 
exit_fail "SIGHUP killed HTTP service"
+echo " DONE"
+
+echo -n "Waiting for parent to die ..."
+wait $!
+echo " DONE"
+
+echo -n "Testing child still alive ..."
+curl --unix-socket "${UNIXPATH}" "http://ignored/"; >/dev/null 2> /dev/null || 
exit_fail "SIGHUP killed HTTP service"
+echo " DONE"
+
+
+echo -n "Killing grandchild ..."
+CPID=`ps x | grep taler-exchange-httpd | grep -v grep | awk '{print $1}'`
+kill -TERM $CPID
+while true
+do
+    ps x | grep -v grep | grep taler-exchange-httpd > /dev/null || break
+    sleep 0.1
+done
+echo " DONE"
+
+# Return status code from exchange for this script
+exit 0
diff --git a/src/exchange/test_taler_exchange_httpd.conf 
b/src/exchange/test_taler_exchange_unix.conf
similarity index 92%
copy from src/exchange/test_taler_exchange_httpd.conf
copy to src/exchange/test_taler_exchange_unix.conf
index 15392735..d41df9ab 100644
--- a/src/exchange/test_taler_exchange_httpd.conf
+++ b/src/exchange/test_taler_exchange_unix.conf
@@ -37,8 +37,12 @@ LOOKAHEAD_SIGN = 32 weeks 1 day
 # ahead of time?
 LOOKAHEAD_PROVIDE = 4 weeks 1 day
 
-# HTTP port the exchange listens to
-PORT = 8081
+# HTTP port the exchange listens to (we want to use UNIX domain sockets,
+# so we use a port that just won't work on GNU/Linux without root rights)
+PORT = 999
+
+# Here we say we want to use a UNIX domain socket (to test that logic).
+SERVE = unix
 
 # Master public key used to sign the exchange's various keys
 MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]