From 01e06c4c84a96fcf12c87faccc281134249c5823 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Thu, 27 Nov 2014 00:28:13 -0600 Subject: New ifconfig tests from Cynt Rynt. (I added the "only run if root" stanza at the beginning.) --- tests/ifconfig.test | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 tests/ifconfig.test (limited to 'tests/ifconfig.test') diff --git a/tests/ifconfig.test b/tests/ifconfig.test new file mode 100644 index 00000000..0c0af463 --- /dev/null +++ b/tests/ifconfig.test @@ -0,0 +1,192 @@ +#!/bin/bash +# Copyright 2014 Cynthia Rempel +# +# Brief: Some cursery coverage tests of ifconfig... +# Note: requires permissions to run modprobe and all ifconfig options +# Commands used: grep, grep -i, ip link, ip tuntap, wc -l +# +# Possible improvements: +# 1. Verify the dummy interface actually has the modified characteristics +# instead of relying on ifconfig output +# 2. Introduce more error cases, to verify ifconfig fails gracefully +# 3. Do more complex calls to ifconfig, while mixing the order of the +# arguments +# 4. Cover more ifconfig options: +# hw ether|infiniband ADDRESS - set LAN hardware address (AA:BB:CC...) +# txqueuelen LEN - number of buffered packets before output blocks +# Obsolete fields included for historical purposes: +# irq|io_addr|mem_start ADDR - micromanage obsolete hardware +# outfill|keepalive INTEGER - SLIP analog dialup line quality monitoring +# metric INTEGER - added to Linux 0.9.10 with comment "never used", still true + +[ -f testing.sh ] && . testing.sh + +if [ "$(id -u)" -ne 0 ] +then + echo "SKIPPED: ifconfig (not root)" + continue 2>/dev/null + exit +fi + +#testing "name" "command" "result" "infile" "stdin" + +# Add a dummy interface to test with +ifconfig dummy0 up + +# Test Description: Disable the dummy0 interface +# Results Expected: After calling ifconfig, no lines with dummy0 are displayed +testing "ifconfig dummy0 down and if config /-only" \ +"ifconfig dummy0 down && ifconfig dummy0 | grep dummy | wc -l" \ +"0\n" "" "" + +# Test Description: Enable the dummy0 interface +# Results Expected: After calling ifconfig, one line with dummy0 is displayed +testing "ifconfig dummy0 up" \ +"ifconfig dummy0 up && ifconfig dummy0 | grep dummy | wc -l" \ +"1\n" "" "" + +# Test Description: Set the ip address of the dummy0 interface +# Results Expected: After calling ifconfig dummy0, one line displays the ip +# address selected +testing "ifconfig dummy0 10.240.240.240" \ +"ifconfig dummy0 10.240.240.240 && ifconfig dummy0 | grep 10\.240\.240\.240 | wc -l" \ +"1\n" "" "" + +# Test Description: Change the netmask to the interface +# Results Expected: After calling ifconfig dummy0, one line displays the +# netmask selected +testing "ifconfig dummy0 netmask 255.255.240.0" \ +"ifconfig dummy0 netmask 255.255.240.0 && ifconfig dummy0 | grep 255\.255\.240\.0 | wc -l" \ +"1\n" "" "" + +# Test Description: Change the broadcast address to the interface +# Results Expected: After calling ifconfig dummy0, one line displays the +# broadcast address selected +testing "ifconfig dummy0 broadcast 10.240.240.255" \ +"ifconfig dummy0 broadcast 10.240.240.255 && ifconfig dummy0 | grep 10\.240\.240\.255 | wc -l" \ +"1\n" "" "" + +# Test Description: Revert to the default ip address +# Results Expected: After calling ifconfig dummy0, there are no lines +# displaying the ip address previously selected +testing "ifconfig dummy0 default" \ +"ifconfig dummy0 default && ifconfig dummy0 | grep 10\.240\.240\.240 | wc -l" \ +"0\n" "" "" + +# Test Description: Change the Maximum transmission unit (MTU) of the interface +# Results Expected: After calling ifconfig dummy0, there is one line with the +# selected MTU +testing "ifconfig dummy0 mtu 1269" \ +"ifconfig dummy0 mtu 1269 && ifconfig dummy0 | grep 1269 | wc -l" \ +"1\n" "" "" + +# Test Description: Verify ifconfig add fails with such a small mtu +# Results Expected: There is one line of error message containing +# "No buffer space available" +testing "ifconfig dummy0 add ::2 -- too small mtu" \ +"ifconfig dummy0 add ::2 2>&1 | grep No\ buffer\ space\ available | wc -l" \ +"1\n" "" "" + +# Test Description: Change the Maximum transmission unit (MTU) of the interface +# Results Expected: After calling ifconfig dummy0, there is one line with the +# selected MTU +testing "ifconfig dummy0 mtu 2000" \ +"ifconfig dummy0 mtu 2000 && ifconfig dummy0 | grep 2000 | wc -l" \ +"1\n" "" "" + +# Test Description: Verify ifconfig add succeeds with a larger mtu +# Results Expected: after calling ifconfig dummy0, there is one line with the +# selected ip address +testing "ifconfig dummy0 add ::2" \ +"ifconfig dummy0 add ::2/126 && ifconfig dummy0 | grep \:\:2\/126 | wc -l" \ +"1\n" "" "" + +# Test Description: Verify ifconfig del removes the selected ip6 address +# Results Expected: after calling ifconfig dummy0, there are no lines with the +# selected ip address +testing "ifconfig dummy0 del ::2" \ +"ifconfig dummy0 del ::2/126 && ifconfig dummy0 | grep \:\:2 | wc -l" \ +"0\n" "" "" + +# Test Description: Remove the noarp flag and bring the interface down in +# preparation for the next test +# Results Expected: After calling ifconfig dummy0, there are no lines with the +# NOARP flag +testing "ifconfig dummy0 arp down" \ +"ifconfig dummy0 arp down && ifconfig dummy0 | grep -i NOARP | wc -l" \ +"0\n" "" "" + +# Test Description: Call the pointtopoint option with no argument +# Results Expected: After calling ifconfig dummy0, there is one line with the +# NOARP and UP flags +testing "ifconfig dummy0 pointtopoint" \ +"ifconfig dummy0 pointtopoint && ifconfig dummy0 | grep -i NOARP | grep -i UP | wc -l" \ +"1\n" "" "" + +# Test Description: Test the pointtopoint option and set the ipaddress +# Results Expected: After calling ifconfig dummy0, there is one line with the +# word inet and the selected ip address +testing "ifconfig dummy0 pointtopoint 127.0.0.2" \ +"ifconfig dummy0 pointtopoint 127.0.0.2 && ifconfig dummy0 | grep -i inet | grep -i 127\.0\.0\.2 | wc -l" \ +"1\n" "" "" + +####### Flags you can set on an interface (or -remove by prefixing with -): ############### + +# Test Description: Enable allmulti mode on the interface +# Results Expected: After calling ifconfig dummy0, there is one line with the +# allmulti flag +testing "ifconfig dummy0 allmulti" \ +"ifconfig dummy0 allmulti && ifconfig dummy0 | grep -i allmulti | wc -l" "1\n" \ +"" "" + +# Test Description: Disable multicast mode the interface +# Results Expected: After calling ifconfig dummy0, there are no lines with the +# allmulti flag +testing "ifconfig dummy0 -allmulti" \ +"ifconfig dummy0 -allmulti && ifconfig dummy0 | grep -i allmulti | wc -l" "0\n" \ +"" "" + +# Test Description: Disable NOARP mode on the interface +# Results Expected: After calling ifconfig dummy0, there are no lines with the +# NOARP flag +testing "ifconfig dummy0 arp" \ +"ifconfig dummy0 arp && ifconfig dummy0 | grep -i NOARP | wc -l" "0\n" \ +"" "" + +# Test Description: Enable NOARP mode on the interface +# Results Expected: After calling ifconfig dummy0, there is one line with the +# NOARP flag +testing "ifconfig dummy0 -arp" \ +"ifconfig dummy0 -arp && ifconfig dummy0 | grep -i NOARP | wc -l" "1\n" \ +"" "" + +# Test Description: Enable multicast mode on the interface +# Results Expected: After calling ifconfig dummy0, there is one line with the +# multicast flag +testing "ifconfig dummy0 multicast" \ +"ifconfig dummy0 multicast && ifconfig dummy0 | grep -i multicast | wc -l" \ +"1\n" "" "" + +# Test Description: Disable multicast mode the interface +# Results Expected: After calling ifconfig dummy0, there are no lines with the +# multicast flag +testing "ifconfig dummy0 -multicast" \ +"ifconfig dummy0 -multicast && ifconfig dummy0 | grep -i multicast | wc -l" \ +"0\n" "" "" + +# Test Description: Enable promiscuous mode the interface +# Results Expected: After calling ifconfig dummy0, there is one line with the +# promisc flag +testing "ifconfig dummy0 promisc" \ +"ifconfig dummy0 promisc && ifconfig dummy0 | grep -i promisc | wc -l" "1\n" \ +"" "" + +# Disable promiscuous mode the interface +# Results Expected: After calling ifconfig dummy0, there are no lines with the +# promisc flag +testing "ifconfig dummy0 -promisc" \ +"ifconfig dummy0 -promisc && ifconfig dummy0 | grep -i promisc | wc -l" "0\n" \ +"" "" + +# Disable the dummy interface +ifconfig dummy0 down -- cgit v1.2.3