MFC r277627,r277650,r282059,r283056,r283840,r283845:

r277627 (by will):

Add routing_test:static_ipv6_loopback_route_for_each_fib.
It tests that all FIBs get a static IPv6 loopback route.

Submitted by:	asomers
Sponsored by:	Spectra Logic
MFSpectraBSD:	1048456 on 2014/03/13
		1114523 on 2015/01/23

r277650 (by will):

Add tests/etc/rc.d to mtree.

Submitted by:	stefanf
MFC with:	277627

r282059:

Move etc/tests/rc.d to etc/rc.d/tests to match the directory layout jmmv@
documented and implemented in other areas of the FreeBSD tree

r283056:

Move all test integration pieces for etc/ from etc/ to tests/

This is being done to fix breakage with make distribution with read-only
source trees as make distribution doesn't use make obj like building
tests/ does in all cases

Reported by: Wolfgang Zenker <wolfgang@lyxys.ka.sub.org>
Suggested by: jhb

r283840:

Remove empty tests directory

r283845:

Append to SUBDIR, not set it

Pointyhat to: ngie
This commit is contained in:
ngie 2015-05-31 22:39:48 +00:00
parent baef3fdea0
commit f0e277f517
6 changed files with 152 additions and 6 deletions

View File

@ -10,10 +10,6 @@ SUBDIR= \
SUBDIR+=sendmail
.endif
.if ${MK_TESTS} != "no"
SUBDIR+=tests
.endif
BIN1= crontab \
devd.conf \
devfs.conf \

View File

@ -50,6 +50,8 @@
..
..
etc
rc.d
..
..
games
..

View File

@ -2,7 +2,8 @@
.include <bsd.own.mk>
SUBDIR= sys
SUBDIR+= etc
SUBDIR+= sys
TESTSDIR= ${TESTSBASE}
KYUAFILE= yes

View File

@ -4,7 +4,9 @@
TESTSDIR= ${TESTSBASE}/etc
.PATH: ${.CURDIR:H:H}/tests
.PATH: ${.CURDIR:H}
KYUAFILE= yes
SUBDIR+= rc.d
.include <bsd.test.mk>

7
tests/etc/rc.d/Makefile Normal file
View File

@ -0,0 +1,7 @@
# $FreeBSD$
TESTSDIR= ${TESTSBASE}/etc/rc.d
ATF_TESTS_SH+= routing_test
.include <bsd.test.mk>

138
tests/etc/rc.d/routing_test.sh Executable file
View File

@ -0,0 +1,138 @@
#
# Copyright (c) 2014 Spectra Logic Corporation
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions, and the following disclaimer,
# without modification.
# 2. Redistributions in binary form must reproduce at minimum a disclaimer
# substantially similar to the "NO WARRANTY" disclaimer below
# ("Disclaimer") and any redistribution must be conditioned upon
# including a substantially similar Disclaimer requirement for further
# binary redistribution.
#
# NO WARRANTY
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGES.
#
# Authors: Alan Somers (Spectra Logic Corporation)
#
# $FreeBSD$
atf_test_case static_ipv6_loopback_route_for_each_fib cleanup
static_ipv6_loopback_route_for_each_fib_head()
{
atf_set "descr" "Every FIB should have a static IPv6 loopback route"
atf_set "require.user" "root"
atf_set "require.config" "fibs"
atf_set "require.progs" "sysrc"
}
static_ipv6_loopback_route_for_each_fib_body()
{
# Configure the TAP interface to use an RFC5737 nonrouteable address
# and a non-default fib
ADDR="192.0.2.2"
SUBNET="192.0.2.0"
MASK="24"
# Check system configuration
if [ 0 != `sysctl -n net.add_addr_allfibs` ]; then
atf_skip "This test requires net.add_addr_allfibs=0"
fi
get_fibs 1
get_tap
# Configure a TAP interface in /etc/rc.conf. Register the sysrc
# variable for cleanup.
echo "ifconfig_${TAP}" >> "sysrc_vars_to_cleanup"
sysrc ifconfig_${TAP}="${ADDR}/${MASK} fib ${FIB0}"
# Start the interface
service netif start ${TAP}
# Check for an IPv6 loopback route
setfib ${FIB0} netstat -rn -f inet6 | grep -q "^::1.*lo0$"
if [ 0 -eq $? ]; then
atf_pass
else
setfib ${FIB0} netstat -rn -f inet6
atf_fail "Did not find an IPv6 loopback route"
fi
}
static_ipv6_loopback_route_for_each_fib_cleanup()
{
cleanup_sysrc
cleanup_tap
}
atf_init_test_cases()
{
atf_add_test_case static_ipv6_loopback_route_for_each_fib
}
# Looks up one or more fibs from the configuration data and validates them.
# Returns the results in the env varilables FIB0, FIB1, etc.
# parameter numfibs The number of fibs to lookup
get_fibs()
{
NUMFIBS=$1
net_fibs=`sysctl -n net.fibs`
i=0
while [ $i -lt "$NUMFIBS" ]; do
fib=`atf_config_get "fibs" | \
awk -v i=$(( i + 1 )) '{print $i}'`
echo "fib is ${fib}"
eval FIB${i}=${fib}
if [ "$fib" -ge "$net_fibs" ]; then
msg="The ${i}th configured fib is ${fub}, which is "
msg="$msg not less than net.fibs (${net_fibs})"
atf_skip "$msg"
fi
i=$(( $i + 1 ))
done
}
# Creates a new tap(4) interface, registers it for cleanup, and returns the
# name via the environment variable TAP
get_tap()
{
local TAPN=0
while ! ifconfig tap${TAPN} create > /dev/null 2>&1; do
if [ "$TAPN" -ge 8 ]; then
atf_skip "Could not create a tap(4) interface"
else
TAPN=$(($TAPN + 1))
fi
done
local TAPD=tap${TAPN}
# Record the TAP device so we can clean it up later
echo ${TAPD} >> "tap_devices_to_cleanup"
TAP=${TAPD}
}
cleanup_sysrc()
{
for var in `cat "sysrc_vars_to_cleanup"`; do
sysrc -x $var
done
}
cleanup_tap()
{
for TAPD in `cat "tap_devices_to_cleanup"`; do
ifconfig ${TAPD} destroy
done
}