Merge #1 initial commit of tests from upstreamfirst project

This commit is contained in:
Phil Sutter 2018-01-24 13:04:57 +00:00
commit 654c72b694
10 changed files with 823 additions and 0 deletions

View File

@ -0,0 +1,64 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /CoreOS/iproute/Sanity/bridge-utility
# Description: Test basic bridge funcionality
# Author: David Spurek <dspurek@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/CoreOS/iproute/Sanity/bridge-utility
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
test -x runtest.sh || chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: David Spurek <dspurek@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Test basic bridge funcionality" >> $(METADATA)
@echo "Type: Sanity" >> $(METADATA)
@echo "TestTime: 15m" >> $(METADATA)
@echo "RunFor: iproute" >> $(METADATA)
@echo "Requires: iproute" >> $(METADATA)
@echo "Requires: bridge-utils" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
rhts-lint $(METADATA)

View File

@ -0,0 +1,3 @@
PURPOSE of /CoreOS/iproute/Sanity/bridge-utility
Description: Test basic bridge funcionality
Author: David Spurek <dspurek@redhat.com>

268
tests/bridge-utility/runtest.sh Executable file
View File

@ -0,0 +1,268 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/iproute/Sanity/bridge-utility
# Description: Test basic bridge funcionality
# Author: David Spurek <dspurek@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/bin/rhts-environment.sh || exit 1
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="iproute"
PACKAGES="$PACKAGE"
rlIsRHEL 6 && PACKAGES=( ${PACKAGES[@]} "bridge-utils" )
vxlan_name="testvxlan"
bridge_name="testbridge"
lsmod | grep dummy
dummy_loaded=$?
rlJournalStart
rlPhaseStartSetup
# Check reqiured packages.
for P in ${PACKAGES[@]}; do rlCheckRpm $P || rlDie "Package $P is missing"; done
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "pushd $TmpDir"
no_dummy=0
if [ $dummy_loaded -eq 1 ] ; then
# dummy module doesn't loaded before the test
modprobe dummy numdummies=2
else
# dummy module loaded before the test, backup number of loaded dummy devices (nmdumies parameter), it is doesn't show under /sys/module/dummy/parameters
dummies_count=`ip a | grep dummy | tail -n 1 | sed -r 's/.*dummy([0-9]+).*/\1/'`
if [ -z $dummies_count] ; then
# dummy module is loaded but no dummy device exists
no_dummy=1
else
# get correct count, dummy0 is the first
let "dummies_count=$dummies_count+1"
fi
rmmod dummy
modprobe dummy numdummies=2
fi
rlRun "ip addr flush dev dummy0"
rlRun "ip link set dummy0 up"
rlRun "ip addr flush dev dummy1"
rlRun "ip link set dummy1 up"
rlRun "ip addr add 127.0.0.13/24 dev dummy0" 0 "Setting IPv4 address to
dummy0 interface"
rlRun "ip addr add 127.0.0.14/24 dev dummy1" 0 "Setting IPv4 address to
dummy1 interface"
rlPhaseEnd
rlPhaseStartTest "Test bridge fdb basic funcionality with vxlan device"
rlRun "ip link add $vxlan_name type vxlan id 10 group 239.0.0.10 ttl 4 dev dummy0" 0 "add vxlan interface"
rlRun "ip addr add 192.168.1.1/24 broadcast 192.168.1.255 dev $vxlan_name" 0 "setting address to vxlan interface"
rlRun "ip -d link show $vxlan_name" 0 "show details about vxlan device"
vxlan_ether_address=`ip -d link show $vxlan_name | grep link/ether | awk '{print $2}'`
echo "ethernet address of vxlan device is: $vxlan_ether_address"
# add new entry to bridge fdb database (device must by type vxlan)
rlRun "bridge fdb add $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name"
# check if entry was successfuly added
bridge fdb show dev $vxlan_name &> bridge_show.out
cat bridge_show.out
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2" bridge_show.out "-i"
# try replace entry in bridge fdb database
rlRun "bridge fdb replace $vxlan_ether_address dst 192.19.0.3 dev $vxlan_name"
# check if entry was successfuly changed
bridge fdb show dev $vxlan_name &> bridge_show.out
cat bridge_show.out
rlAssertGrep "$vxlan_ether_address dst 192.19.0.3" bridge_show.out "-i"
rlRun "bridge fdb del $vxlan_ether_address dev $vxlan_name"
# check if entry was successfuly deleted
# 'default' entry added by ip link command should be still listed
bridge fdb show dev $vxlan_name &> bridge_show.out
cat bridge_show.out
rlAssertNotGrep "$vxlan_ether_address dst 192.19.0.2" bridge_show.out "-i"
rlAssertGrep "dst 239.0.0.10 via dummy0" bridge_show.out "-i"
# add new entry to bridge fdb database with port,vni and via options
rlRun "bridge fdb add $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name port 10000 vni 100 via dummy0"
# check if entry was successfuly added
bridge fdb show dev $vxlan_name &> bridge_show.out
cat bridge_show.out
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2 port 10000 vni 100 via dummy0" bridge_show.out "-i"
rlRun "bridge fdb del $vxlan_ether_address dev $vxlan_name"
# add new entry to bridge fdb database with self option
rlRun "bridge fdb add $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name self"
# check if entry was successfuly added
bridge fdb show dev $vxlan_name &> bridge_show.out
cat bridge_show.out
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2 self" bridge_show.out "-i"
# replace entry in bridge fdb database with temp option
rlRun "bridge fdb replace $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name temp"
# check if entry was successfuly changed
bridge fdb show dev $vxlan_name &> bridge_show.out
cat bridge_show.out
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2 self static" bridge_show.out "-i"
# replace entry in bridge fdb database with local option
rlRun "bridge fdb replace $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name local"
# check if entry was successfuly changed
bridge fdb show dev $vxlan_name &> bridge_show.out
cat bridge_show.out
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2 self permanent" bridge_show.out "-i"
# replace entry in bridge fdb database with router option
rlRun "bridge fdb replace $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name router"
# check if entry was successfuly changed
bridge fdb show dev $vxlan_name &> bridge_show.out
cat bridge_show.out
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2 self router permanent" bridge_show.out "-i"
rlRun "bridge fdb del $vxlan_ether_address dev $vxlan_name"
rlRun "ip link del $vxlan_name" 0
rlPhaseEnd
rlPhaseStartTest "Test bridge fdb basic funcionality with bridge device, test bridge link set command"
# on rhels < 7 must be bridge device added with brctl (add type bridge is not supported)
rlIsRHEL '>=7' && rlRun "ip link add $bridge_name type bridge" 0 || rlRun "brctl addbr $bridge_name" 0
if rlIsRHEL '>=7'; then
rlRun "ip link set dummy0 master $bridge_name" 0 "Add dummy interface to bridge"
rlRun "bridge link show dev dummy0"
# test bridge link set, command is not supported on rhel < 7 (->ndo_bridge_setlink() is not in our kernel.)
rlRun "bridge link set dev dummy0 cost 10"
rlRun "bridge link show dev dummy0 &> bridge_show.out" 0
cat bridge_show.out
rlAssertGrep "dummy0.*cost 10 $" bridge_show.out "-i"
# add new entry to bridge fdb database with self option
rlRun "bridge fdb add 00:1b:21:55:23:61 dev dummy0 self"
bridge fdb show dev dummy0 &> bridge_show.out
cat bridge_show.out
rlAssertGrep "00:1b:21:55:23:61 self" bridge_show.out "-i"
# add new entry to bridge fdb database with master option
rlRun "bridge fdb add 00:1b:21:55:23:62 dev dummy0 master"
bridge fdb show dev dummy0 &> bridge_show.out
cat bridge_show.out
rlAssertGrep "00:1b:21:55:23:62 vlan 1" bridge_show.out "-i"
# add new entry to bridge fdb database with master and self options (entries for both should be added)
rlRun "bridge fdb add 00:1b:21:55:23:63 dev dummy0 self master"
bridge fdb show dev dummy0 &> bridge_show.out
cat bridge_show.out
rlAssertGrep "00:1b:21:55:23:63 self" bridge_show.out "-i"
rlAssertGrep "00:1b:21:55:23:63 vlan 1" bridge_show.out "-i"
else
rlRun "brctl addif $bridge_name dummy0" 0 "Add dummy interface to bridge"
rlRun "brctl show $bridge_name"
fi
rlIsRHEL '>=7' && rlRun "ip link set dummy0 nomaster" 0 "Remove dummy vlan interface from bridge" || rlRun "brctl delif $bridge_name dummy0" 0 "Remove dummy interface from bridge"
rlIsRHEL '>=7' && rlRun "ip link del $bridge_name" 0 || rlRun "brctl delbr $bridge_name" 0
rlPhaseEnd
rlPhaseStartTest "Test bridge vlan basic funcionality"
# on rhels < 7 must be bridge device added with brctl (add type bridge is not supported)
rlIsRHEL '>=7' && rlRun "ip link add $bridge_name type bridge" 0 || rlRun "brctl addbr $bridge_name" 0
rlRun "ip link add link dummy0 name dummy0.10 type vlan id 10"
if rlIsRHEL '>=7' ; then
rlRun "ip link set dummy0.10 master $bridge_name" 0 "Add dummy vlan interface to bridge"
rlRun "bridge link show dev dummy0.10"
else
rlRun "brctl addif $bridge_name dummy0.10" 0 "Add dummy vlan interface to bridge"
rlRun "brctl show $bridge_name"
fi
# bridge vlan is not supported on rhel < 6.8
if rlIsRHEL '>=7' || rlIsRHEL '>=6.8' || rlIsFedora; then
rlRun "bridge vlan add dev dummy0.10 vid 5" 0
else
rlRun "bridge vlan add dev dummy0.10 vid 5" 2
fi
# test correct funcionality only on rhel 7
if rlIsRHEL '>=7' ; then
bridge vlan &> bridge_vlan.out
cat bridge_vlan.out
#rlAssertGrep "dummy0.10.*5" bridge_vlan.out "-i"
#rlAssertGrep "dummy0.10.*10" bridge_vlan.out "-i"
rlRun "grep -A 2 'dummy0.10' bridge_vlan.out | grep '5'"
rlRun "bridge vlan del dev dummy0.10 vid 5"
bridge vlan &> bridge_vlan.out
cat bridge_vlan.out
#rlAssertNotGrep "dummy0.10" bridge_vlan.out "-i"
rlRun "grep -A 2 'dummy0.10' bridge_vlan.out | grep '5'" 1
fi
rlIsRHEL '>=7' && rlRun "ip link set dummy0.10 nomaster" 0 "Remove dummy vlan interface from bridge" || rlRun "brctl delif $bridge_name dummy0.10" 0 "Remove dummy vlan interface from bridge"
rlRun "ip link del dev dummy0.10"
rlIsRHEL '>=7' && rlRun "ip link del $bridge_name" 0 || rlRun "brctl delbr $bridge_name" 0
rlPhaseEnd
rlPhaseStartTest "Test bridge mdb basic funcionality"
rlRun "bridge mdb show" 0
rlPhaseEnd
if rlIsRHEL '>=7'; then
rlPhaseStartTest
rlRun "ip link add test_bridge type bridge"
rlRun "bridge fdb show | grep 'dev test_bridge' | grep 'master test_bridge'"
rlRun "ip link del test_bridge"
rlPhaseEnd
fi
rlPhaseStartCleanup
rlRun "ip route flush dev dummy0"
rlRun "ip link set dummy0 down"
rlRun "ip addr flush dev dummy0"
rlRun "ip route flush dev dummy1"
rlRun "ip link set dummy1 down"
rlRun "ip addr flush dev dummy1"
if [ $dummy_loaded -eq 1 ] ; then
rmmod dummy
else
rmmod dummy
if [ $no_dummy -eq 1 ] ; then
# load dummy module and delete dummy0 with ip link
modprobe dummy
rlIsRHEL '>=7' && rlRun "ip link del dummy0"
else
modprobe dummy numdummies=$dummies_count
fi
fi
rlRun "service network restart" 0,1 "Restarting network, just for sure"
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,63 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /CoreOS/iproute/Sanity/ip-neigh-sanity-test
# Description: Test basic ip neigh functionality
# Author: Jaroslav Aster <jaster@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/CoreOS/iproute/Sanity/ip-neigh-sanity-test
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
test -x runtest.sh || chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Jaroslav Aster <jaster@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Test basic ip neigh funcionality" >> $(METADATA)
@echo "Type: Sanity" >> $(METADATA)
@echo "TestTime: 15m" >> $(METADATA)
@echo "RunFor: iproute" >> $(METADATA)
@echo "Requires: iproute" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
rhts-lint $(METADATA)

