3 # Copyright (c) 2010 Your File System Inc. All rights reserved.
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
8 # 1. Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 # 2. Redistributions in binary form must reproduce the above copyright
11 # notice, this list of conditions and the following disclaimer in the
12 # documentation and/or other materials provided with the distribution.
14 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
15 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
18 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 use Test::More tests => 11;
29 use POSIX qw(:signal_h);
32 # Start up our test process, and send it various signals. Check that these
33 # signals make it to it correctly, and are reported on the command line.
35 my $pid=open(HELPER, "./softsig-helper |")
36 or die "Couldn't start test helper.";
38 # Wait for softsig to start up.
39 is(<HELPER>, "Ready\n");
41 # Check that a load of common signals are correctly trapped.
44 is(<HELPER>, "Received INT\n");
47 is(<HELPER>, "Received HUP\n");
50 is(<HELPER>, "Received QUIT\n");
53 is(<HELPER>, "Received ALRM\n");
56 is(<HELPER>, "Received TERM\n");
59 is(<HELPER>, "Received USR1\n");
62 is(<HELPER>, "Received USR2\n");
65 # Check that we can actually stop the process with a kill.
69 is($?, SIGKILL, "Helper exited on KILL signal.");
71 # Check that an internal segmentation fault kills the process.
73 $pid = open(HELPER, "./softsig-helper -crash |")
74 or die "Couldn't start test helper.";
76 is($? & 0x7f, SIGSEGV, "Helper exited on SEGV signal.");
78 # Check that an internal bus error kills the process.
80 my ($fh, $path) = mkstemp("/tmp/softsig-t_XXXXXX");
81 $pid = open(HELPER, "./softsig-helper -buserror $path |")
82 or die "Couldn't start test helper.";
84 is($? & 0x7f, SIGBUS, "Helper exited on BUS signal.");