1 1.21 riastrad # $NetBSD: t_sp.sh,v 1.21 2025/04/02 14:37:44 riastradh Exp $ 2 1.1 pooka # 3 1.1 pooka # Copyright (c) 2010 The NetBSD Foundation, Inc. 4 1.1 pooka # All rights reserved. 5 1.1 pooka # 6 1.1 pooka # Redistribution and use in source and binary forms, with or without 7 1.1 pooka # modification, are permitted provided that the following conditions 8 1.1 pooka # are met: 9 1.1 pooka # 1. Redistributions of source code must retain the above copyright 10 1.1 pooka # notice, this list of conditions and the following disclaimer. 11 1.1 pooka # 2. Redistributions in binary form must reproduce the above copyright 12 1.1 pooka # notice, this list of conditions and the following disclaimer in the 13 1.1 pooka # documentation and/or other materials provided with the distribution. 14 1.1 pooka # 15 1.1 pooka # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16 1.1 pooka # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17 1.1 pooka # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18 1.1 pooka # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19 1.1 pooka # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 1.1 pooka # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 1.1 pooka # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 1.1 pooka # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 1.1 pooka # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 1.1 pooka # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 1.1 pooka # POSSIBILITY OF SUCH DAMAGE. 26 1.1 pooka # 27 1.1 pooka 28 1.4 pooka test_case() 29 1.1 pooka { 30 1.4 pooka local name="${1}"; shift 31 1.4 pooka local check_function="${1}"; shift 32 1.1 pooka 33 1.4 pooka atf_test_case "${name}" cleanup 34 1.4 pooka eval "${name}_head() { }" 35 1.4 pooka eval "${name}_body() { \ 36 1.4 pooka ${check_function} " "${@}" "; \ 37 1.4 pooka }" 38 1.4 pooka eval "${name}_cleanup() { \ 39 1.4 pooka RUMP_SERVER=unix://commsock rump.halt 40 1.4 pooka }" 41 1.4 pooka } 42 1.4 pooka 43 1.15 martin test_case_skip() 44 1.15 martin { 45 1.15 martin local name="${1}"; shift 46 1.15 martin local pr="${1}"; shift 47 1.16 martin local msg="${1}"; shift 48 1.15 martin 49 1.15 martin atf_test_case "${name}" 50 1.15 martin eval "${name}_head() { }" 51 1.16 martin eval "${name}_body() { atf_skip "'"'"PR ${pr}: ${msg}"'"'"; }" 52 1.15 martin } 53 1.15 martin 54 1.4 pooka test_case basic basic 55 1.16 martin # test_case stress_short stress 1 56 1.17 gson test_case_skip stress_short kern/50350 "fails after insane long time" 57 1.15 martin # test_case stress_long stress 2 58 1.17 gson test_case_skip stress_long kern/50350 "leftover rump_server" 59 1.15 martin # test_case stress_killer stress 5 kill 60 1.17 gson test_case_skip stress_killer kern/55356 "leftover rump_server" 61 1.4 pooka test_case fork_simple fork simple 62 1.4 pooka test_case fork_pipecomm fork pipecomm 63 1.4 pooka test_case fork_fakeauth fork fakeauth 64 1.5 pooka test_case sigsafe sigsafe sigsafe 65 1.9 pooka test_case signal signal 66 1.15 martin # test_case reconnect reconnect 67 1.17 gson test_case_skip reconnect kern/55304 "leftover rump_server" 68 1.1 pooka 69 1.18 riastrad RUN_CLIENT=' 70 1.18 riastrad if "$@"; then 71 1.18 riastrad exit 0 72 1.18 riastrad else 73 1.18 riastrad status=$? 74 1.18 riastrad fi 75 1.18 riastrad RUMP_SERVER=unix://commsock rump.halt 76 1.20 riastrad echo Post-halt stdout: 77 1.18 riastrad cat stdout 78 1.20 riastrad echo Post-halt stderr: >&2 79 1.18 riastrad cat stderr >&2 80 1.18 riastrad exit $status 81 1.18 riastrad ' 82 1.18 riastrad 83 1.4 pooka basic() 84 1.1 pooka { 85 1.1 pooka export RUMP_SERVER=unix://commsock 86 1.3 pooka atf_check -s exit:0 rump_server ${RUMP_SERVER} 87 1.1 pooka atf_check -s exit:0 $(atf_get_srcdir)/h_client/h_simplecli 88 1.1 pooka } 89 1.1 pooka 90 1.12 gson stress_short_head() 91 1.12 gson { 92 1.12 gson atf_set "require.memory" "64M" 93 1.12 gson } 94 1.12 gson 95 1.12 gson stress_long_head() 96 1.12 gson { 97 1.12 gson atf_set "require.memory" "64M" 98 1.12 gson } 99 1.12 gson 100 1.4 pooka stress() 101 1.1 pooka { 102 1.1 pooka 103 1.1 pooka export RUMP_SERVER=unix://commsock 104 1.8 pooka atf_check -s exit:0 rump_server \ 105 1.14 bad -lrumpvfs -lrumpnet -lrumpnet_net -lrumpnet_netinet \ 106 1.13 kre ${RUMP_SERVER} 107 1.7 pooka atf_check -s exit:0 -e ignore $(atf_get_srcdir)/h_client/h_stresscli $@ 108 1.1 pooka } 109 1.1 pooka 110 1.4 pooka fork() 111 1.1 pooka { 112 1.1 pooka 113 1.4 pooka export RUMP_SERVER=unix://commsock 114 1.14 bad atf_check -s exit:0 rump_server -lrumpvfs ${RUMP_SERVER} 115 1.4 pooka atf_check -s exit:0 $(atf_get_srcdir)/h_client/h_forkcli ${1} 116 1.1 pooka } 117 1.1 pooka 118 1.5 pooka sigsafe() 119 1.5 pooka { 120 1.5 pooka 121 1.5 pooka export RUMP_SERVER=unix://commsock 122 1.18 riastrad export RUMP_STDOUT="$(pwd)/stdout" 123 1.18 riastrad export RUMP_STDERR="$(pwd)/stderr" 124 1.20 riastrad export RUMPUSER_DEBUG=1 125 1.19 riastrad atf_check -s exit:0 rump_server -v ${RUMP_SERVER} 126 1.20 riastrad echo Pre-test stdout: 127 1.19 riastrad cat stdout 128 1.20 riastrad echo Pre-test stderr: >&2 129 1.19 riastrad cat stderr >&2 130 1.18 riastrad atf_check -s exit:0 sh -c "$RUN_CLIENT" -- \ 131 1.18 riastrad "$(atf_get_srcdir)"/h_client/h_sigcli 132 1.21 riastrad if [ -f rump_server.core ]; then 133 1.21 riastrad gdb -ex bt /usr/bin/rump_server rump_server.core 134 1.21 riastrad # Extract kernel logs including a panic message 135 1.21 riastrad strings rump_server.core |grep -E '^\[.+\] ' 136 1.21 riastrad fi 137 1.9 pooka } 138 1.9 pooka 139 1.9 pooka signal() 140 1.9 pooka { 141 1.9 pooka 142 1.9 pooka export RUMP_SERVER=unix://commsock 143 1.9 pooka atf_check -s exit:0 $(atf_get_srcdir)/h_server/h_simpleserver \ 144 1.9 pooka ${RUMP_SERVER} sendsig 27 145 1.9 pooka atf_check -s signal:27 $(atf_get_srcdir)/h_client/h_simplecli block 146 1.5 pooka } 147 1.5 pooka 148 1.10 pooka reconnect() 149 1.10 pooka { 150 1.10 pooka 151 1.10 pooka 152 1.10 pooka export RUMP_SERVER=unix://commsock 153 1.10 pooka atf_check -s exit:0 rump_server ${RUMP_SERVER} 154 1.11 pooka atf_check -s exit:0 -e ignore $(atf_get_srcdir)/h_client/h_reconcli 2 155 1.10 pooka } 156 1.10 pooka 157 1.1 pooka atf_init_test_cases() 158 1.1 pooka { 159 1.1 pooka 160 1.1 pooka atf_add_test_case basic 161 1.4 pooka atf_add_test_case stress_short 162 1.4 pooka atf_add_test_case stress_long 163 1.7 pooka atf_add_test_case stress_killer 164 1.4 pooka atf_add_test_case fork_simple 165 1.4 pooka atf_add_test_case fork_pipecomm 166 1.4 pooka atf_add_test_case fork_fakeauth 167 1.5 pooka atf_add_test_case sigsafe 168 1.9 pooka atf_add_test_case signal 169 1.10 pooka atf_add_test_case reconnect 170 1.1 pooka } 171