View File

@ -0,0 +1,3 @@
PURPOSE of /CoreOS/iproute/Sanity/ip-neigh-sanity-test
Description: Test basic ip neigh funcionality
Author: Jaroslav Aster <jaster@redhat.com>

View File

@ -0,0 +1,234 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/iproute/Sanity/ip-neigh-sanity-test
# Description: Test basic ip neigh funcionality
# Author: Jaroslav Aster <jaster@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/bin/rhts-environment.sh || exit 1
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="iproute"
TEST_IFACE="test-iface"
TEST_IP4_PREFIX="192.168.100"
TEST_IP6_PREFIX="2000::"
TEST_MAC_PREFIX="00:c0:7b:7d:00"
rlIsRHEL '>=7' && MAN_PAGE="ip-neighbour" || MAN_PAGE="ip"
MESSAGES="/var/log/messages"
TMP_MESSAGES="$(mktemp)"
create_dummy_iface()
{
rlRun "ip link add name ${TEST_IFACE} type dummy" 0 "Creating dummy interface: '${TEST_IFACE}'."
}
delete_dummy_iface()
{
rlRun "ip link del ${TEST_IFACE}" 0 "Removing dummy interface: '${TEST_IFACE}'."
rlRun "rmmod dummy" 0,1 "Removing dummy module."
}
rlJournalStart
rlPhaseStartSetup
rlCheckRpm "$PACKAGE"
create_dummy_iface
rlPhaseEnd
if rlIsRHEL '>=7'; then
rlPhaseStartTest
for word in add del change replace show flush all proxy to dev nud unused permanent reachable probe failed incomplete stale delay noarp none; do
if ! { [ "$word" = "unused" ] || [ "$word" = "all" ]; }; then
rlRun "ip n help 2>&1 | grep -e '[^[:alnum:]]${word}[^[:alnum:]]'" 0 "Checking there is '${word}' in ip neighbour help."
fi
rlRun "man ${MAN_PAGE} | col -b | grep -e '[^[:alnum:]]${word}[^[:alnum:]]'" 0 "Checking there is '${word}' in ${MAN_PAGE} man page."
done
rlPhaseEnd
fi
rlPhaseStartTest "Functional Test"
rlLogInfo "IPv4"
rlRun "ip neigh add ${TEST_IP4_PREFIX}.1 lladdr ${TEST_MAC_PREFIX}:c6 dev ${TEST_IFACE} nud permanent"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.1 | grep 'PERMANENT'"
rlRun "ip neigh add ${TEST_IP4_PREFIX}.2 lladdr ${TEST_MAC_PREFIX}:c7 dev ${TEST_IFACE}"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.2 | grep 'PERMANENT'"
rlRun "ip neigh add ${TEST_IP4_PREFIX}.3 lladdr ${TEST_MAC_PREFIX}:c8 dev ${TEST_IFACE} nud noarp"
rlRun "ip neigh show nud all ${TEST_IP4_PREFIX}.3 | grep 'NOARP'"
rlRun "ip neigh add ${TEST_IP4_PREFIX}.4 lladdr ${TEST_MAC_PREFIX}:c9 dev ${TEST_IFACE} nud noarp"
rlRun "ip neigh show nud all ${TEST_IP4_PREFIX}.4 | grep 'NOARP'"
rlRun "ip neigh add lladdr ${TEST_MAC_PREFIX}:ce dev ${TEST_IFACE} proxy ${TEST_IP4_PREFIX}.10"
rlIsRHEL ">=7" && rlRun "ip neigh show proxy | grep ${TEST_IP4_PREFIX}.10"
rlRun "test $(ip neigh show dev ${TEST_IFACE} | wc -l) -eq 2" 0 "There are two items in neighbours."
rlRun "ip neigh del ${TEST_IP4_PREFIX}.1 dev ${TEST_IFACE}"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.1 | grep 'FAILED'"
rlRun "ip neigh change ${TEST_IP4_PREFIX}.2 lladdr ${TEST_MAC_PREFIX}:ca dev ${TEST_IFACE} nud reachable"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.2 | grep 'REACHABLE'"
rlRun "ip neigh replace ${TEST_IP4_PREFIX}.3 lladdr ${TEST_MAC_PREFIX}:cb dev ${TEST_IFACE} nud permanent"
rlRun "ip neigh show nud all ${TEST_IP4_PREFIX}.3 | grep 'PERMANENT'"
rlRun "test $(ip neigh show dev ${TEST_IFACE} nud permanent | wc -l) -eq 1" 0 "There is one permanent item in neighbours."
rlRun "test $(ip neigh show dev ${TEST_IFACE} nud reachable | wc -l) -eq 1" 0 "There is one reachable item in neighbours."
rlRun "test $(ip neigh show dev ${TEST_IFACE} nud noarp | wc -l) -eq 1" 0 "There is one noarp item in neighbours."
rlRun "test $(ip neigh show dev ${TEST_IFACE} nud failed | wc -l) -eq 1" 0 "There is one failed item in neighbours."
rlIsRHEL ">=7" && rlRun "test $(ip neigh show dev ${TEST_IFACE} proxy | wc -l) -eq 1" 0 "There is one proxy item in neighbours."
rlRun "test $(ip neigh show dev ${TEST_IFACE} | grep -e PERMANENT -e REACHABLE -e FAILED | wc -l) -eq 3" 0 "There are three permanent or reachable or failed items in neighbours."
rlRun "ip neigh show dev ${TEST_IFACE} unused"
rlRun "ip neigh change ${TEST_IP4_PREFIX}.4 dev ${TEST_IFACE} nud delay"
rlRun "ip neigh flush ${TEST_IP4_PREFIX}.4 dev ${TEST_IFACE}"
rlRun "ip neigh show nud all | grep '${TEST_IP4_PREFIX}.4'"
rlRun "ip -s neigh flush ${TEST_IP4_PREFIX}.4 dev ${TEST_IFACE}"
rlRun "ip -s -s neigh flush ${TEST_IP4_PREFIX}.4 dev ${TEST_IFACE}"
rlRun "ip neigh add ${TEST_IP4_PREFIX}.11 lladdr ${TEST_MAC_PREFIX}:c8 dev ${TEST_IFACE} nud permanent"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep 'PERMANENT'"
rlRun "ip neigh change ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud reachable"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep 'REACHABLE'"
rlRun "ip neigh change ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud probe"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep 'PROBE'"
rlRun "ip neigh change ${TEST_IP4_PREFIX}.11 lladdr ${TEST_MAC_PREFIX}:c9 dev ${TEST_IFACE} nud failed"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep 'FAILED'"
rlRun "ip neigh change ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud incomplete"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep 'INCOMPLETE'"
rlRun "ip neigh replace ${TEST_IP4_PREFIX}.11 lladdr ${TEST_MAC_PREFIX}:cb dev ${TEST_IFACE} nud stale"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep '${TEST_MAC_PREFIX}:cb' | grep 'STALE'"
rlRun "ip neigh replace ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud delay"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep -e 'DELAY' -e 'PROBE'"
rlRun "ip neigh replace ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud noarp"
rlRun "ip neigh show nud all ${TEST_IP4_PREFIX}.11 | grep 'NOARP'"
rlRun "ip neigh change ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud none"
rlRun "ip neigh show nud none | grep ${TEST_IP4_PREFIX}.11"
rlRun "ip neigh show ${TEST_IP4_PREFIX}.0/24"
rlLogInfo "IPv6"
rlRun "ip -6 neigh add ${TEST_IP6_PREFIX}1 lladdr ${TEST_MAC_PREFIX}:c6 dev ${TEST_IFACE} nud permanent"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}1 | grep 'PERMANENT'"
rlRun "ip -6 neigh add ${TEST_IP6_PREFIX}2 lladdr ${TEST_MAC_PREFIX}:c7 dev ${TEST_IFACE}"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}2 | grep 'PERMANENT'"
rlRun "ip -6 neigh add ${TEST_IP6_PREFIX}3 lladdr ${TEST_MAC_PREFIX}:c8 dev ${TEST_IFACE} nud noarp"
rlRun "ip -6 neigh show nud all ${TEST_IP6_PREFIX}3 | grep 'NOARP'"
rlRun "ip -6 neigh add ${TEST_IP6_PREFIX}4 lladdr ${TEST_MAC_PREFIX}:c9 dev ${TEST_IFACE} nud noarp"
rlRun "ip -6 neigh show nud all ${TEST_IP6_PREFIX}4 | grep 'NOARP'"
rlRun "ip -6 neigh add lladdr ${TEST_MAC_PREFIX}:ce dev ${TEST_IFACE} proxy ${TEST_IP6_PREFIX}10"
rlIsRHEL ">=7" && rlRun "ip -6 neigh show proxy | grep ${TEST_IP6_PREFIX}10"
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} | wc -l) -eq 2" 0 "There are two items in neighbours."
rlRun "ip -6 neigh del ${TEST_IP6_PREFIX}1 dev ${TEST_IFACE}"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}1 | grep 'FAILED'"
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}2 lladdr ${TEST_MAC_PREFIX}:ca dev ${TEST_IFACE} nud reachable"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}2 | grep 'REACHABLE'"
rlRun "ip -6 neigh replace ${TEST_IP6_PREFIX}3 lladdr ${TEST_MAC_PREFIX}:cb dev ${TEST_IFACE} nud permanent"
rlRun "ip -6 neigh show nud all ${TEST_IP6_PREFIX}3 | grep 'PERMANENT'"
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} nud permanent | wc -l) -eq 1" 0 "There is one permanent item in neighbours."
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} nud reachable | wc -l) -eq 1" 0 "There is one reachable item in neighbours."
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} nud noarp | wc -l) -eq 1" 0 "There is one noarp item in neighbours."
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} nud failed | wc -l) -eq 1" 0 "There is one failed item in neighbours."
rlIsRHEL ">=7" && rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} proxy | wc -l) -eq 1" 0 "There is one proxy item in neighbours."
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} | grep -e PERMANENT -e REACHABLE -e FAILED | wc -l) -eq 3" 0 "There are three permanent or reachable or failed items in neighbours."
rlRun "ip -6 neigh show dev ${TEST_IFACE} unused"
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}4 dev ${TEST_IFACE} nud delay"
rlRun "ip -6 neigh flush ${TEST_IP6_PREFIX}4 dev ${TEST_IFACE}"
rlRun "ip -6 neigh show nud all | grep '${TEST_IP6_PREFIX}4'"
rlRun "ip -6 -s neigh flush ${TEST_IP6_PREFIX}4 dev ${TEST_IFACE}"
rlRun "ip -6 -s -s neigh flush ${TEST_IP6_PREFIX}4 dev ${TEST_IFACE}"
rlRun "ip -6 neigh add ${TEST_IP6_PREFIX}11 lladdr ${TEST_MAC_PREFIX}:c8 dev ${TEST_IFACE} nud permanent"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep 'PERMANENT'"
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud reachable"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep 'REACHABLE'"
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud probe"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep 'PROBE'"
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}11 lladdr ${TEST_MAC_PREFIX}:c9 dev ${TEST_IFACE} nud failed"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep 'FAILED'"
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud incomplete"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep 'INCOMPLETE'"
rlRun "ip -6 neigh replace ${TEST_IP6_PREFIX}11 lladdr ${TEST_MAC_PREFIX}:cb dev ${TEST_IFACE} nud stale"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep '${TEST_MAC_PREFIX}:cb' | grep 'STALE'"
rlRun "ip -6 neigh replace ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud delay"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep -e 'DELAY' -e 'PROBE'"
rlRun "ip -6 neigh replace ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud noarp"
rlRun "ip -6 neigh show nud all ${TEST_IP6_PREFIX}11 | grep 'NOARP'"
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud none"
rlRun "ip -6 neigh show nud none | grep ${TEST_IP6_PREFIX}11"
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}0/24"
rlPhaseEnd
rlPhaseStartTest
pushd /tmp # because of coredump file
tail -f -n 0 "$MESSAGES" > "$TMP_MESSAGES" &
tail_pid="$!"
rlRun "ip neigh add ${TEST_IP4_PREFIX}.11 lladdr ${TEST_MAC_PREFIX}:c16 dev ${TEST_IFACE} nud permanent" 1,255
kill "$tail_pid"
rlRun "grep -i -e 'segfault' -e 'unhandled signal' -e 'User process fault' ${TMP_MESSAGES}" 1 "Checking there is no segfault in /var/log/messages."
popd
rlPhaseEnd
rlPhaseStartCleanup
delete_dummy_iface
rlRun "rm ${TMP_MESSAGES}" 0 "Removing tmp files and dirs."
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,63 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /CoreOS/iproute/Sanity/ip-rule-sanity-test
# Description: Test basic ip rule functionality
# Author: Jaroslav Aster <jaster@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/CoreOS/iproute/Sanity/ip-rule-sanity-test
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
test -x runtest.sh || chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Jaroslav Aster <jaster@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Test basic ip rule funcionality" >> $(METADATA)
@echo "Type: Sanity" >> $(METADATA)
@echo "TestTime: 15m" >> $(METADATA)
@echo "RunFor: iproute" >> $(METADATA)
@echo "Requires: iproute" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
rhts-lint $(METADATA)

