From 0c7b0881817c59a3b9cbfce63bca3ec920f21a00 Mon Sep 17 00:00:00 2001 From: Martin Osvald Date: Tue, 19 Mar 2024 09:15:15 +0100 Subject: [PATCH 01/12] Fix broken ssh connection by removal of /dev/null as lease file - Use separate network namespace instead of the default one - Lower number of sent packets in e.py, there is no point in that as it ends with 'no free leases' error --- Sanity/Stress/e.py | 4 +- Sanity/Stress/ether-type.txt | 85 ++++++++++++++++++++++++++++ Sanity/Stress/runtest.sh | 106 +++++++++++++++++++---------------- 3 files changed, 145 insertions(+), 50 deletions(-) create mode 100644 Sanity/Stress/ether-type.txt diff --git a/Sanity/Stress/e.py b/Sanity/Stress/e.py index 3fb3ec8..ba7c9dc 100644 --- a/Sanity/Stress/e.py +++ b/Sanity/Stress/e.py @@ -51,12 +51,12 @@ def sendPacket(mynic, mycounter): def main(): - howmany = 100 + howmany = 1000 print("running ",howmany,"x") for i in range(howmany): #print('running ', i, ' / ', howmany) #print('.',end='') - sendPacket('emac0',10000) + sendPacket('emac1',1) if __name__ == '__main__': diff --git a/Sanity/Stress/ether-type.txt b/Sanity/Stress/ether-type.txt new file mode 100644 index 0000000..c9cfa63 --- /dev/null +++ b/Sanity/Stress/ether-type.txt @@ -0,0 +1,85 @@ +8023 0004 # IEEE 802.3 packet +PUP 0200 # Xerox PUP protocol - see 0A00 +PUPAT 0200 # PUP Address Translation - see 0A01 +NS 0600 # XNS +NSAT 0601 # XNS Address Translation (3Mb only) +DLOG1 0660 # DLOG (?) +DLOG2 0661 # DLOG (?) +IPv4 0800 # IP protocol +X75 0801 # X.75 Internet +NBS 0802 # NBS Internet +ECMA 0803 # ECMA Internet +CHAOS 0804 # CHAOSnet +X25 0805 # X.25 Level 3 +ARP 0806 # Address resolution protocol +FRARP 0808 # Frame Relay ARP (RFC1701) +VINES 0BAD # Banyan VINES +TRAIL 1000 # Trailer packet +DCA 1234 # DCA - Multicast +VALID 1600 # VALID system protocol +RCL 1995 # Datapoint Corporation (RCL lan protocol) +NBPCC 3C04 # 3Com NBP Connect complete not registered +NBPDG 3C07 # 3Com NBP Datagram (like XNS IDP) not registered +PCS 4242 # PCS Basic Block Protocol +IMLBL 4C42 # Information Modes Little Big LAN +MOPDL 6001 # DEC MOP dump/load +MOPRC 6002 # DEC MOP remote console +LAT 6004 # DEC LAT +SCA 6007 # DEC LAVC, SCA +AMBER 6008 # DEC AMBER +RAWFR 6559 # Raw Frame Relay (RFC1701) +UBDL 7000 # Ungermann-Bass download +UBNIU 7001 # Ungermann-Bass NIUs +UBNMC 7003 # Ungermann-Bass ??? (NMC to/from UB Bridge) +UBBST 7005 # Ungermann-Bass Bridge Spanning Tree +OS9 7007 # OS/9 Microware +RACAL 7030 # Racal-Interlan +HP 8005 # HP Probe +TIGAN 802F # Tigan, Inc. +DECAM 8048 # DEC Availability Manager for Distributed Systems DECamds (but someone at DEC says not) +VEXP 805B # Stanford V Kernel exp. +VPROD 805C # Stanford V Kernel prod. +ES 805D # Evans & Sutherland +VEECO 8067 # Veeco Integrated Auto. +ATT 8069 # AT&T +MATRA 807A # Matra +DDE 807B # Dansk Data Elektronik +MERIT 807C # Merit Internodal (or Univ of Michigan?) +ATALK 809B # AppleTalk +PACER 80C6 # Pacer Software +SNA 80D5 # IBM SNA Services over Ethernet +RETIX 80F2 # Retix +AARP 80F3 # AppleTalk AARP +VLAN 8100 # IEEE 802.1Q VLAN tagging (XXX conflicts) +BOFL 8102 # Wellfleet; BOFL (Breath OF Life) pkts [every 5-10 secs.] +HAYES 8130 # Hayes Microcomputers (XXX which?) +VGLAB 8131 # VG Laboratory Systems +IPX 8137 # Novell (old) NetWare IPX (ECONFIG E option) +MUMPS 813F # M/MUMPS data sharing +FLIP 8146 # Vrije Universiteit (NL) FLIP (Fast Local Internet Protocol) +NCD 8149 # Network Computing Devices +ALPHA 814A # Alpha Micro +SNMP 814C # SNMP over Ethernet (see RFC1089) +XTP 817D # Protocol Engines XTP +SGITW 817E # SGI/Time Warner prop. +STP 8181 # Scheduled Transfer STP, HIPPI-ST +IPv6 86DD # IP protocol version 6 +RDP 8739 # Control Technology Inc. RDP Without IP +MICP 873A # Control Technology Inc. Mcast Industrial Ctrl Proto. +IPAS 876C # IP Autonomous Systems (RFC1701) +SLOW 8809 # 803.3ad slow protocols (LACP/Marker) +PPP 880B # PPP (obsolete by PPPOE) +MPLS 8847 # MPLS Unicast +AXIS 8856 # Axis Communications AB proprietary bootstrap/config +PPPOE 8864 # PPP Over Ethernet Session Stage +PAE 888E # 802.1X Port Access Entity +AOE 88A2 # ATA over Ethernet +QINQ 88A8 # 802.1ad VLAN stacking +LLDP 88CC # Link Layer Discovery Protocol +PBB 88E7 # 802.1Q Provider Backbone Bridging +XNSSM 9001 # 3Com (Formerly Bridge Communications), XNS Systems Management +TCPSM 9002 # 3Com (Formerly Bridge Communications), TCP/IP Systems Management +DEBNI AAAA # DECNET? Used by VAX 6220 DEBNI +SONIX FAF5 # Sonix Arpeggio +VITAL FF00 # BBN VITAL-LanBridge cache wakeups +MAX FFFF # Maximum valid ethernet type, reserved diff --git a/Sanity/Stress/runtest.sh b/Sanity/Stress/runtest.sh index 689911f..6f87dda 100755 --- a/Sanity/Stress/runtest.sh +++ b/Sanity/Stress/runtest.sh @@ -30,51 +30,66 @@ PACKAGE="dhcp" -IPV4PREF="192.168.123" -BRIDGE=dhcpb -CONFIG=dhcpd.conf - rlJournalStart rlPhaseStartSetup - REQUEST_OPTIONS="--request-options" - REQUEST_OPTIONS+=" subnet-mask,broadcast-address,time-offset,interface-mtu,domain-name,host-name" + rlRun "TestDir=\"`pwd`\"" + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" -ip link add name emac0-br type veth peer name emac0 -ip link set dev emac0-br up -ip link set dev emac0 up -ip link add name dhcpb type bridge -ip link set dev dhcpb type bridge stp_state 0 -ip link set dev dhcpb up -ip link set emac0-br master dhcpb -ip link add name emac1-br type veth peer name emac1 -ip link set dev emac1-br up -ip link set dev emac1 up -ip link set emac1-br master dhcpb -ip a a 192.168.123.1/24 dev emac0 + rlRun "SERVER_LOG=`mktemp -p .`" + rlRun "> lease.f" - rlRun "SERVER_LOG=`mktemp`" - rm -f lease.f - touch lease.f - rlRun "sleep 30" + # + # netns server [emac0] <===> [emac0-br] [emac1-br] <===> [emac1] netns client + # + # Create 2 separate network namespaces + rlRun "ip netns add netns-server" + rlRun "ip netns add netns-client" + + # Create a bridge to connect 2 namespaces + rlRun "ip link add name test-bridge type bridge" + #rlRun "ip link set dev test-bridge type bridge stp_state 0" + rlRun "ip link set dev test-bridge up" + + # Create 2 pairs of virtual network devices to connect to bridge + rlRun "ip link add name emac0 netns netns-server type veth peer name emac0-br" + rlRun "ip link add name emac1 netns netns-client type veth peer name emac1-br" + rlRun "ip -n netns-server link set dev emac0 up" + rlRun "ip link set dev emac0-br up" + rlRun "ip -n netns-client link set dev emac1 up" + rlRun "ip link set dev emac1-br up" + + # Connect the namespaces to the bridge + rlRun "ip link set emac0-br master test-bridge" + rlRun "ip link set emac1-br master test-bridge" + + # Set up loopbacks for the namespaces + rlRun "ip -n netns-server link set lo up" + rlRun "ip -n netns-client link set lo up" + + # Set IP address for namespace running dhcpd + rlRun "ip -n netns-server addr add 192.168.123.1/24 dev emac0" + rlRun "ip netns exec netns-server ping 192.168.123.1 -c 1 -q" 0 rlPhaseEnd rlPhaseStartTest "Start dhcp server" - dhcpd -d -cf $CONFIG -lf /dev/null emac0 &> $SERVER_LOG & - #dhcpd -d -cf $CONFIG -lf lease.f emac0 2>&1 > $SERVER_LOG& + rlLog "Running: (ip netns exec netns-server dhcpd -d -cf \"$TestDir\"/dhcpd.conf -lf lease.f emac0 2>&1) > $SERVER_LOG&" + (ip netns exec netns-server dhcpd -d -cf "$TestDir"/dhcpd.conf -lf lease.f emac0 2>&1) > $SERVER_LOG& SERVER_PID=$! - sleep 5 - rlLog "dhcps server PID: $SERVER_PID" + rlRun "sleep 5" + rlLog "dhcpd server PID: $SERVER_PID" rlRun "test -e /proc/$SERVER_PID" rlPhaseEnd - rlPhaseStartTest "Test if dhclient able to retrieve adress" - rlRun "timeout 2h python e.py" + rlPhaseStartTest "Test whether dhcpd doesn't crash" + # TODO python symlink/executable doesn't exist on rhel8 + rlRun "ip netns exec netns-client timeout 1h python \"$TestDir\"/e.py" rlPhaseEnd sleep 5 rlPhaseStartTest "does dhcpd still live?" - rlLog "dhcps server PID: $SERVER_PID" + rlLog "dhcpd server PID: $SERVER_PID" rlRun "test -e /proc/$SERVER_PID" rlPhaseEnd @@ -85,27 +100,22 @@ ip a a 192.168.123.1/24 dev emac0 rlRun "rm -f /var/run/dhcpd.pid" 0 "Removing dhcpd.pid" fi + killall -9 dhcpd + echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + head -n20 $SERVER_LOG + echo "......snip" + tail -n20 $SERVER_LOG + echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" + + rlRun "ip netns delete netns-server" 0 "Delete netns-dhcpd namespace" + rlRun "ip netns delete netns-client" 0 "Delete netns-dhclient namespace" + rlRun "ip link set dev test-bridge down" 0 + rlRun "ip link del test-bridge" 0 -ip link set dev emac0 down -ip link set dev emac0-br down -ip link set emac0-br nomaster -ip link set emac0-br down -ip link del emac0 -ip link set dev emac1 down -ip link set dev emac1-br down -ip link set emac1-br nomaster -ip link set emac1-br down -ip link set dev dhcpb down -ip link delete dhcpb type bridge -ip link del emac1 -systemctl restart NetworkManager -killall -9 dhcpd -echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - head -n20 $SERVER_LOG - echo "......snip" - tail -n20 $SERVER_LOG -echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" rlBundleLogs $SERVER_LOG + + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" rlPhaseEnd rlJournalPrintText rlJournalEnd From 8671472c1e5e01dd52c4601fb9653c2ef01a5ee7 Mon Sep 17 00:00:00 2001 From: Martin Osvald Date: Tue, 19 Mar 2024 12:10:33 +0100 Subject: [PATCH 02/12] Improve virtual network bridge setup code --- Sanity/ddns-bind-test/runtest.sh | 58 ++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/Sanity/ddns-bind-test/runtest.sh b/Sanity/ddns-bind-test/runtest.sh index 3992239..3c33d8c 100755 --- a/Sanity/ddns-bind-test/runtest.sh +++ b/Sanity/ddns-bind-test/runtest.sh @@ -70,16 +70,36 @@ EOF rlRun "DHCPD_LOG=`mktemp -p .`" rlRun "DHCLIENT_LOG=`mktemp -p .`" - rlRun "ip netns add ddns-bind-test" - rlRun "ip -n ddns-bind-test link set lo up" - rlRun "ip -n ddns-bind-test link add br0 type bridge" - rlRun "ip -n ddns-bind-test addr add 192.168.69.1/24 dev br0" - rlRun "ip -n ddns-bind-test link set br0 up" - rlRun "ip netns exec ddns-bind-test ping 192.168.69.1 -c 1 -q" 0 + # + # netns server [veth0] <===> [veth0-br] [veth1-br] <===> [veth1] netns client + # + # Create 2 separate network namespaces + rlRun "ip netns add netns-server" + rlRun "ip netns add netns-client" - rlRun "ip -n ddns-bind-test link add client1 type veth peer name veth1" - rlRun "ip -n ddns-bind-test link set dev veth1 master br0" - rlRun "ip -n ddns-bind-test link set veth1 up" + # Create a bridge to connect the 2 namespaces + rlRun "ip link add name test-bridge type bridge" + rlRun "ip link set dev test-bridge up" + + # Create 2 pairs of virtual network devices to connect to the bridge + rlRun "ip link add name veth0 netns netns-server type veth peer name veth0-br" + rlRun "ip link add name veth1 netns netns-client type veth peer name veth1-br" + rlRun "ip -n netns-server link set dev veth0 up" + rlRun "ip link set dev veth0-br up" + rlRun "ip -n netns-client link set dev veth1 up" + rlRun "ip link set dev veth1-br up" + + # Connect the namespaces to the bridge + rlRun "ip link set veth0-br master test-bridge" + rlRun "ip link set veth1-br master test-bridge" + + # Set up loopbacks for the namespaces + rlRun "ip -n netns-server link set lo up" + rlRun "ip -n netns-client link set lo up" + + # Set IP address for the namespace running dhcp server + rlRun "ip -n netns-server addr add 192.168.69.1/24 dev veth0" + rlRun "ip netns exec netns-server ping 192.168.69.1 -c 1 -q" 0 rlPhaseEnd rlPhaseStartTest @@ -104,9 +124,9 @@ EOF # # Start Bind and dhcp # - rlRun "ip netns exec ddns-bind-test /usr/sbin/named -u named -c /etc/named.conf" 0 "Start Bind" - rlLog "Running: (ip netns exec ddns-bind-test dhcpd -d 2>&1) > $DHCPD_LOG&" - (ip netns exec ddns-bind-test dhcpd -d 2>&1) > $DHCPD_LOG& + rlRun "ip netns exec netns-server /usr/sbin/named -u named -c /etc/named.conf" 0 "Start Bind" + rlLog "Running: (ip netns exec netns-server dhcpd -d veth0 2>&1) > $DHCPD_LOG&" + (ip netns exec netns-server dhcpd -d veth0 2>&1) > $DHCPD_LOG& DHCPD_PID=$! # @@ -127,8 +147,9 @@ EOF # Run dhclient # rlLog "\n\n---------- Testing ddns-update-style=$DDNSUpdateStyle for host-name=$TestHostname ----------\n" - rlLog "Running: (ip netns exec ddns-bind-test dhclient -nw -lf /var/lib/dhclient/client1.leases -pf /var/run/dhclient1.pid -H \"$TestHostname\" client1 -v 2>&1) > $DHCLIENT_LOG&" - (ip netns exec ddns-bind-test dhclient -nw -lf /var/lib/dhclient/client1.leases -pf /var/run/dhclient1.pid -H "$TestHostname" client1 -v 2>&1) > $DHCLIENT_LOG& + rlLog "Running: (ip netns exec netns-client dhclient -nw -lf /var/lib/dhclient/client1.leases -pf /var/run/dhclient1.pid -H \"$TestHostname\" veth1 -v 2>&1) > $DHCLIENT_LOG&" + (ip netns exec netns-client dhclient -nw -lf /var/lib/dhclient/client1.leases -pf /var/run/dhclient1.pid -H "$TestHostname" veth1 -v 2>&1) > $DHCLIENT_LOG& + #bash rlRun "sleep 5" 0 "Sleeping for 5s to let dhclient obtain IP address" [ -z "`grep ACK $DHCLIENT_LOG`" ] && rlRun "sleep 5" 0 "Sleeping for another 5s to let dhclient obtain IP address" DHCLIENT_PID=$(cat /var/run/dhclient1.pid) @@ -137,8 +158,8 @@ EOF # # Test we got ip address # - rlRun "ip -n ddns-bind-test addr list dev client1 | grep 192.168" 0 "Did we get IP address from dhcpd?" - rlRun "ip netns exec ddns-bind-test rndc sync" 0 "Get hostname reflected in /var/named/dynamic/db.example.zone" + rlRun "ip -n netns-client addr list dev veth1 | grep 192.168" 0 "Did we get IP address from dhcpd?" + rlRun "ip netns exec netns-server rndc sync" 0 "Get hostname reflected in /var/named/dynamic/db.example.zone" rlRun "sleep 5" 0 "Sleeping for 5s to let Bind sync db with .jnl files" rlAssertGrep "$TestHostname" /var/named/dynamic/db.example.zone rlAssertGrep "$TestHostname" /var/named/dynamic/db.reverse-192.168.69 @@ -160,7 +181,10 @@ EOF # rlRun "> /var/lib/dhcpd/dhcpd.leases; rm /var/lib/dhcpd/dhcpd.leases~" rlRun "rm -f /var/named/dynamic/{db.example.zone*,db.reverse-192.168.69*} /etc/named/ddns.conf" 0 "Remove zone and configuration files" - rlRun "ip netns delete ddns-bind-test" 0 "Delete ddns-bind-test namespace" + rlRun "ip netns delete netns-server" 0 "Delete netns-server namespace" + rlRun "ip netns delete netns-client" 0 "Delete netns-client namespace" + rlRun "ip link set dev test-bridge down" 0 + rlRun "ip link del test-bridge" 0 rlRun "rlFileRestore" 0 "Restore original dhcpd.conf and named.conf" # See CHATTR NOTE at the top #rlRun "chattr -i `readlink -f /etc/resolv.conf`" 0 "Allow writing to /etc/resolv.conf again" From 5bf71cc0a25a351683b8cccbe7fc556cfbacd3ce Mon Sep 17 00:00:00 2001 From: Petr Sklenar Date: Mon, 25 Mar 2024 08:55:41 +0000 Subject: [PATCH 03/12] Update Sanity/Stress/main.fmf --- Sanity/Stress/main.fmf | 1 + 1 file changed, 1 insertion(+) diff --git a/Sanity/Stress/main.fmf b/Sanity/Stress/main.fmf index 7578a2f..9b1a626 100644 --- a/Sanity/Stress/main.fmf +++ b/Sanity/Stress/main.fmf @@ -21,6 +21,7 @@ recommend: - dhcp-server - dhcp-client - python-scapy + - python3-scapy duration: 145m extra-nitrate: TC#0614374 extra-summary: /CoreOS/dhcp/Sanity/Stress From 0e2e504fb6db9144cf0fee85e7aa5b5380e59189 Mon Sep 17 00:00:00 2001 From: "psklenar@redhat.com" Date: Tue, 16 Apr 2024 13:13:03 +0200 Subject: [PATCH 04/12] #host 10.43.2.229 ##229.2.43.10.in-addr.arpa domain name pointer pemensik-t490.brq.redhat.com=> temporary private server for test => not stable --- Sanity/ddns-bind-test/main.fmf | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/Sanity/ddns-bind-test/main.fmf b/Sanity/ddns-bind-test/main.fmf index d00a8d8..3dfa599 100644 --- a/Sanity/ddns-bind-test/main.fmf +++ b/Sanity/ddns-bind-test/main.fmf @@ -1,28 +1,18 @@ -summary: Tests DDNS functionality in DHCP +summary: Tests DDNS functionality in DHCP. description: '' -enabled: true -tag: - - NoRHEL4 - - NoRHEL5 - - Tier3 -tier: '1' -adjust: - - enabled: false - when: distro == rhel-4, rhel-5 - continue: false contact: Martin Osvald -component: [] +component: + - dhcp test: ./runtest.sh +tier: '1' framework: beakerlib recommend: - - dhcp-client - - dhcp-server - dhclient - dhcp + - dhcp-client + - dhcp-server - bind - - bint-utils -duration: 15m -#extra-nitrate: TC#0614374 + - bind-utils +duration: 1h extra-summary: /CoreOS/dhcp/Sanity/ddns-bind-test extra-task: /CoreOS/dhcp/Sanity/ddns-bind-test -#id: a2b132c2-1829-4c45-9ee2-792d73de451e From 985daea357e335d8ea3dea55f2d95923db74cdd8 Mon Sep 17 00:00:00 2001 From: "psklenar@redhat.com" Date: Tue, 16 Apr 2024 13:16:10 +0200 Subject: [PATCH 05/12] exporting to TCMS --- Sanity/ddns-bind-test/main.fmf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Sanity/ddns-bind-test/main.fmf b/Sanity/ddns-bind-test/main.fmf index 3dfa599..443a58f 100644 --- a/Sanity/ddns-bind-test/main.fmf +++ b/Sanity/ddns-bind-test/main.fmf @@ -16,3 +16,5 @@ recommend: duration: 1h extra-summary: /CoreOS/dhcp/Sanity/ddns-bind-test extra-task: /CoreOS/dhcp/Sanity/ddns-bind-test +extra-nitrate: TC#0617423 +id: ebeb52cc-c6c0-45f3-afc5-2650cb1139d9 From 7f3cd6eb5a8759a159b7ce16be5c2935f8095f01 Mon Sep 17 00:00:00 2001 From: "psklenar@redhat.com" Date: Thu, 18 Apr 2024 12:51:18 +0200 Subject: [PATCH 06/12] python / python3 at rhel8 issue --- Sanity/Stress/runtest.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Sanity/Stress/runtest.sh b/Sanity/Stress/runtest.sh index 6f87dda..673ddc8 100755 --- a/Sanity/Stress/runtest.sh +++ b/Sanity/Stress/runtest.sh @@ -83,7 +83,10 @@ rlJournalStart rlPhaseStartTest "Test whether dhcpd doesn't crash" # TODO python symlink/executable doesn't exist on rhel8 - rlRun "ip netns exec netns-client timeout 1h python \"$TestDir\"/e.py" + # debug : + python=python + rpm -q bash | grep el8 && python=python3 + rlRun "ip netns exec netns-client timeout 1h $python \"$TestDir\"/e.py" rlPhaseEnd sleep 5 From 12a90c388fca15a9f5f8493a34decbc5b796101d Mon Sep 17 00:00:00 2001 From: "psklenar@redhat.com" Date: Fri, 19 Apr 2024 17:27:06 +0200 Subject: [PATCH 07/12] test doesnt work at rhel8, missing scapy --- Sanity/Stress/main.fmf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sanity/Stress/main.fmf b/Sanity/Stress/main.fmf index 9b1a626..a8c7d8c 100644 --- a/Sanity/Stress/main.fmf +++ b/Sanity/Stress/main.fmf @@ -8,7 +8,7 @@ tag: tier: '1' adjust: - enabled: false - when: distro == rhel-4, rhel-5 + when: distro == rhel-8 continue: false contact: Petr Sklenar component: [] From b8ff0ce79089b78655ac2728720c08e2fbcb5c32 Mon Sep 17 00:00:00 2001 From: "psklenar@redhat.com" Date: Thu, 6 Feb 2025 09:16:41 +0100 Subject: [PATCH 08/12] AVC check for RHEL-77344 --- main.fmf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/main.fmf b/main.fmf index 41e2fab..e8554d7 100644 --- a/main.fmf +++ b/main.fmf @@ -1,2 +1,4 @@ # QE owner contact: Petr Sklenar +check: + - how: avc From 6dd5e81bd52278365ab4634cf9871b1041f94e26 Mon Sep 17 00:00:00 2001 From: Martin Osvald Date: Sun, 2 Mar 2025 10:41:45 +0100 Subject: [PATCH 09/12] Fix ddns-bind-test for EPEL10 Drop if clause for RHEL7 for now --- Sanity/ddns-bind-test/runtest.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Sanity/ddns-bind-test/runtest.sh b/Sanity/ddns-bind-test/runtest.sh index 3c33d8c..f7e474b 100755 --- a/Sanity/ddns-bind-test/runtest.sh +++ b/Sanity/ddns-bind-test/runtest.sh @@ -28,12 +28,12 @@ # Include Beaker environment . /usr/share/beakerlib/beakerlib.sh || exit 1 -if rlIsRHEL '>=8' || rlIsFedora; then +#if rlIsRHEL '>=8' || rlIsFedora; then PACKAGES="dhcp-client dhcp-server bind bind-utils" -else +#else # The test works on RHEL7 too - PACKAGES="dhclient dhcp bind bind-utils" -fi +# PACKAGES="dhclient dhcp bind bind-utils" +#fi rlJournalStart rlPhaseStartSetup From 440be1da7b8318e2066963c2e1d8ea958707adb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Hrdina?= Date: Tue, 1 Apr 2025 09:46:23 +0200 Subject: [PATCH 10/12] Disable tests for >= rhel10, c10s --- Sanity/Stress/main.fmf | 2 +- main.fmf | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Sanity/Stress/main.fmf b/Sanity/Stress/main.fmf index a8c7d8c..dd47a3c 100644 --- a/Sanity/Stress/main.fmf +++ b/Sanity/Stress/main.fmf @@ -6,7 +6,7 @@ tag: - NoRHEL5 - Tier3 tier: '1' -adjust: +adjust+: - enabled: false when: distro == rhel-8 continue: false diff --git a/main.fmf b/main.fmf index e8554d7..0352b17 100644 --- a/main.fmf +++ b/main.fmf @@ -2,3 +2,10 @@ contact: Petr Sklenar check: - how: avc +adjust: + - enabled: false + when: distro >= rhel-10 + continue: false + - enabled: false + when: distro >= centos-stream-10 + continue: false \ No newline at end of file From ed02f0b15117bf593f686f746fe15eb25793c041 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Hrdina?= Date: Mon, 23 Jun 2025 11:25:00 +0200 Subject: [PATCH 11/12] QE owner update --- Sanity/Stress/main.fmf | 7 ++----- Sanity/client-ipv4-tests/main.fmf | 4 +--- Sanity/ddns-bind-test/main.fmf | 4 +--- main.fmf | 3 ++- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/Sanity/Stress/main.fmf b/Sanity/Stress/main.fmf index dd47a3c..8558acd 100644 --- a/Sanity/Stress/main.fmf +++ b/Sanity/Stress/main.fmf @@ -2,16 +2,13 @@ summary: Stress test - It runs many dhcp discover packet description: '' enabled: true tag: - - NoRHEL4 - - NoRHEL5 - - Tier3 + - Tier1 tier: '1' adjust+: - enabled: false when: distro == rhel-8 continue: false -contact: Petr Sklenar -component: [] +author: Petr Sklenar test: ./runtest.sh framework: beakerlib recommend: diff --git a/Sanity/client-ipv4-tests/main.fmf b/Sanity/client-ipv4-tests/main.fmf index 898d5be..d66ba94 100644 --- a/Sanity/client-ipv4-tests/main.fmf +++ b/Sanity/client-ipv4-tests/main.fmf @@ -1,8 +1,6 @@ summary: Test if the ABI hasn't changed description: '' -contact: Susant Sahani -component: - - dhcp-client +author: Susant Sahani test: ./runtest.sh framework: beakerlib recommend: diff --git a/Sanity/ddns-bind-test/main.fmf b/Sanity/ddns-bind-test/main.fmf index 443a58f..ad571ad 100644 --- a/Sanity/ddns-bind-test/main.fmf +++ b/Sanity/ddns-bind-test/main.fmf @@ -1,8 +1,6 @@ summary: Tests DDNS functionality in DHCP. description: '' -contact: Martin Osvald -component: - - dhcp +author: Martin Osvald test: ./runtest.sh tier: '1' framework: beakerlib diff --git a/main.fmf b/main.fmf index 0352b17..492fcf8 100644 --- a/main.fmf +++ b/main.fmf @@ -1,5 +1,6 @@ # QE owner -contact: Petr Sklenar +contact: Frantisek Hrdina +component: dhcp check: - how: avc adjust: From 15da73a729d5007b56ef4c87209045d7eb43fc93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Hrdina?= Date: Tue, 21 Oct 2025 12:16:39 +0200 Subject: [PATCH 12/12] Public tests moved to centos-stream tests repositories --- .fmf/version | 1 - COMMITMENT | 46 --- LICENSE | 339 -------------------- README.md | 4 +- Sanity/Stress/Makefile | 63 ---- Sanity/Stress/PURPOSE | 9 - Sanity/Stress/dhcpd.conf | 25 -- Sanity/Stress/e.py | 64 ---- Sanity/Stress/ether-type.txt | 85 ----- Sanity/Stress/main.fmf | 26 -- Sanity/Stress/runtest.sh | 125 -------- Sanity/client-ipv4-tests/Makefile | 36 --- Sanity/client-ipv4-tests/PURPOSE | 3 - Sanity/client-ipv4-tests/dhclient-tests.py | 234 -------------- Sanity/client-ipv4-tests/main.fmf | 15 - Sanity/client-ipv4-tests/runtest.sh | 52 --- Sanity/client-ipv4-tests/test-dhclient.conf | 12 - Sanity/client-ipv4-tests/test-dnsmasq.conf | 15 - Sanity/client-ipv4-tests/tsharkd.service | 10 - Sanity/ddns-bind-test/Makefile | 63 ---- Sanity/ddns-bind-test/PURPOSE | 3 - Sanity/ddns-bind-test/db.example.zone | 14 - Sanity/ddns-bind-test/db.reverse-192.168.69 | 11 - Sanity/ddns-bind-test/ddns.conf | 18 -- Sanity/ddns-bind-test/dhcpd.conf | 26 -- Sanity/ddns-bind-test/main.fmf | 18 -- Sanity/ddns-bind-test/runtest.sh | 199 ------------ main.fmf | 12 - plans/all.fmf | 5 - 29 files changed, 1 insertion(+), 1532 deletions(-) delete mode 100644 .fmf/version delete mode 100644 COMMITMENT delete mode 100644 LICENSE delete mode 100644 Sanity/Stress/Makefile delete mode 100644 Sanity/Stress/PURPOSE delete mode 100644 Sanity/Stress/dhcpd.conf delete mode 100644 Sanity/Stress/e.py delete mode 100644 Sanity/Stress/ether-type.txt delete mode 100644 Sanity/Stress/main.fmf delete mode 100755 Sanity/Stress/runtest.sh delete mode 100644 Sanity/client-ipv4-tests/Makefile delete mode 100644 Sanity/client-ipv4-tests/PURPOSE delete mode 100755 Sanity/client-ipv4-tests/dhclient-tests.py delete mode 100644 Sanity/client-ipv4-tests/main.fmf delete mode 100755 Sanity/client-ipv4-tests/runtest.sh delete mode 100644 Sanity/client-ipv4-tests/test-dhclient.conf delete mode 100644 Sanity/client-ipv4-tests/test-dnsmasq.conf delete mode 100644 Sanity/client-ipv4-tests/tsharkd.service delete mode 100644 Sanity/ddns-bind-test/Makefile delete mode 100644 Sanity/ddns-bind-test/PURPOSE delete mode 100644 Sanity/ddns-bind-test/db.example.zone delete mode 100644 Sanity/ddns-bind-test/db.reverse-192.168.69 delete mode 100644 Sanity/ddns-bind-test/ddns.conf delete mode 100644 Sanity/ddns-bind-test/dhcpd.conf delete mode 100644 Sanity/ddns-bind-test/main.fmf delete mode 100755 Sanity/ddns-bind-test/runtest.sh delete mode 100644 main.fmf delete mode 100644 plans/all.fmf diff --git a/.fmf/version b/.fmf/version deleted file mode 100644 index d00491f..0000000 --- a/.fmf/version +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/COMMITMENT b/COMMITMENT deleted file mode 100644 index a687e0d..0000000 --- a/COMMITMENT +++ /dev/null @@ -1,46 +0,0 @@ -GPL Cooperation Commitment -Version 1.0 - -Before filing or continuing to prosecute any legal proceeding or claim -(other than a Defensive Action) arising from termination of a Covered -License, we commit to extend to the person or entity ('you') accused -of violating the Covered License the following provisions regarding -cure and reinstatement, taken from GPL version 3. As used here, the -term 'this License' refers to the specific Covered License being -enforced. - - However, if you cease all violation of this License, then your - license from a particular copyright holder is reinstated (a) - provisionally, unless and until the copyright holder explicitly - and finally terminates your license, and (b) permanently, if the - copyright holder fails to notify you of the violation by some - reasonable means prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is - reinstated permanently if the copyright holder notifies you of the - violation by some reasonable means, this is the first time you - have received notice of violation of this License (for any work) - from that copyright holder, and you cure the violation prior to 30 - days after your receipt of the notice. - -We intend this Commitment to be irrevocable, and binding and -enforceable against us and assignees of or successors to our -copyrights. - -Definitions - -'Covered License' means the GNU General Public License, version 2 -(GPLv2), the GNU Lesser General Public License, version 2.1 -(LGPLv2.1), or the GNU Library General Public License, version 2 -(LGPLv2), all as published by the Free Software Foundation. - -'Defensive Action' means a legal proceeding or claim that We bring -against you in response to a prior proceeding or claim initiated by -you or your affiliate. - -'We' means each contributor to this repository as of the date of -inclusion of this file, including subsidiaries of a corporate -contributor. - -This work is available under a Creative Commons Attribution-ShareAlike -4.0 International license (https://creativecommons.org/licenses/by-sa/4.0/). diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d159169..0000000 --- a/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - 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. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/README.md b/README.md index f2fb651..bd55c47 100644 --- a/README.md +++ b/README.md @@ -1,3 +1 @@ -# dhcp - -Repository for dhcp tests \ No newline at end of file +Public tests have been moved to: https://gitlab.com/redhat/centos-stream/tests/ diff --git a/Sanity/Stress/Makefile b/Sanity/Stress/Makefile deleted file mode 100644 index ada278f..0000000 --- a/Sanity/Stress/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /CoreOS/dhcp/Sanity/Stress -# Description: It runs many dhcp discover packet -# Author: Petr Sklenar -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2022 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# 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, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/CoreOS/dhcp/Sanity/Stress -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE dhcpd.conf e.py - -.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: Petr Sklenar " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: It runs many dhcp discover packet" >> $(METADATA) - @echo "Type: Sanity" >> $(METADATA) - @echo "TestTime: 108m" >> $(METADATA) - @echo "RunFor: dhcp" >> $(METADATA) - @echo "Requires: python3 python dhcp dhcp bridge-utils dhcp-server dhcp-client python-scapy" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/Sanity/Stress/PURPOSE b/Sanity/Stress/PURPOSE deleted file mode 100644 index f518946..0000000 --- a/Sanity/Stress/PURPOSE +++ /dev/null @@ -1,9 +0,0 @@ -Description: It runs many dhcp discover packet -Author: Petr Sklenar - - - - - - - diff --git a/Sanity/Stress/dhcpd.conf b/Sanity/Stress/dhcpd.conf deleted file mode 100644 index 00732d2..0000000 --- a/Sanity/Stress/dhcpd.conf +++ /dev/null @@ -1,25 +0,0 @@ -authoritative; -option subnet-mask 255.255.255.0; -option broadcast-address 192.168.123.255; -option routers 192.168.123.254; -option domain-name-servers 8.8.8.8; -option domain-name "petr.godham"; - -# Set this to `interim' when doing ddns updates -ddns-update-style none; -allow leasequery; -update-static-leases off; - -# define a pool for dynamic addresses - -shared-network XXX { - subnet 192.168.123.0 netmask 255.255.255.0 { - allow leasequery; - default-lease-time 259200; - max-lease-time 259200; - pool { - range 192.168.123.200 192.168.123.222; - } - } -} - diff --git a/Sanity/Stress/e.py b/Sanity/Stress/e.py deleted file mode 100644 index ba7c9dc..0000000 --- a/Sanity/Stress/e.py +++ /dev/null @@ -1,64 +0,0 @@ -""" -created by Petr Sklenar -psklenar@gmail.com - -this testing script runs discover + request packet in a loop, from emac0 interface -testing environment is created by namespace in runtest.sh -""" -import socket -import random -from scapy.all import * -from scapy.layers.dhcp import BOOTP, DHCP -from scapy.layers.inet import IP, UDP -from scapy.layers.l2 import Ether - - -def MyRandTYPE(): - list = [0x0004, 0x0200, 0x0200, 0x0600, 0x0601, 0x0660, 0x0661, 0x0800, 0x0801, 0x0802, 0x0803, 0x0804, 0x0805, - 0x0806, 0x0808, 0x0BAD, 0x1000, 0x1234, 0x1600, 0x1995, 0x3C04, 0x3C07, 0x4242, 0x4C42, 0x6001, 0x6002, - 0x6004, 0x6007, 0x6008, 0x6559, 0x7000, 0x7001, 0x7003, - 0x7005, 0x7007, 0x7030, 0x8005, 0x802F, 0x8048, - 0x805B, 0x805C, 0x805D, 0x8067, 0x8069, 0x807A, 0x807B, 0x807C, 0x809B, 0x80C6, 0x80D5, 0x80F2, 0x80F3, - 0x8100, 0x8102, 0x8130, 0x8131, 0x8137, 0x813F, 0x8146, 0x8149, 0x814A, 0x814C, 0x817D, 0x817E, 0x8181, - 0x86DD, 0x8739, 0x873A, 0x876C, 0x8809, 0x880B, 0x8847, 0x8856, 0x8864, 0x888E, 0x88A2, 0x88A8, 0x88CC, - 0x88E7, 0x9001, 0x9002, 0xAAAA, 0xFAF5, 0xFF00, 0xFFFF] - # ignore for now ^ - list = [0x800] - hex_string = random.choice(list) - #print(hex(hex_string)) - return hex_string - - -def MyDORA(): - # list = ['discover', 'offer', 'request', 'ack'] - list = ['discover', 'request'] - # d + r make a sense - typedora = random.choice(list) - #print(typedora,end='') - return typedora - - -def sendPacket(mynic, mycounter): - conf.checkIPaddr = False # Disabling the IP address checking - ethernet = Ether(dst='ff:ff:ff:ff:ff:ff', src=RandMAC(), type=MyRandTYPE()) - ip = IP(src='0.0.0.0', dst='255.255.255.255') - udp = UDP(sport=68, dport=67) - bootp = BOOTP(chaddr=RandMAC(), ciaddr='0.0.0.0', flags=random.randint(1, 100)) - # bootp = BOOTP(op=1, chaddr=RandMAC()) - dhcp = DHCP(options=[("message-type", MyDORA()), "end"]) - packet = ethernet / ip / udp / bootp / dhcp - sendp(packet, iface=mynic, count=mycounter, verbose=0) - - -def main(): - howmany = 1000 - print("running ",howmany,"x") - for i in range(howmany): - #print('running ', i, ' / ', howmany) - #print('.',end='') - sendPacket('emac1',1) - - -if __name__ == '__main__': - print('some random testing ...') - main() diff --git a/Sanity/Stress/ether-type.txt b/Sanity/Stress/ether-type.txt deleted file mode 100644 index c9cfa63..0000000 --- a/Sanity/Stress/ether-type.txt +++ /dev/null @@ -1,85 +0,0 @@ -8023 0004 # IEEE 802.3 packet -PUP 0200 # Xerox PUP protocol - see 0A00 -PUPAT 0200 # PUP Address Translation - see 0A01 -NS 0600 # XNS -NSAT 0601 # XNS Address Translation (3Mb only) -DLOG1 0660 # DLOG (?) -DLOG2 0661 # DLOG (?) -IPv4 0800 # IP protocol -X75 0801 # X.75 Internet -NBS 0802 # NBS Internet -ECMA 0803 # ECMA Internet -CHAOS 0804 # CHAOSnet -X25 0805 # X.25 Level 3 -ARP 0806 # Address resolution protocol -FRARP 0808 # Frame Relay ARP (RFC1701) -VINES 0BAD # Banyan VINES -TRAIL 1000 # Trailer packet -DCA 1234 # DCA - Multicast -VALID 1600 # VALID system protocol -RCL 1995 # Datapoint Corporation (RCL lan protocol) -NBPCC 3C04 # 3Com NBP Connect complete not registered -NBPDG 3C07 # 3Com NBP Datagram (like XNS IDP) not registered -PCS 4242 # PCS Basic Block Protocol -IMLBL 4C42 # Information Modes Little Big LAN -MOPDL 6001 # DEC MOP dump/load -MOPRC 6002 # DEC MOP remote console -LAT 6004 # DEC LAT -SCA 6007 # DEC LAVC, SCA -AMBER 6008 # DEC AMBER -RAWFR 6559 # Raw Frame Relay (RFC1701) -UBDL 7000 # Ungermann-Bass download -UBNIU 7001 # Ungermann-Bass NIUs -UBNMC 7003 # Ungermann-Bass ??? (NMC to/from UB Bridge) -UBBST 7005 # Ungermann-Bass Bridge Spanning Tree -OS9 7007 # OS/9 Microware -RACAL 7030 # Racal-Interlan -HP 8005 # HP Probe -TIGAN 802F # Tigan, Inc. -DECAM 8048 # DEC Availability Manager for Distributed Systems DECamds (but someone at DEC says not) -VEXP 805B # Stanford V Kernel exp. -VPROD 805C # Stanford V Kernel prod. -ES 805D # Evans & Sutherland -VEECO 8067 # Veeco Integrated Auto. -ATT 8069 # AT&T -MATRA 807A # Matra -DDE 807B # Dansk Data Elektronik -MERIT 807C # Merit Internodal (or Univ of Michigan?) -ATALK 809B # AppleTalk -PACER 80C6 # Pacer Software -SNA 80D5 # IBM SNA Services over Ethernet -RETIX 80F2 # Retix -AARP 80F3 # AppleTalk AARP -VLAN 8100 # IEEE 802.1Q VLAN tagging (XXX conflicts) -BOFL 8102 # Wellfleet; BOFL (Breath OF Life) pkts [every 5-10 secs.] -HAYES 8130 # Hayes Microcomputers (XXX which?) -VGLAB 8131 # VG Laboratory Systems -IPX 8137 # Novell (old) NetWare IPX (ECONFIG E option) -MUMPS 813F # M/MUMPS data sharing -FLIP 8146 # Vrije Universiteit (NL) FLIP (Fast Local Internet Protocol) -NCD 8149 # Network Computing Devices -ALPHA 814A # Alpha Micro -SNMP 814C # SNMP over Ethernet (see RFC1089) -XTP 817D # Protocol Engines XTP -SGITW 817E # SGI/Time Warner prop. -STP 8181 # Scheduled Transfer STP, HIPPI-ST -IPv6 86DD # IP protocol version 6 -RDP 8739 # Control Technology Inc. RDP Without IP -MICP 873A # Control Technology Inc. Mcast Industrial Ctrl Proto. -IPAS 876C # IP Autonomous Systems (RFC1701) -SLOW 8809 # 803.3ad slow protocols (LACP/Marker) -PPP 880B # PPP (obsolete by PPPOE) -MPLS 8847 # MPLS Unicast -AXIS 8856 # Axis Communications AB proprietary bootstrap/config -PPPOE 8864 # PPP Over Ethernet Session Stage -PAE 888E # 802.1X Port Access Entity -AOE 88A2 # ATA over Ethernet -QINQ 88A8 # 802.1ad VLAN stacking -LLDP 88CC # Link Layer Discovery Protocol -PBB 88E7 # 802.1Q Provider Backbone Bridging -XNSSM 9001 # 3Com (Formerly Bridge Communications), XNS Systems Management -TCPSM 9002 # 3Com (Formerly Bridge Communications), TCP/IP Systems Management -DEBNI AAAA # DECNET? Used by VAX 6220 DEBNI -SONIX FAF5 # Sonix Arpeggio -VITAL FF00 # BBN VITAL-LanBridge cache wakeups -MAX FFFF # Maximum valid ethernet type, reserved diff --git a/Sanity/Stress/main.fmf b/Sanity/Stress/main.fmf deleted file mode 100644 index 8558acd..0000000 --- a/Sanity/Stress/main.fmf +++ /dev/null @@ -1,26 +0,0 @@ -summary: Stress test - It runs many dhcp discover packet -description: '' -enabled: true -tag: - - Tier1 -tier: '1' -adjust+: - - enabled: false - when: distro == rhel-8 - continue: false -author: Petr Sklenar -test: ./runtest.sh -framework: beakerlib -recommend: - - dhcp - - dhcp - - bridge-utils - - dhcp-server - - dhcp-client - - python-scapy - - python3-scapy -duration: 145m -extra-nitrate: TC#0614374 -extra-summary: /CoreOS/dhcp/Sanity/Stress -extra-task: /CoreOS/dhcp/Sanity/Stress -id: a2b132c2-1829-4c45-9ee2-792d73de451e diff --git a/Sanity/Stress/runtest.sh b/Sanity/Stress/runtest.sh deleted file mode 100755 index 673ddc8..0000000 --- a/Sanity/Stress/runtest.sh +++ /dev/null @@ -1,125 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /CoreOS/dhcp/Sanity/Stress -# Description: It runs many dhcp discover packet -# Author: Petr Sklenar -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2022 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# 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, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="dhcp" - -rlJournalStart - rlPhaseStartSetup - rlRun "TestDir=\"`pwd`\"" - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "pushd $TmpDir" - - rlRun "SERVER_LOG=`mktemp -p .`" - rlRun "> lease.f" - - # - # netns server [emac0] <===> [emac0-br] [emac1-br] <===> [emac1] netns client - # - # Create 2 separate network namespaces - rlRun "ip netns add netns-server" - rlRun "ip netns add netns-client" - - # Create a bridge to connect 2 namespaces - rlRun "ip link add name test-bridge type bridge" - #rlRun "ip link set dev test-bridge type bridge stp_state 0" - rlRun "ip link set dev test-bridge up" - - # Create 2 pairs of virtual network devices to connect to bridge - rlRun "ip link add name emac0 netns netns-server type veth peer name emac0-br" - rlRun "ip link add name emac1 netns netns-client type veth peer name emac1-br" - rlRun "ip -n netns-server link set dev emac0 up" - rlRun "ip link set dev emac0-br up" - rlRun "ip -n netns-client link set dev emac1 up" - rlRun "ip link set dev emac1-br up" - - # Connect the namespaces to the bridge - rlRun "ip link set emac0-br master test-bridge" - rlRun "ip link set emac1-br master test-bridge" - - # Set up loopbacks for the namespaces - rlRun "ip -n netns-server link set lo up" - rlRun "ip -n netns-client link set lo up" - - # Set IP address for namespace running dhcpd - rlRun "ip -n netns-server addr add 192.168.123.1/24 dev emac0" - rlRun "ip netns exec netns-server ping 192.168.123.1 -c 1 -q" 0 - rlPhaseEnd - - rlPhaseStartTest "Start dhcp server" - rlLog "Running: (ip netns exec netns-server dhcpd -d -cf \"$TestDir\"/dhcpd.conf -lf lease.f emac0 2>&1) > $SERVER_LOG&" - (ip netns exec netns-server dhcpd -d -cf "$TestDir"/dhcpd.conf -lf lease.f emac0 2>&1) > $SERVER_LOG& - SERVER_PID=$! - rlRun "sleep 5" - rlLog "dhcpd server PID: $SERVER_PID" - rlRun "test -e /proc/$SERVER_PID" - rlPhaseEnd - - rlPhaseStartTest "Test whether dhcpd doesn't crash" - # TODO python symlink/executable doesn't exist on rhel8 - # debug : - python=python - rpm -q bash | grep el8 && python=python3 - rlRun "ip netns exec netns-client timeout 1h $python \"$TestDir\"/e.py" - rlPhaseEnd - - sleep 5 - - rlPhaseStartTest "does dhcpd still live?" - rlLog "dhcpd server PID: $SERVER_PID" - rlRun "test -e /proc/$SERVER_PID" - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "kill $SERVER_PID" 0 "Kill server PID: $SERVER_PID" - # Pid file is not removed when dhcpd is killed from command line and that breaks other tests - if test -e /var/run/dhcpd.pid; then - rlRun "rm -f /var/run/dhcpd.pid" 0 "Removing dhcpd.pid" - fi - - killall -9 dhcpd - echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - head -n20 $SERVER_LOG - echo "......snip" - tail -n20 $SERVER_LOG - echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - - rlRun "ip netns delete netns-server" 0 "Delete netns-dhcpd namespace" - rlRun "ip netns delete netns-client" 0 "Delete netns-dhclient namespace" - rlRun "ip link set dev test-bridge down" 0 - rlRun "ip link del test-bridge" 0 - - rlBundleLogs $SERVER_LOG - - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd - diff --git a/Sanity/client-ipv4-tests/Makefile b/Sanity/client-ipv4-tests/Makefile deleted file mode 100644 index c1c6f33..0000000 --- a/Sanity/client-ipv4-tests/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# SPDX-License-Identifier: LGPL-2.1+ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /CoreOS/dhcp-client -# Description: Test if dhclient working ok -# Author: Susant Sahani -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -export TEST=/CoreOS/dhcpcd-client -export TESTVERSION=1.0 -BUILT_FILES= -FILES=$(METADATA) runtest.sh Makefile PURPOSE dhclient-tests.py test-dhclient.conf tsharkd.service test-dnsmasq.conf -.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: Susant Sahani" > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: Test if the ABI hasn't changed" >> $(METADATA) - @echo "Type: Sanity" >> $(METADATA) - @echo "TestTime: 5m" >> $(METADATA) - @echo "RunFor: dhcp-client" >> $(METADATA) - @echo "Requires: dhcp-client dnsmasq wireshark python3-pyroute2" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Releases: -Fedora 28" >> $(METADATA) - rhts-lint $(METADATA) diff --git a/Sanity/client-ipv4-tests/PURPOSE b/Sanity/client-ipv4-tests/PURPOSE deleted file mode 100644 index 21de826..0000000 --- a/Sanity/client-ipv4-tests/PURPOSE +++ /dev/null @@ -1,3 +0,0 @@ -PURPOSE of /CoreOS/dhcpd-client -Description: tests for dh client -Author: Susant Sahani diff --git a/Sanity/client-ipv4-tests/dhclient-tests.py b/Sanity/client-ipv4-tests/dhclient-tests.py deleted file mode 100755 index 0eec085..0000000 --- a/Sanity/client-ipv4-tests/dhclient-tests.py +++ /dev/null @@ -1,234 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-License-Identifier: LGPL-2.1+ -# ~~~ -# Description: Tests for dhclient - a DHCP client -# -# Author: Susant Sahani -# Copyright (c) 2018 Red Hat, Inc. -# ~~~ - -import errno -import os -import sys -import time -import unittest -import subprocess -import signal -import shutil -import socket -from pyroute2 import IPRoute - -DHCLIENT_CI_DIR='/var/run/dhclient-ci' - -DHCLIENT_CONFIG_FILE='/var/run/dhclient-ci/test-dhclient.conf' -DHCLIENT_PID_FILE='/var/run/dhclient-ci/test-dhclient-test.pid' -DHCLIENT_LEASE_FILE='/var/run/dhclient-ci/test-dhclient.leases' -DHCLIENT_LOG_FILE='/var/run/dhclient-ci/test-dhclient-test-log' -DHCLIENT_TCP_DUMP_FILE='/var/run/dhclient-ci/test-dhclient-tcp-dump.pcap' - -DNSMASQ_CONFIG_FILE='/var/run/dhclient-ci/test-dnsmasq.conf' -DNSMASQ_PID_FILE='/var/run/dhclient-ci/test-test-dnsmasq.pid' -DNSMASQ_LOG_FILE='/var/run/dhclient-ci/test-dnsmasq-log-file' - -RESOLV_CONF='/etc/resolv.conf' - -def setUpModule(): - """Initialize the environment, and perform sanity checks on it.""" - - if shutil.which('dhclient') is None: - raise OSError(errno.ENOENT, 'dhclient not found') - - if shutil.which('dnsmasq') is None: - raise OSError(errno.ENOENT, 'dnsmasq not found') - -def tearDownModule(): - pass - -class GenericUtilities(): - """Provide a set of utility functions start stop daemons. write config files etc """ - - def StartDnsMasq(self): - """Start dnsmaq""" - subprocess.check_output(['dnsmasq', '-8', DNSMASQ_LOG_FILE, '--log-dhcp', '--pid-file=/var/run/dhclient-ci/test-test-dnsmasq.pid', - '--conf-file=/var/run/dhclient-ci/test-dnsmasq.conf', '-i', 'veth-peer', '-R']) - - def StartDhClient(self): - """Start dhclient """ - subprocess.check_output(['dhclient', '-4', '-v', '-nw', '-pf', DHCLIENT_PID_FILE, '-cf', DHCLIENT_CONFIG_FILE, '-lf', DHCLIENT_LEASE_FILE, 'veth-test']) - - def StopDaemon(self, pid_file): - with open(pid_file, 'r') as f: - pid = f.read().rstrip(' \t\r\n\0') - os.kill(int(pid), signal.SIGTERM) - - os.remove(pid_file) - - def SearchWordsInFile(self, log_file, **kwargs): - """dnsmasq server logs.""" - - if kwargs is not None: - with open (log_file, 'rt') as in_file: - contents = in_file.read() - for key in kwargs: - self.assertRegex(contents, kwargs[key]) - - def FindProtocolFieldsinTCPDump(self, **kwargs): - """Look attributes in tshark.""" - - contents = subprocess.check_output(['tshark', '-V', '-r', DHCLIENT_TCP_DUMP_FILE]).rstrip().decode('utf-8') - if kwargs is not None: - for key in kwargs: - self.assertRegex(contents, kwargs[key]) - - def SetupVethInterface(self): - """Setup veth interface""" - - ip = IPRoute() - - ip.link('add', ifname='veth-test', peer='veth-peer', kind='veth') - idx_veth_test = ip.link_lookup(ifname='veth-test')[0] - idx_veth_peer = ip.link_lookup(ifname='veth-peer')[0] - - ip.link('set', index=idx_veth_test, address='02:01:02:03:04:08') - ip.link('set', index=idx_veth_peer, address='02:01:02:03:04:09') - ip.link('set', index=idx_veth_test, state='up') - ip.link('set', index=idx_veth_peer, state='up') - ip.addr('add', index=idx_veth_peer, address='192.168.111.50') - - ip.close() - - def TearDownVethInterface(self): - - ip = IPRoute() - - ip.link('del', index=ip.link_lookup(ifname='veth-test')[0]) - ip.close() - - def StartCaptureBootpPackets(self): - """Start thark to capture dhcp packets""" - subprocess.check_output(['systemctl','start', 'tsharkd.service']) - - def StopCapturingPackets(self): - subprocess.check_output(['systemctl', 'stop', 'tsharkd.service']) - -class DhclientTests(unittest.TestCase, GenericUtilities): - - def setUp(self): - """ setup veth and write radvd and dhcpv6configs """ - self.SetupVethInterface() - - def tearDown(self): - self.StopDaemon(DHCLIENT_PID_FILE) - self.StopDaemon(DNSMASQ_PID_FILE) - - os.remove(DHCLIENT_LEASE_FILE) - - self.TearDownVethInterface() - - def test_dhclient_clientid_vendorclassid_request_parameters(self): - """ verify dhclient sends custom client-id, vendorclass and request parameters""" - - self.StartDnsMasq() - self.StartCaptureBootpPackets() - - time.sleep(3) - - self.StartDhClient() - - time.sleep(10) - self.StopCapturingPackets() - time.sleep(3) - - output=subprocess.check_output(['ip','address', 'show', 'veth-test']).rstrip().decode('utf-8') - - # Address prefix - self.assertRegex(output, "192.168.111.*") - - host='Host Name:.*%s' % socket.gethostname() - self.FindProtocolFieldsinTCPDump(vendor_class='Vendor class identifier: Zeus_dhclient_vendorclass_id', - client_mac_address='Client MAC address:.*\(02:01:02:03:04:08\)', - host_name=host, - client_identifier='\\\\021\\\\021\\\\022\\\\022\\\\023\\\\023\\\\024\\\\024\\\\025\\\\025\\\\026\\\\026', - req_param1='Parameter Request List Item: \(1\) Subnet Mask', - req_param28='Parameter Request List Item: \(28\) Broadcast Address', - req_param2='Parameter Request List Item: \(2\) Time Offset', - req_param3='Parameter Request List Item: \(3\) Router', - req_param15='Parameter Request List Item: \(15\) Domain Name', - req_param6='Parameter Request List Item: \(6\) Domain Name Server', - req_param119='Parameter Request List Item: \(119\) Domain Search', - req_param12='Parameter Request List Item: \(12\) Host Name', - req_param44='Parameter Request List Item: \(44\) NetBIOS over TCP/IP Name Server', - req_param47='Parameter Request List Item: \(47\) NetBIOS over TCP/IP Scope', - req_param26='Parameter Request List Item: \(26\) Interface MTU', - req_param121='Parameter Request List Item: \(121\) Classless Static Route', - req_param42='Parameter Request List Item: \(42\) Network Time Protocol Servers') - os.remove(DHCLIENT_TCP_DUMP_FILE) - - def test_dhclient_sets_dns_domain(self): - """ dhclient request DNS and domain name and sets to resolv.conf """ - - self.StartDnsMasq() - - time.sleep(1) - - self.StartDhClient() - - time.sleep(5) - - output=subprocess.check_output(['ip','address', 'show', 'veth-test']).rstrip().decode('utf-8') - - # Address prefix - self.assertRegex(output, "192.168.111.*") - - # Default route - output=subprocess.check_output(['ip','route', 'show', 'dev', 'veth-test']).rstrip().decode('utf-8') - self.assertRegex(output, "default via 192.168.1.1*") - - # search example-test.com\nnameserver 8.8.8.8\nnameserver 8.8.4.4\n' - # resolv.conf has configs - self.SearchWordsInFile(RESOLV_CONF, - domain_name='search example-test.com', - nnameserver1='nameserver 8.8.8.8', - nnameserver2='nameserver 8.8.4.4') - - def test_dhclient_sets_mtu(self): - """ dhclient gets MTU 1400 """ - - self.StartDnsMasq() - - time.sleep(1) - - self.StartDhClient() - - time.sleep(5) - - output=subprocess.check_output(['ip','address', 'show', 'veth-test']).rstrip().decode('utf-8') - - # Address prefix - self.assertRegex(output, "192.168.111.*") - # MTU - self.assertRegex(output, 'mtu 1400') - - def test_dhclient_ipv4(self): - """ dhclient gets address """ - - self.StartDnsMasq() - - time.sleep(1) - - self.StartDhClient() - - time.sleep(5) - output=subprocess.check_output(['ip','address', 'show', 'veth-test']).rstrip().decode('utf-8') - - # Address prefix - self.assertRegex(output, "192.168.111.*") - - # Default route - output=subprocess.check_output(['ip','route', 'show', 'dev', 'veth-test']).rstrip().decode('utf-8') - self.assertRegex(output, "default via 192.168.1.1*") - - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, - verbosity=3)) diff --git a/Sanity/client-ipv4-tests/main.fmf b/Sanity/client-ipv4-tests/main.fmf deleted file mode 100644 index d66ba94..0000000 --- a/Sanity/client-ipv4-tests/main.fmf +++ /dev/null @@ -1,15 +0,0 @@ -summary: Test if the ABI hasn't changed -description: '' -author: Susant Sahani -test: ./runtest.sh -framework: beakerlib -recommend: - - dhcp-client - - dnsmasq - - wireshark - - python3-pyroute2 -duration: 15m -extra-summary: /CoreOS/dhcpcd-client -extra-task: /CoreOS/dhcpcd-client -enabled: false -tier: '2' diff --git a/Sanity/client-ipv4-tests/runtest.sh b/Sanity/client-ipv4-tests/runtest.sh deleted file mode 100755 index 6b8963b..0000000 --- a/Sanity/client-ipv4-tests/runtest.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: LGPL-2.1+ -# ~~~ -# runtest.sh of dhclient -# Description: dhclient - Dynamic Host Configuration Protocol Client. -# -# Author: Susant Sahani -# Copyright (c) 2018 Red Hat, Inc. -# ~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="dhcp-client" - -DHCLIENT_CI_DIR="/var/run/dhclient-ci" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - - rlRun "systemctl stop firewalld" 0,5 - rlRun "setenforce 0" 0,1 - - rlRun "[ -e /sys/class/net/veth-test ] && ip link del veth-test" 0,1 - - rlRun "cp dhclient-tests.py /usr/bin/" - rlRun "cp tsharkd.service /var/run/systemd/system" - - rlRun "mkdir -p $DHCLIENT_CI_DIR" - rlRun "cp *.conf $DHCLIENT_CI_DIR" - rlRun "systemctl daemon-reload" - rlPhaseEnd - - rlPhaseStartTest - rlLog "Starting dhclient tests ..." - rlRun "/usr/bin/python3 /usr/bin/dhclient-tests.py" - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "rm /usr/bin/dhclient-tests.py /var/run/systemd/system/tsharkd.service" - rlRun "rm -rf $DHCLIENT_CI_DIR" - - rlRun "setenforce 1" 0,1 - rlRun "systemctl daemon-reload" - rlRun "[ -e /sys/class/net/veth-test ] && ip link del veth-test" 0,1 - rlLog "dhclient tests done" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd - -rlGetTestState diff --git a/Sanity/client-ipv4-tests/test-dhclient.conf b/Sanity/client-ipv4-tests/test-dhclient.conf deleted file mode 100644 index 50eeaea..0000000 --- a/Sanity/client-ipv4-tests/test-dhclient.conf +++ /dev/null @@ -1,12 +0,0 @@ -option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; - -send host-name = gethostname(); -send dhcp-client-identifier 00:11:11:12:12:13:13:14:14:15:15:16:16; -send dhcp-lease-time 3600; -send vendor-class-identifier "Zeus_dhclient_vendorclass_id"; -request subnet-mask, broadcast-address, time-offset, routers, - domain-name, domain-name-servers, domain-search, host-name, - domain-search, host-name, - dhcp6.name-servers, dhcp6.domain-search, - netbios-name-servers, netbios-scope, interface-mtu, - rfc3442-classless-static-routes, ntp-servers; diff --git a/Sanity/client-ipv4-tests/test-dnsmasq.conf b/Sanity/client-ipv4-tests/test-dnsmasq.conf deleted file mode 100644 index 7a40185..0000000 --- a/Sanity/client-ipv4-tests/test-dnsmasq.conf +++ /dev/null @@ -1,15 +0,0 @@ -interface=veth-peer -bind-interfaces - -# Optionally set a domain name -domain=example-test.com - -# Set default gateway -dhcp-option=3,192.168.1.1 - -# Set DNS servers to announce -dhcp-option=6,8.8.8.8,8.8.4.4 -dhcp-option=26,1400 -# Dynamic range of IPs to make available to LAN PC and the lease time. -# Ideally set the lease time to 5m only at first to test everything works okay before you set long-lasting records. -dhcp-range=192.168.111.50,192.168.111.100,255.255.255.0,1h diff --git a/Sanity/client-ipv4-tests/tsharkd.service b/Sanity/client-ipv4-tests/tsharkd.service deleted file mode 100644 index c604b21..0000000 --- a/Sanity/client-ipv4-tests/tsharkd.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Tshark daemon -After=multi-user.target network.target - -[Service] -Type=simple -GuessMainPID=true -ExecStart=/usr/bin/tshark -w /var/run/dhclient-ci/test-dhclient-tcp-dump.pcap -f "port 67 or port 68" -i veth-peer -P -[Install] -WantedBy=multi-user.target diff --git a/Sanity/ddns-bind-test/Makefile b/Sanity/ddns-bind-test/Makefile deleted file mode 100644 index 4d0422d..0000000 --- a/Sanity/ddns-bind-test/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /CoreOS/dhcp/Sanity/ddns-bind-test -# Description: Tests DDNS functionality in DHCP. -# Author: Martin Osvald -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2024 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# 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, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/CoreOS/dhcp/Sanity/ddns-bind-test -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE ddns.conf db.example.zone db.reverse-192.168.69 dhcpd.conf - -.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: Martin Osvald " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: Tests DDNS functionality in DHCP." >> $(METADATA) - @echo "Type: Sanity" >> $(METADATA) - @echo "TestTime: 1h" >> $(METADATA) - @echo "RunFor: dhcp" >> $(METADATA) - @echo "Requires: dhclient dhcp dhcp-client dhcp-server bind bind-utils" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/Sanity/ddns-bind-test/PURPOSE b/Sanity/ddns-bind-test/PURPOSE deleted file mode 100644 index af62469..0000000 --- a/Sanity/ddns-bind-test/PURPOSE +++ /dev/null @@ -1,3 +0,0 @@ -PURPOSE of /CoreOS/dhcp/Sanity/ddns-bind-test -Description: Tests DDNS functionality in DHCP. -Author: Martin Osvald diff --git a/Sanity/ddns-bind-test/db.example.zone b/Sanity/ddns-bind-test/db.example.zone deleted file mode 100644 index e924c84..0000000 --- a/Sanity/ddns-bind-test/db.example.zone +++ /dev/null @@ -1,14 +0,0 @@ -$ORIGIN . -$TTL 38400 ; 10 hours 40 minutes -example.com IN SOA ddns.example.com. root.ddns.example.com. ( - 35 ; serial - 10800 ; refresh (3 hours) - 3600 ; retry (1 hour) - 604800 ; expire (1 week) - 38400 ; minimum (10 hours 40 minutes) - ) - NS ddns.example.com. - A 192.168.69.1 -$ORIGIN example.com. -$TTL 38400 ; 10 hours 40 minutes -ddns A 192.168.69.1 diff --git a/Sanity/ddns-bind-test/db.reverse-192.168.69 b/Sanity/ddns-bind-test/db.reverse-192.168.69 deleted file mode 100644 index 1da7af4..0000000 --- a/Sanity/ddns-bind-test/db.reverse-192.168.69 +++ /dev/null @@ -1,11 +0,0 @@ -$ORIGIN . -$TTL 86400 ; 1 day -69.168.192.in-addr.arpa IN SOA example.com. root.ddns.example.com. ( - 28 ; serial - 28800 ; refresh (8 hours) - 7200 ; retry (2 hours) - 2419200 ; expire (4 weeks) - 86400 ; minimum (1 day) - ) - NS ddns.example.com. -$ORIGIN 69.168.192.in-addr.arpa. diff --git a/Sanity/ddns-bind-test/ddns.conf b/Sanity/ddns-bind-test/ddns.conf deleted file mode 100644 index 20d9da9..0000000 --- a/Sanity/ddns-bind-test/ddns.conf +++ /dev/null @@ -1,18 +0,0 @@ -include "/etc/rndc.key"; - -zone "example.com" IN { - type master; - file "dynamic/db.example.zone"; - allow-update { key rndc-key; }; -}; - -zone "69.168.192.in-addr.arpa" IN { - type master; - file "dynamic/db.reverse-192.168.69"; - allow-update { key rndc-key; }; -}; - -controls { - inet 127.0.0.1 port 953 - allow { 127.0.0.1; } keys { "rndc-key"; }; -}; diff --git a/Sanity/ddns-bind-test/dhcpd.conf b/Sanity/ddns-bind-test/dhcpd.conf deleted file mode 100644 index 61e6d80..0000000 --- a/Sanity/ddns-bind-test/dhcpd.conf +++ /dev/null @@ -1,26 +0,0 @@ -include "/etc/rndc.key"; - -authoritative; - -zone example.com. { - primary 127.0.0.1; - key rndc-key; -} -zone 69.168.192.in-addr.arpa. { - primary 127.0.0.1; - key rndc-key; -} -ddns-updates on; -ddns-domainname "example.com"; -ddns-update-style DDNS_UPDATE_STYLE; -allow client-updates; -allow unknown-clients; - -subnet 192.168.69.0 netmask 255.255.255.0 { - option routers 192.168.69.1; - option subnet-mask 255.255.255.0; - option broadcast-address 192.168.69.255; - option domain-name-servers 192.168.69.1; - option domain-name "example.com"; - range 192.168.69.100 192.168.69.200; -} diff --git a/Sanity/ddns-bind-test/main.fmf b/Sanity/ddns-bind-test/main.fmf deleted file mode 100644 index ad571ad..0000000 --- a/Sanity/ddns-bind-test/main.fmf +++ /dev/null @@ -1,18 +0,0 @@ -summary: Tests DDNS functionality in DHCP. -description: '' -author: Martin Osvald -test: ./runtest.sh -tier: '1' -framework: beakerlib -recommend: - - dhclient - - dhcp - - dhcp-client - - dhcp-server - - bind - - bind-utils -duration: 1h -extra-summary: /CoreOS/dhcp/Sanity/ddns-bind-test -extra-task: /CoreOS/dhcp/Sanity/ddns-bind-test -extra-nitrate: TC#0617423 -id: ebeb52cc-c6c0-45f3-afc5-2650cb1139d9 diff --git a/Sanity/ddns-bind-test/runtest.sh b/Sanity/ddns-bind-test/runtest.sh deleted file mode 100755 index f7e474b..0000000 --- a/Sanity/ddns-bind-test/runtest.sh +++ /dev/null @@ -1,199 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /CoreOS/dhcp/Sanity/ddns-bind-test -# Description: Tests DDNS functionality in DHCP. -# Author: Martin Osvald -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2024 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# 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, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -#if rlIsRHEL '>=8' || rlIsFedora; then - PACKAGES="dhcp-client dhcp-server bind bind-utils" -#else - # The test works on RHEL7 too -# PACKAGES="dhclient dhcp bind bind-utils" -#fi - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm --all - #bash - - rlRun "rlFileBackup /etc/dhcp/dhcpd.conf" 0 "Back up dhcpd.conf" - rlRun "rlFileBackup /etc/named.conf" 0 "Back up named.conf" - - # - # Make dhclient stop overwriting resolv.conf - # - # CHATTR NOTE: Setting +i attribute works only in case resolv.conf - # is not a symbolic link. Keeping it here only as memo. - #rlRun "chattr +i `readlink -f /etc/resolv.conf`" - cat > /etc/dhcp/dhclient-enter-hooks<<'EOF' -PEERDNS=no -EOF - # RHEL7 version of dhclient-script doesn't read the file unless it has +x bit set - chmod +x /etc/dhcp/dhclient-enter-hooks - - # Get /etc/rndc.key created - rlRun "systemctl restart named" - rlRun "systemctl stop named" - - # Make Bind load custom ddns config - rlRun "echo \"include \\\"/etc/named/ddns.conf\\\";\" >> /etc/named.conf" - rlRun "cp ddns.conf /etc/named/" - - # Record path to the test files for later use before switching to temp dir - rlRun "TestDir=\"`pwd`\"" - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "pushd $TmpDir" - rlRun "DHCPD_LOG=`mktemp -p .`" - rlRun "DHCLIENT_LOG=`mktemp -p .`" - - # - # netns server [veth0] <===> [veth0-br] [veth1-br] <===> [veth1] netns client - # - # Create 2 separate network namespaces - rlRun "ip netns add netns-server" - rlRun "ip netns add netns-client" - - # Create a bridge to connect the 2 namespaces - rlRun "ip link add name test-bridge type bridge" - rlRun "ip link set dev test-bridge up" - - # Create 2 pairs of virtual network devices to connect to the bridge - rlRun "ip link add name veth0 netns netns-server type veth peer name veth0-br" - rlRun "ip link add name veth1 netns netns-client type veth peer name veth1-br" - rlRun "ip -n netns-server link set dev veth0 up" - rlRun "ip link set dev veth0-br up" - rlRun "ip -n netns-client link set dev veth1 up" - rlRun "ip link set dev veth1-br up" - - # Connect the namespaces to the bridge - rlRun "ip link set veth0-br master test-bridge" - rlRun "ip link set veth1-br master test-bridge" - - # Set up loopbacks for the namespaces - rlRun "ip -n netns-server link set lo up" - rlRun "ip -n netns-client link set lo up" - - # Set IP address for the namespace running dhcp server - rlRun "ip -n netns-server addr add 192.168.69.1/24 dev veth0" - rlRun "ip netns exec netns-server ping 192.168.69.1 -c 1 -q" 0 - rlPhaseEnd - - rlPhaseStartTest - - # - # Test both older interim and standard `ddns-update-style`: - # https://kb.isc.org/docs/aa-01091 - # - for DDNSUpdateStyle in interim standard; - do - - # - # Configuration that needs to be reset for every iteration - # - rlRun "sed s/DDNS_UPDATE_STYLE/$DDNSUpdateStyle/ \"$TestDir\"/dhcpd.conf > /etc/dhcp/dhcpd.conf" - rlRun "> /var/lib/dhcpd/dhcpd.leases; > /var/lib/dhcpd/dhcpd.leases~" - rlRun "chown dhcpd:dhcpd /var/lib/dhcpd/dhcpd.leases*" - rlRun "rm -f /var/named/dynamic/{db.example.zone*,db.reverse-192.168.69*}" - rlRun "cp \"$TestDir\"/{db.example.zone,db.reverse-192.168.69} /var/named/dynamic/" - rlRun "chown named:named /var/named/dynamic/{db.example.zone,db.reverse-192.168.69}" - - # - # Start Bind and dhcp - # - rlRun "ip netns exec netns-server /usr/sbin/named -u named -c /etc/named.conf" 0 "Start Bind" - rlLog "Running: (ip netns exec netns-server dhcpd -d veth0 2>&1) > $DHCPD_LOG&" - (ip netns exec netns-server dhcpd -d veth0 2>&1) > $DHCPD_LOG& - DHCPD_PID=$! - - # - # Test whether Bind and dhcp are up - # - rlRun "sleep 5" 0 "Sleeping for 5s to let Bind and dhcpd start up" - BIND_PID=`cat /var/run/named/named.pid` - rlRun "test -e /proc/$BIND_PID" 0 "Is Bind running?" - rlRun "test -e /proc/$DHCPD_PID" 0 "Is dhcpd running?" - - # - # Try to update hostname 2 times - # - for TestHostname in test-hostname another-one; - do - - # - # Run dhclient - # - rlLog "\n\n---------- Testing ddns-update-style=$DDNSUpdateStyle for host-name=$TestHostname ----------\n" - rlLog "Running: (ip netns exec netns-client dhclient -nw -lf /var/lib/dhclient/client1.leases -pf /var/run/dhclient1.pid -H \"$TestHostname\" veth1 -v 2>&1) > $DHCLIENT_LOG&" - (ip netns exec netns-client dhclient -nw -lf /var/lib/dhclient/client1.leases -pf /var/run/dhclient1.pid -H "$TestHostname" veth1 -v 2>&1) > $DHCLIENT_LOG& - #bash - rlRun "sleep 5" 0 "Sleeping for 5s to let dhclient obtain IP address" - [ -z "`grep ACK $DHCLIENT_LOG`" ] && rlRun "sleep 5" 0 "Sleeping for another 5s to let dhclient obtain IP address" - DHCLIENT_PID=$(cat /var/run/dhclient1.pid) - rlRun "test -e /proc/$DHCLIENT_PID" 0 "Is dhclient running?" - - # - # Test we got ip address - # - rlRun "ip -n netns-client addr list dev veth1 | grep 192.168" 0 "Did we get IP address from dhcpd?" - rlRun "ip netns exec netns-server rndc sync" 0 "Get hostname reflected in /var/named/dynamic/db.example.zone" - rlRun "sleep 5" 0 "Sleeping for 5s to let Bind sync db with .jnl files" - rlAssertGrep "$TestHostname" /var/named/dynamic/db.example.zone - rlAssertGrep "$TestHostname" /var/named/dynamic/db.reverse-192.168.69 - #[ -z "`grep $TestHostname /var/named/dynamic/db.example.zone`" ] && bash - #[ -z "`grep $TestHostname /var/named/dynamic/db.reverse-192.168.69`" ] && bash - #bash - - rlRun "kill $DHCLIENT_PID" 0 "Terminate dhclient" - - done # for TestHostname in test-hostname another-one; - - rlRun "kill $DHCPD_PID" 0 "Terminate dhcpd" - rlRun "kill $BIND_PID" 0 "Terminate Bind" - - done # for DDNSUpdateStyle in interim standard; - - # - # Cleanup - # - rlRun "> /var/lib/dhcpd/dhcpd.leases; rm /var/lib/dhcpd/dhcpd.leases~" - rlRun "rm -f /var/named/dynamic/{db.example.zone*,db.reverse-192.168.69*} /etc/named/ddns.conf" 0 "Remove zone and configuration files" - rlRun "ip netns delete netns-server" 0 "Delete netns-server namespace" - rlRun "ip netns delete netns-client" 0 "Delete netns-client namespace" - rlRun "ip link set dev test-bridge down" 0 - rlRun "ip link del test-bridge" 0 - rlRun "rlFileRestore" 0 "Restore original dhcpd.conf and named.conf" - # See CHATTR NOTE at the top - #rlRun "chattr -i `readlink -f /etc/resolv.conf`" 0 "Allow writing to /etc/resolv.conf again" - rm -f /etc/dhcp/dhclient-enter-hooks - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/main.fmf b/main.fmf deleted file mode 100644 index 492fcf8..0000000 --- a/main.fmf +++ /dev/null @@ -1,12 +0,0 @@ -# QE owner -contact: Frantisek Hrdina -component: dhcp -check: - - how: avc -adjust: - - enabled: false - when: distro >= rhel-10 - continue: false - - enabled: false - when: distro >= centos-stream-10 - continue: false \ No newline at end of file diff --git a/plans/all.fmf b/plans/all.fmf deleted file mode 100644 index e1a0780..0000000 --- a/plans/all.fmf +++ /dev/null @@ -1,5 +0,0 @@ -summary: Run all tests -discover: - how: fmf -execute: - how: tmt