]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/atf/test-programs/fork_test.sh
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / atf / test-programs / fork_test.sh
1 #
2 # Automated Testing Framework (atf)
3 #
4 # Copyright (c) 2007 The NetBSD Foundation, Inc.
5 # All rights reserved.
6 #
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
9 # are met:
10 # 1. Redistributions of source code must retain the above copyright
11 #    notice, this list of conditions and the following disclaimer.
12 # 2. Redistributions in binary form must reproduce the above copyright
13 #    notice, this list of conditions and the following disclaimer in the
14 #    documentation and/or other materials provided with the distribution.
15 #
16 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
17 # CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18 # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 # IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
21 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23 # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25 # IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27 # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 #
29
30 # TODO: This test program is about checking the test case's "environment"
31 # (not the variables).  Should be named something else than t_fork.
32
33 atf_test_case stop
34 stop_head()
35 {
36     atf_set "descr" "Tests that sending a stop signal to a test case does" \
37                     "not report it as failed"
38 }
39 stop_body()
40 {
41     for h in $(get_helpers); do
42         ${h} -s $(atf_get_srcdir) -v pidfile=$(pwd)/pid \
43              -v donefile=$(pwd)/done -r resfile fork_stop &
44         ppid=${!}
45         echo "Waiting for pid file for test program ${ppid}"
46         while test ! -f pid; do sleep 1; done
47         pid=$(cat pid)
48         echo "Test case's pid is ${pid}"
49         kill -STOP ${pid}
50         touch done
51         echo "Wrote done file"
52         kill -CONT ${pid}
53         wait ${ppid}
54         atf_check -s eq:0 -o ignore -e empty grep '^passed$' resfile
55         rm -f pid done
56     done
57 }
58
59 atf_init_test_cases()
60 {
61     atf_add_test_case stop
62 }
63
64 # vim: syntax=sh:expandtab:shiftwidth=4:softtabstop=4