View File

@ -0,0 +1,3 @@
PURPOSE of /CoreOS/iproute/Sanity/ip-rule-sanity-test
Description: Test basic ip rule funcionality
Author: Jaroslav Aster <jaster@redhat.com>

View File

@ -0,0 +1,107 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/iproute/Sanity/ip-rule-sanity-test
# Description: Test basic ip rule funcionality
# Author: Jaroslav Aster <jaster@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/bin/rhts-environment.sh || exit 1
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="iproute"
DEFAULT_IFACE="$(ip route show | grep default | sed 's/.*dev \([^ ]\+\) .*/\1/' | head -n 1)"
rlIsRHEL '>=7' && IP_RULE_MANPAGE="ip-rule" || IP_RULE_MANPAGE="ip"
rlJournalStart
rlPhaseStartSetup
rlCheckRpm "$PACKAGE"
rlPhaseEnd
rlPhaseStartTest "Basic sanity test"
rlRun "ip rule list"
rlRun "ip rule add from 172.29.0.0/24 to 172.29.1.0/24 table 1110"
rlRun "ip rule add not from 172.29.0.0/24 to 172.29.1.0/24 table 1111"
rlRun "ip -6 rule add from 2404:6800:4003:801::1015/32 to 2404:6800:4003:801::1014/32 table 1111"
rlIsRHEL '>=7' && rlRun "ip rule add oif ${DEFAULT_IFACE} table 1111"
rlRun "ip rule add iif ${DEFAULT_IFACE} tos 10 table 1112"
rlRun "ip rule add fwmark 123 pref 100 table 1112"
rlRun "ip rule add not fwmark 124 pref 101 unreachable"
rlRun "ip rule add fwmark 125 pref 102 prohibit"
rlRun "ip rule add fwmark 126 pref 103 unicast"
rlRun "ip rule add from 172.29.2.0/24 tos 10 blackhole"
rlRun "ip rule add from 172.29.0.0/24 tos 6 prio 99 goto 103"
rlRun "ip rule list"
rlRun "ip rule list | grep 'from 172.29.0.0/24 to 172.29.1.0/24'"
rlRun "ip rule list | grep 'not from 172.29.0.0/24 to 172.29.1.0/24'"
rlRun "ip -6 rule list | grep 'from 2404:6800:4003:801::1015/32 to 2404:6800:4003:801::1014/32'"
rlIsRHEL '>=7' && rlRun "ip rule list | grep 'oif ${DEFAULT_IFACE}'"
! rlIsFedora && rlRun "ip rule list | grep 'tos lowdelay iif ${DEFAULT_IFACE}'"
rlRun "ip rule list | grep 'from all fwmark 0x7b'"
rlRun "ip rule list | grep 'not from all fwmark 0x7c unreachable'"
rlRun "ip rule list | grep 'from all fwmark 0x7d prohibit'"
rlRun "ip rule list | grep 'from all fwmark 0x7e'"
! rlIsFedora && rlRun "ip rule list | grep 'from 172.29.2.0/24 tos lowdelay blackhole'"
rlRun "ip rule list | grep 'from 172.29.0.0/24 tos 0x06 goto 103'"
rlRun "ip rule list"
rlRun "ip rule del from 172.29.0.0/24 to 172.29.1.0/24"
rlRun "ip rule del not from 172.29.0.0/24 to 172.29.1.0/24"
rlRun "ip -6 rule del from 2404:6800:4003:801::1015/32 to 2404:6800:4003:801::1014/32"
rlIsRHEL '>=7' && rlRun "ip rule del oif ${DEFAULT_IFACE}"
! rlIsFedora && rlRun "ip rule del iif ${DEFAULT_IFACE} tos lowdelay"
rlRun "ip rule del fwmark 123 pref 100"
rlRun "ip rule del not fwmark 124 pref 101 unreachable"
rlRun "ip rule del fwmark 125 pref 102 prohibit"
rlRun "ip rule del fwmark 126 pref 103 unicast"
rlRun "ip rule del from 172.29.2.0/24 tos 10 blackhole"
rlRun "ip rule del from 172.29.0.0/24 tos 6 prio 99 goto 103"
rlRun "ip rule list"
rlPhaseEnd
if rlIsRHEL '>=7'; then
rlPhaseStartTest
saved_rule=$(ip rule list | grep '^0' | cut -d : -f 2 | head -n 1)
rlRun "ip rule del prio 0" 0 "Removing rule with prio 0."
rlRun "ip rule add prio 0 ${saved_rule}" 0 "Re-creating rule with prio 0."
rlRun "man ${IP_RULE_MANPAGE} | col -b | grep 'Rule 0 is special. It cannot be deleted or overridden.'" 1
rlPhaseEnd
fi
rlPhaseStartTest
rlRun "man ${IP_RULE_MANPAGE} | col -b | grep 'reject'" 1
rlRun "ip rule help 2>&1 | grep 'reject'" 1
rlPhaseEnd
rlPhaseStartCleanup
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

15
tests/tests.yml Normal file
View File

@ -0,0 +1,15 @@
---
# Tests that run in all contexts
- hosts: localhost
roles:
- role: standard-test-beakerlib
tags:
- classic
- atomic
tests:
- ip-neigh-sanity-test
- ip-rule-sanity-test
- bridge-utility
required_packages:
- iproute
- bridge-utils