1*3a37f06fSmartin# $NetBSD: t_exec.sh,v 1.12 2020/11/08 08:54:50 martin Exp $ 2fd59a0e4Spooka# 3fd59a0e4Spooka# Copyright (c) 2011 The NetBSD Foundation, Inc. 4fd59a0e4Spooka# All rights reserved. 5fd59a0e4Spooka# 6fd59a0e4Spooka# Redistribution and use in source and binary forms, with or without 7fd59a0e4Spooka# modification, are permitted provided that the following conditions 8fd59a0e4Spooka# are met: 9fd59a0e4Spooka# 1. Redistributions of source code must retain the above copyright 10fd59a0e4Spooka# notice, this list of conditions and the following disclaimer. 11fd59a0e4Spooka# 2. Redistributions in binary form must reproduce the above copyright 12fd59a0e4Spooka# notice, this list of conditions and the following disclaimer in the 13fd59a0e4Spooka# documentation and/or other materials provided with the distribution. 14fd59a0e4Spooka# 15fd59a0e4Spooka# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16fd59a0e4Spooka# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17fd59a0e4Spooka# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18fd59a0e4Spooka# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19fd59a0e4Spooka# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20fd59a0e4Spooka# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21fd59a0e4Spooka# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22fd59a0e4Spooka# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23fd59a0e4Spooka# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24fd59a0e4Spooka# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25fd59a0e4Spooka# POSSIBILITY OF SUCH DAMAGE. 26fd59a0e4Spooka# 27fd59a0e4Spooka 2848e354a3Sbadrumpsrv='rump_server -lrumpnet -lrumpnet_net -lrumpnet_netinet' 29fd59a0e4Spookaexport RUMP_SERVER=unix://csock 305c6cde8aSpookaexport RUMPHIJACK_RETRYCONNECT='die' 31fd59a0e4Spooka 32fd59a0e4Spookaatf_test_case noexec cleanup 33fd59a0e4Spookanoexec_head() 34fd59a0e4Spooka{ 35fd59a0e4Spooka atf_set "descr" "check that we see what we expect without exec" 36fd59a0e4Spooka} 37fd59a0e4Spooka 38fd59a0e4Spookanoexec_body() 39fd59a0e4Spooka{ 40fd59a0e4Spooka 41fd59a0e4Spooka atf_check -s exit:0 ${rumpsrv} ${RUMP_SERVER} 429f22773cSpooka atf_check -s exit:0 env $(atf_get_srcdir)/h_exec 43828eb913Spooka atf_check -s exit:0 -o save:sstat.out rump.sockstat -n 44fd59a0e4Spooka atf_check -s exit:0 -o match:'^root.*h_exec.*tcp.*\*\.1234' \ 45fd59a0e4Spooka sed -n 2p sstat.out 46fd59a0e4Spooka atf_check -s exit:0 -o match:'^root.*h_exec.*tcp.*\*\.2345' \ 47fd59a0e4Spooka sed -n 3p sstat.out 48fd59a0e4Spooka} 49fd59a0e4Spooka 50fd59a0e4Spookanoexec_cleanup() 51fd59a0e4Spooka{ 52fd59a0e4Spooka rump.halt 53fd59a0e4Spooka} 54fd59a0e4Spooka 55fd59a0e4Spookaatf_test_case exec cleanup 56fd59a0e4Spookaexec_head() 57fd59a0e4Spooka{ 58fd59a0e4Spooka atf_set "descr" "check that client names changes after exec" 59fd59a0e4Spooka} 60fd59a0e4Spooka 61fd59a0e4Spookaexec_body() 62fd59a0e4Spooka{ 63fd59a0e4Spooka 64fd59a0e4Spooka atf_check -s exit:0 ${rumpsrv} ${RUMP_SERVER} 65daf96a00Spooka atf_check -s exit:0 $(atf_get_srcdir)/h_exec $(atf_get_srcdir)/h_exec 66828eb913Spooka atf_check -s exit:0 -o save:sstat.out rump.sockstat -n 67fd59a0e4Spooka atf_check -s exit:0 -o match:'^root.*h_ution.*tcp.*\*\.1234' \ 68fd59a0e4Spooka sed -n 2p sstat.out 69fd59a0e4Spooka atf_check -s exit:0 -o match:'^root.*h_ution.*tcp.*\*\.2345' \ 70fd59a0e4Spooka sed -n 3p sstat.out 71fd59a0e4Spooka} 72fd59a0e4Spooka 73fd59a0e4Spookaexec_cleanup() 74fd59a0e4Spooka{ 75fd59a0e4Spooka rump.halt 76fd59a0e4Spooka} 77fd59a0e4Spooka 7836823968Spookaatf_test_case cloexec cleanup 7936823968Spookacloexec_head() 8036823968Spooka{ 8136823968Spooka atf_set "descr" "check that FD_CLOEXEC works" 8236823968Spooka} 8336823968Spooka 8436823968Spookacloexec_body() 8536823968Spooka{ 8636823968Spooka 8736823968Spooka atf_check -s exit:0 ${rumpsrv} ${RUMP_SERVER} 889f22773cSpooka atf_check -s exit:0 \ 89daf96a00Spooka $(atf_get_srcdir)/h_exec $(atf_get_srcdir)/h_exec cloexec1 90828eb913Spooka atf_check -s exit:0 -o save:sstat.out rump.sockstat -n 9136823968Spooka atf_check -s exit:0 -o inline:'2\n' sed -n '$=' sstat.out 9236823968Spooka atf_check -s exit:0 -o match:'^root.*h_ution.*tcp.*\*\.2345' \ 9336823968Spooka sed -n 2p sstat.out 9436823968Spooka} 9536823968Spooka 9636823968Spookacloexec_cleanup() 9736823968Spooka{ 9836823968Spooka rump.halt 9936823968Spooka} 10036823968Spooka 1011a011130Spookaatf_test_case vfork cleanup 1021a011130Spookavfork_head() 1031a011130Spooka{ 1041a011130Spooka atf_set "descr" "test rumpclient_vfork()" 1051a011130Spooka} 1061a011130Spooka 1071a011130Spookavfork_body() 1081a011130Spooka{ 1091a011130Spooka 1101a011130Spooka atf_check -s exit:0 ${rumpsrv} ${RUMP_SERVER} 1111a011130Spooka atf_check -s exit:0 \ 1121a011130Spooka $(atf_get_srcdir)/h_exec $(atf_get_srcdir)/h_exec vfork_please 113828eb913Spooka atf_check -s exit:0 -o save:sstat.out rump.sockstat -n 1141a011130Spooka atf_check -s exit:0 -o inline:'5\n' sed -n '$=' sstat.out 1151a011130Spooka atf_check -s exit:0 -o match:'^root.*h_ution.*tcp.*\*\.1234' \ 1161a011130Spooka cat sstat.out 1171a011130Spooka atf_check -s exit:0 -o match:'^root.*h_ution.*tcp.*\*\.2345' \ 1181a011130Spooka cat sstat.out 1191a011130Spooka atf_check -s exit:0 -o match:'^root.*fourchette.*tcp.*\*\.1234' \ 1201a011130Spooka cat sstat.out 1211a011130Spooka atf_check -s exit:0 -o match:'^root.*fourchette.*tcp.*\*\.2345' \ 1221a011130Spooka cat sstat.out 1231a011130Spooka} 1241a011130Spooka 1251a011130Spookavfork_cleanup() 1261a011130Spooka{ 1271a011130Spooka rump.halt 1281a011130Spooka} 1291a011130Spooka 13046dfa511Spookaatf_test_case threxec cleanup 13146dfa511Spookathrexec_head() 13246dfa511Spooka{ 13346dfa511Spooka atf_set "descr" "check that threads are killed before exec continues" 13446dfa511Spooka} 13546dfa511Spooka 13646dfa511Spookathrexec_body() 13746dfa511Spooka{ 138*3a37f06fSmartin # atf_skip "PR 55338: triggers a scheduler bug" 13946dfa511Spooka atf_check -s exit:0 rump_server ${RUMP_SERVER} 14046dfa511Spooka atf_check -s exit:0 $(atf_get_srcdir)/h_execthr 14146dfa511Spooka} 14246dfa511Spooka 14346dfa511Spookathrexec_cleanup() 14446dfa511Spooka{ 14546dfa511Spooka rump.halt 14646dfa511Spooka} 147fd59a0e4Spooka 148fd59a0e4Spookaatf_init_test_cases() 149fd59a0e4Spooka{ 150fd59a0e4Spooka atf_add_test_case noexec 151fd59a0e4Spooka atf_add_test_case exec 15236823968Spooka atf_add_test_case cloexec 1531a011130Spooka atf_add_test_case vfork 15446dfa511Spooka atf_add_test_case threxec 155fd59a0e4Spooka} 156