t_trapsignal.sh revision 1.4
11.4Skamil# $NetBSD: t_trapsignal.sh,v 1.4 2018/05/27 17:04:45 kamil Exp $
21.1Schristos#
31.1Schristos# Copyright (c) 2017 The NetBSD Foundation, Inc.
41.1Schristos# All rights reserved.
51.1Schristos#
61.1Schristos# This code is derived from software contributed to The NetBSD Foundation
71.1Schristos# by Christos Zoulas.
81.1Schristos#
91.1Schristos# Redistribution and use in source and binary forms, with or without
101.1Schristos# modification, are permitted provided that the following conditions
111.1Schristos# are met:
121.1Schristos# 1. Redistributions of source code must retain the above copyright
131.1Schristos#    notice, this list of conditions and the following disclaimer.
141.1Schristos# 2. Redistributions in binary form must reproduce the above copyright
151.1Schristos#    notice, this list of conditions and the following disclaimer in the
161.1Schristos#    documentation and/or other materials provided with the distribution.
171.1Schristos#
181.1Schristos# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
191.1Schristos# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
201.1Schristos# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
211.1Schristos# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
221.1Schristos# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
231.1Schristos# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
241.1Schristos# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
251.1Schristos# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
261.1Schristos# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
271.1Schristos# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
281.1Schristos# POSSIBILITY OF SUCH DAMAGE.
291.1Schristos#
301.1Schristos
311.1SchristosHELPER=$(atf_get_srcdir)/h_segv
321.4Skamil
331.4Skamil# SIGSEGV
341.4Skamil
351.3Skamilatf_test_case segv_simple
361.3Skamilsegv_simple()
371.3Skamil{
381.3Skamil	atf_set "descr" "Test unhandled SIGSEGV with the right exit code"
391.3Skamil}
401.3Skamilsegv_simple_body()
411.3Skamil{
421.3Skamil	atf_check -s signal:11 -o "inline:" -e "inline:" \
431.3Skamil		${HELPER} segv recurse
441.3Skamil}
451.3Skamil
461.3Skamilatf_test_case segv_handle
471.3Skamilsegv_handle()
481.3Skamil{
491.3Skamil	atf_set "descr" "Test handled SIGSEGV traps call the signal handler"
501.3Skamil}
511.3Skamilsegv_handle_body()
521.3Skamil{
531.3Skamil	atf_check -s exit:0 -o "inline:" -e "inline:got 11\n" \
541.3Skamil		${HELPER} segv handle
551.3Skamil}
561.3Skamil
571.3Skamilatf_test_case segv_mask
581.3Skamilsegv_mask()
591.3Skamil{
601.3Skamil	atf_set "descr" "Test that masking SIGSEGV get reset"
611.3Skamil}
621.3Skamilsegv_mask_body()
631.3Skamil{
641.3Skamil	atf_check -s signal:11 -o "inline:" -e "inline:" \
651.3Skamil		${HELPER} segv mask
661.3Skamil}
671.3Skamil
681.3Skamilatf_test_case segv_handle_mask
691.3Skamilsegv_handle_mask()
701.3Skamil{
711.3Skamil	atf_set "descr" "Test handled and masked SIGSEGV traps get reset"
721.3Skamil}
731.3Skamilsegv_handle_mask_body()
741.3Skamil{
751.3Skamil	atf_check -s signal:11 -o "inline:" -e "inline:" \
761.3Skamil		${HELPER} segv mask handle
771.3Skamil}
781.3Skamil
791.3Skamilatf_test_case segv_handle_recurse
801.3Skamilsegv_handle_recurse()
811.3Skamil{
821.3Skamil	atf_set "descr" "Test that receiving SIGSEGV in the handler resets"
831.3Skamil}
841.3Skamil
851.3Skamilsegv_handle_recurse_body()
861.3Skamil{
871.3Skamil	atf_check -s signal:11 -o "inline:" -e "inline:got 11\n" \
881.3Skamil		${HELPER} segv handle recurse
891.3Skamil}
901.3Skamil
911.3Skamilatf_test_case segv_ignore
921.3Skamilsegv_ignore()
931.3Skamil{
941.3Skamil	atf_set "descr" "Test ignored SIGSEGV trap with right exit code"
951.3Skamil}
961.3Skamil
971.3Skamilsegv_ignore_body()
981.3Skamil{
991.3Skamil	atf_check -s signal:11 -o "inline:" -e "inline:" \
1001.3Skamil		${HELPER} segv ignore
1011.3Skamil}
1021.3Skamil
1031.4Skamil# SIGTRAP
1041.4Skamil
1051.1Schristosatf_test_case trap_simple
1061.1Schristostrap_simple()
1071.1Schristos{
1081.3Skamil	atf_set "descr" "Test unhandled SIGTRAP with the right exit code"
1091.1Schristos}
1101.1Schristostrap_simple_body()
1111.1Schristos{
1121.3Skamil	atf_check -s signal:5 -o "inline:" -e "inline:" \
1131.3Skamil		${HELPER} trap recurse
1141.1Schristos}
1151.1Schristos
1161.1Schristosatf_test_case trap_handle
1171.1Schristostrap_handle()
1181.1Schristos{
1191.3Skamil	atf_set "descr" "Test handled SIGTRAP traps call the signal handler"
1201.1Schristos}
1211.1Schristostrap_handle_body()
1221.1Schristos{
1231.3Skamil	atf_check -s exit:0 -o "inline:" -e "inline:got 5\n" \
1241.3Skamil		${HELPER} trap handle
1251.1Schristos}
1261.1Schristos
1271.1Schristosatf_test_case trap_mask
1281.1Schristostrap_mask()
1291.1Schristos{
1301.3Skamil	atf_set "descr" "Test that masking the trapped SIGTRAP signal get reset"
1311.1Schristos}
1321.1Schristostrap_mask_body()
1331.1Schristos{
1341.3Skamil	atf_check -s signal:5 -o "inline:" -e "inline:" \
1351.3Skamil		${HELPER} trap mask
1361.1Schristos}
1371.1Schristos
1381.1Schristosatf_test_case trap_handle_mask
1391.1Schristostrap_handle_mask()
1401.1Schristos{
1411.3Skamil	atf_set "descr" "Test handled and masked SIGTRAP traps get reset"
1421.1Schristos}
1431.1Schristostrap_handle_mask_body()
1441.1Schristos{
1451.3Skamil	atf_check -s signal:5 -o "inline:" -e "inline:" \
1461.3Skamil		${HELPER} trap mask handle
1471.1Schristos}
1481.1Schristos
1491.1Schristosatf_test_case trap_handle_recurse
1501.1Schristostrap_handle_recurse()
1511.1Schristos{
1521.3Skamil	atf_set "descr" "Test that receiving SIGTRAP in the handler resets"
1531.1Schristos}
1541.1Schristos
1551.1Schristostrap_handle_recurse_body()
1561.1Schristos{
1571.3Skamil	atf_check -s signal:5 -o "inline:" -e "inline:got 5\n" \
1581.3Skamil		${HELPER} trap handle recurse
1591.1Schristos}
1601.1Schristos
1611.2Skamilatf_test_case trap_ignore
1621.2Skamiltrap_ignore()
1631.2Skamil{
1641.2Skamil	atf_set "descr" "Test ignored trap with right exit code"
1651.2Skamil}
1661.2Skamil
1671.2Skamiltrap_ignore_body()
1681.2Skamil{
1691.3Skamil	atf_check -s signal:5 -o "inline:" -e "inline:" \
1701.3Skamil		${HELPER} trap ignore
1711.2Skamil}
1721.2Skamil
1731.4Skamil# SIGFPE
1741.4Skamil
1751.4Skamilatf_test_case fpe_simple
1761.4Skamilfpe_simple()
1771.4Skamil{
1781.4Skamil	atf_set "descr" "Test unhandled SIGFPE with the right exit code"
1791.4Skamil}
1801.4Skamilfpe_simple_body()
1811.4Skamil{
1821.4Skamil	atf_check -s signal:8 -o "inline:" -e "inline:" \
1831.4Skamil		${HELPER} fpe recurse
1841.4Skamil}
1851.4Skamil
1861.4Skamilatf_test_case fpe_handle
1871.4Skamilfpe_handle()
1881.4Skamil{
1891.4Skamil	atf_set "descr" "Test handled SIGFPE traps call the signal handler"
1901.4Skamil}
1911.4Skamilfpe_handle_body()
1921.4Skamil{
1931.4Skamil	atf_check -s exit:0 -o "inline:" -e "inline:got 8\n" \
1941.4Skamil		${HELPER} fpe handle
1951.4Skamil}
1961.4Skamil
1971.4Skamilatf_test_case fpe_mask
1981.4Skamilfpe_mask()
1991.4Skamil{
2001.4Skamil	atf_set "descr" "Test that masking the trapped SIGFPE signal get reset"
2011.4Skamil}
2021.4Skamilfpe_mask_body()
2031.4Skamil{
2041.4Skamil	atf_check -s signal:8 -o "inline:" -e "inline:" \
2051.4Skamil		${HELPER} fpe mask
2061.4Skamil}
2071.4Skamil
2081.4Skamilatf_test_case fpe_handle_mask
2091.4Skamilfpe_handle_mask()
2101.4Skamil{
2111.4Skamil	atf_set "descr" "Test handled and masked SIGFPE traps get reset"
2121.4Skamil}
2131.4Skamilfpe_handle_mask_body()
2141.4Skamil{
2151.4Skamil	atf_check -s signal:8 -o "inline:" -e "inline:" \
2161.4Skamil		${HELPER} fpe mask handle
2171.4Skamil}
2181.4Skamil
2191.4Skamilatf_test_case fpe_handle_recurse
2201.4Skamilfpe_handle_recurse()
2211.4Skamil{
2221.4Skamil	atf_set "descr" "Test that receiving SIGFPE in the handler resets"
2231.4Skamil}
2241.4Skamil
2251.4Skamilfpe_handle_recurse_body()
2261.4Skamil{
2271.4Skamil	atf_check -s signal:8 -o "inline:" -e "inline:got 8\n" \
2281.4Skamil		${HELPER} fpe handle recurse
2291.4Skamil}
2301.4Skamil
2311.4Skamilatf_test_case fpe_ignore
2321.4Skamilfpe_ignore()
2331.4Skamil{
2341.4Skamil	atf_set "descr" "Test ignored trap with right exit code"
2351.4Skamil}
2361.4Skamil
2371.4Skamilfpe_ignore_body()
2381.4Skamil{
2391.4Skamil	atf_check -s signal:8 -o "inline:" -e "inline:" \
2401.4Skamil		${HELPER} fpe ignore
2411.4Skamil}
2421.4Skamil
2431.4Skamil# SIGBUS
2441.4Skamil
2451.4Skamilatf_test_case bus_simple
2461.4Skamilbus_simple()
2471.4Skamil{
2481.4Skamil	atf_set "descr" "Test unhandled SIGBUS with the right exit code"
2491.4Skamil}
2501.4Skamilbus_simple_body()
2511.4Skamil{
2521.4Skamil	atf_check -s signal:10 -o "inline:" -e "inline:" \
2531.4Skamil		${HELPER} bus recurse
2541.4Skamil}
2551.4Skamil
2561.4Skamilatf_test_case bus_handle
2571.4Skamilbus_handle()
2581.4Skamil{
2591.4Skamil	atf_set "descr" "Test handled SIGBUS traps call the signal handler"
2601.4Skamil}
2611.4Skamilbus_handle_body()
2621.4Skamil{
2631.4Skamil	atf_check -s exit:0 -o "inline:" -e "inline:got 10\n" \
2641.4Skamil		${HELPER} bus handle
2651.4Skamil}
2661.4Skamil
2671.4Skamilatf_test_case bus_mask
2681.4Skamilbus_mask()
2691.4Skamil{
2701.4Skamil	atf_set "descr" "Test that masking the trapped SIGBUS signal get reset"
2711.4Skamil}
2721.4Skamilbus_mask_body()
2731.4Skamil{
2741.4Skamil	atf_check -s signal:10 -o "inline:" -e "inline:" \
2751.4Skamil		${HELPER} bus mask
2761.4Skamil}
2771.4Skamil
2781.4Skamilatf_test_case bus_handle_mask
2791.4Skamilbus_handle_mask()
2801.4Skamil{
2811.4Skamil	atf_set "descr" "Test handled and masked SIGBUS traps get reset"
2821.4Skamil}
2831.4Skamilbus_handle_mask_body()
2841.4Skamil{
2851.4Skamil	atf_check -s signal:10 -o "inline:" -e "inline:" \
2861.4Skamil		${HELPER} bus mask handle
2871.4Skamil}
2881.4Skamil
2891.4Skamilatf_test_case bus_handle_recurse
2901.4Skamilbus_handle_recurse()
2911.4Skamil{
2921.4Skamil	atf_set "descr" "Test that receiving SIGBUS in the handler resets"
2931.4Skamil}
2941.4Skamil
2951.4Skamilbus_handle_recurse_body()
2961.4Skamil{
2971.4Skamil	atf_check -s signal:10 -o "inline:" -e "inline:got 10\n" \
2981.4Skamil		${HELPER} bus handle recurse
2991.4Skamil}
3001.4Skamil
3011.4Skamilatf_test_case bus_ignore
3021.4Skamilbus_ignore()
3031.4Skamil{
3041.4Skamil	atf_set "descr" "Test ignored trap with right exit code"
3051.4Skamil}
3061.4Skamil
3071.4Skamilbus_ignore_body()
3081.4Skamil{
3091.4Skamil	atf_check -s signal:10 -o "inline:" -e "inline:" \
3101.4Skamil		${HELPER} bus ignore
3111.4Skamil}
3121.4Skamil
3131.1Schristosatf_init_test_cases()
3141.1Schristos{
3151.3Skamil	atf_add_test_case segv_simple
3161.3Skamil	atf_add_test_case segv_handle
3171.3Skamil	atf_add_test_case segv_mask
3181.3Skamil	atf_add_test_case segv_handle_recurse
3191.3Skamil	atf_add_test_case segv_ignore
3201.3Skamil
3211.1Schristos	atf_add_test_case trap_simple
3221.1Schristos	atf_add_test_case trap_handle
3231.1Schristos	atf_add_test_case trap_mask
3241.1Schristos	atf_add_test_case trap_handle_recurse
3251.2Skamil	atf_add_test_case trap_ignore
3261.4Skamil
3271.4Skamil#	atf_add_test_case ill_simple
3281.4Skamil#	atf_add_test_case ill_handle
3291.4Skamil#	atf_add_test_case ill_mask
3301.4Skamil#	atf_add_test_case ill_handle_recurse
3311.4Skamil#	atf_add_test_case ill_ignore
3321.4Skamil
3331.4Skamil	atf_add_test_case fpe_simple
3341.4Skamil	atf_add_test_case fpe_handle
3351.4Skamil	atf_add_test_case fpe_mask
3361.4Skamil	atf_add_test_case fpe_handle_recurse
3371.4Skamil	atf_add_test_case fpe_ignore
3381.4Skamil
3391.4Skamil	atf_add_test_case bus_simple
3401.4Skamil	atf_add_test_case bus_handle
3411.4Skamil	atf_add_test_case bus_mask
3421.4Skamil	atf_add_test_case bus_handle_recurse
3431.4Skamil	atf_add_test_case bus_ignore
3441.1Schristos}
345