From 8bcfb63c4baf0d16fabb925fbfe7027bebfffbe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Hrdina?= Date: Tue, 21 Oct 2025 12:17:00 +0200 Subject: [PATCH] Public tests moved to centos-stream tests repositories --- .fmf/version | 1 - COMMITMENT | 46 --- LICENSE | 339 ------------------ README.md | 4 +- .../selinux-prevents-termination/main.fmf | 19 - .../selinux-prevents-termination/runtest.sh | 78 ---- Sanity/ipv4-tests/dhcpcd-domain-dns.conf | 20 -- Sanity/ipv4-tests/dhcpcd-mtu.conf | 20 -- Sanity/ipv4-tests/dhcpcd-tests.py | 222 ------------ Sanity/ipv4-tests/dhcpcd-vendorclass.conf | 9 - Sanity/ipv4-tests/dnsmasq-ipv4.conf | 15 - Sanity/ipv4-tests/dnsmasq-mtu.conf | 18 - Sanity/ipv4-tests/dnsmasq-vendorclass.conf | 6 - Sanity/ipv4-tests/main.fmf | 25 -- Sanity/ipv4-tests/tcpdumpd.service | 10 - Sanity/ipv4-tests/test.sh | 66 ---- Sanity/ipv6-tests/dhcp6s.conf | 20 -- Sanity/ipv6-tests/dhcpcd-test.conf | 8 - Sanity/ipv6-tests/dhcpcd-tests.py | 196 ---------- Sanity/ipv6-tests/main.fmf | 31 -- Sanity/ipv6-tests/radvd-ci.conf | 9 - Sanity/ipv6-tests/test.sh | 60 ---- main.fmf | 4 - plans/all.fmf | 5 - plans/others.fmf | 20 -- plans/tier1.fmf | 25 -- plans/tier2-tier3.fmf | 20 -- 27 files changed, 1 insertion(+), 1295 deletions(-) delete mode 100644 .fmf/version delete mode 100644 COMMITMENT delete mode 100644 LICENSE delete mode 100644 Regression/selinux-prevents-termination/main.fmf delete mode 100755 Regression/selinux-prevents-termination/runtest.sh delete mode 100644 Sanity/ipv4-tests/dhcpcd-domain-dns.conf delete mode 100644 Sanity/ipv4-tests/dhcpcd-mtu.conf delete mode 100755 Sanity/ipv4-tests/dhcpcd-tests.py delete mode 100644 Sanity/ipv4-tests/dhcpcd-vendorclass.conf delete mode 100644 Sanity/ipv4-tests/dnsmasq-ipv4.conf delete mode 100644 Sanity/ipv4-tests/dnsmasq-mtu.conf delete mode 100644 Sanity/ipv4-tests/dnsmasq-vendorclass.conf delete mode 100644 Sanity/ipv4-tests/main.fmf delete mode 100644 Sanity/ipv4-tests/tcpdumpd.service delete mode 100755 Sanity/ipv4-tests/test.sh delete mode 100644 Sanity/ipv6-tests/dhcp6s.conf delete mode 100644 Sanity/ipv6-tests/dhcpcd-test.conf delete mode 100755 Sanity/ipv6-tests/dhcpcd-tests.py delete mode 100644 Sanity/ipv6-tests/main.fmf delete mode 100644 Sanity/ipv6-tests/radvd-ci.conf delete mode 100755 Sanity/ipv6-tests/test.sh delete mode 100644 main.fmf delete mode 100644 plans/all.fmf delete mode 100644 plans/others.fmf delete mode 100644 plans/tier1.fmf delete mode 100644 plans/tier2-tier3.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 18f3edd..bd55c47 100644 --- a/README.md +++ b/README.md @@ -1,3 +1 @@ -# dhcpcd - -Repository for dhcpcd tests \ No newline at end of file +Public tests have been moved to: https://gitlab.com/redhat/centos-stream/tests/ diff --git a/Regression/selinux-prevents-termination/main.fmf b/Regression/selinux-prevents-termination/main.fmf deleted file mode 100644 index b0f8b57..0000000 --- a/Regression/selinux-prevents-termination/main.fmf +++ /dev/null @@ -1,19 +0,0 @@ -summary: Test dhcpcd can be terminated properly (RHEL-43417) -description: '' -enabled: true -tag: - - NoRHEL4 - - NoRHEL5 - - Tier3 -tier: '1' -adjust: - - enabled: false - when: distro == rhel-4, rhel-5 - continue: false -contact: Martin Osvald -component: [] -test: ./runtest.sh -framework: beakerlib -recommend: - - dhcpcd -duration: 15m diff --git a/Regression/selinux-prevents-termination/runtest.sh b/Regression/selinux-prevents-termination/runtest.sh deleted file mode 100755 index f477977..0000000 --- a/Regression/selinux-prevents-termination/runtest.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Description: Test dhcpcd can be terminated properly (RHEL-43417) -# 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 - -PACKAGE="dhcpcd" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TestDir=\"`pwd`\"" - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "pushd $TmpDir" - rlRun "DHCPCD_LOG=`mktemp -p .`" - - # - # [veth1-br] <===> [veth1] netns client - # - # Create 1 separate network namespace - rlRun "ip netns add netns-client" - - # Create a bridge to connect the namespace - rlRun "ip link add name test-bridge type bridge" - rlRun "ip link set dev test-bridge up" - - # Create pair of virtual network devices to connect to the bridge - rlRun "ip link add name veth1 netns netns-client type veth peer name veth1-br" - rlRun "ip -n netns-client link set dev veth1 up" - rlRun "ip link set dev veth1-br up" - - # Connect the namespace to the bridge - rlRun "ip link set veth1-br master test-bridge" - - # Set up loopbacks for the namespace - rlRun "ip -n netns-client link set lo up" - rlPhaseEnd - - rlPhaseStartTest - rlLog "Running: (ip netns exec netns-client dhcpcd -B -M --nohook 20-resolv.conf veth1 2>&1) > $DHCPCD_LOG&" - (ip netns exec netns-client dhcpcd -B -M --nohook 20-resolv.conf veth1 2>&1) > $DHCPCD_LOG& - DHCPCD_PID=$! - rlRun "test -e /proc/$DHCPCD_PID" 0 "Is dhcpcd running?" - rlRun "dhcpcd -k" 0 "Terminating dhcpcd" - rlPhaseEnd - - rlPhaseStartCleanup - 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 "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/Sanity/ipv4-tests/dhcpcd-domain-dns.conf b/Sanity/ipv4-tests/dhcpcd-domain-dns.conf deleted file mode 100644 index a620283..0000000 --- a/Sanity/ipv4-tests/dhcpcd-domain-dns.conf +++ /dev/null @@ -1,20 +0,0 @@ -debug -# Inform the DHCP server of our hostname for DDNS. -hostname - -# Use the hardware address of the interface for the Client ID. -clientid - -# Persist interface configuration when dhcpcd exits. -persistent - -# A list of options to request from the DHCP server. -option domain_name_servers, domain_name, domain_search, host_name -option classless_static_routes -# Most distributions have NTP support. -option ntp_servers -# Respect the network MTU. This is applied to DHCP routes. -option interface_mtu - -# A ServerID is required by RFC2131. -require dhcp_server_identifier diff --git a/Sanity/ipv4-tests/dhcpcd-mtu.conf b/Sanity/ipv4-tests/dhcpcd-mtu.conf deleted file mode 100644 index a620283..0000000 --- a/Sanity/ipv4-tests/dhcpcd-mtu.conf +++ /dev/null @@ -1,20 +0,0 @@ -debug -# Inform the DHCP server of our hostname for DDNS. -hostname - -# Use the hardware address of the interface for the Client ID. -clientid - -# Persist interface configuration when dhcpcd exits. -persistent - -# A list of options to request from the DHCP server. -option domain_name_servers, domain_name, domain_search, host_name -option classless_static_routes -# Most distributions have NTP support. -option ntp_servers -# Respect the network MTU. This is applied to DHCP routes. -option interface_mtu - -# A ServerID is required by RFC2131. -require dhcp_server_identifier diff --git a/Sanity/ipv4-tests/dhcpcd-tests.py b/Sanity/ipv4-tests/dhcpcd-tests.py deleted file mode 100755 index 2f39292..0000000 --- a/Sanity/ipv4-tests/dhcpcd-tests.py +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-License-Identifier: LGPL-2.1+ -# ~~~ -# Description: Tests for dhcpcd - 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 psutil -import socket -from pyroute2 import IPRoute - -DHCPCD_CI_DIR="/tmp/var/run/dhcpcd-ci" -DHCPCD_LOG_FILE='/tmp/var/run/dhcpcd-ci/dhcpcd-test.log' - -DHCPCD_TCP_DUMP_FILE='/tmp/dhcpcd-tcp-dump.pcap' - -DNSMASQ_PID_FILE='/tmp/var/run/dhcpcd-ci/test-dnsmasq.pid' -DNSMASQ_LOG_FILE='/tmp/var/run/dhcpcd-ci/dnsmasq.log' - -def setUpModule(): - """Initialize the environment, and perform sanity checks on it.""" - - if shutil.which('dhcpcd') is None: - raise OSError(errno.ENOENT, 'dhcpcd 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, conf): - """Start DnsMasq""" - - conf_file=os.path.join(DHCPCD_CI_DIR, conf) - log_file=DNSMASQ_LOG_FILE + '.' + conf - - subprocess.check_output(['dnsmasq', '-8', log_file, '--log-dhcp', '--pid-file=/tmp/var/run/dhcpcd-ci/test-dnsmasq.pid', - '-C', conf_file, '-i', 'veth-peer', '-R', '-z']) - - def StartDhcpcd(self, conf): - """ Start dhcpcd """ - - conf_file=os.path.join(DHCPCD_CI_DIR, conf) - log_file=DHCPCD_LOG_FILE + '.' + conf - subprocess.check_output(['dhcpcd', '-4', '-M', '-d', '--logfile', log_file, '-f', conf_file, 'veth-test']) - - def StopDhcpcd(self, conf): - """ Stop dhcpcd """ - subprocess.check_output(['dhcpcd', '-x', '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 findTextInDaemonLogs(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 tcpdump.""" - - contents = subprocess.check_output(['tcpdump', '-vv', '-r', DHCPCD_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 tcpdump to capture dhcp packets""" - - subprocess.check_output(['systemctl','restart', 'tcpdumpd.service']) - - def StopCapturingPackets(self): - subprocess.check_output(['systemctl', 'stop', 'tcpdumpd.service']) - time.sleep(3); - -class DhcpcdTests(unittest.TestCase, GenericUtilities): - - def setUp(self): - """ setup veth and write radvd and dhcpv6configs """ - self.SetupVethInterface() - self.pid_file = subprocess.check_output(['dhcpcd', '--printpidfile']).rstrip().decode('utf-8') - - def tearDown(self): - #self.StopDhcpcd() - self.StopDaemon(self.pid_file) - self.StopDaemon(DNSMASQ_PID_FILE) - - self.TearDownVethInterface() - - def test_dhcpcd_ipv4(self): - """ dhcpcd gets address """ - - self.StartDnsMasq('dnsmasq-ipv4.conf') - time.sleep(1) - self.StartDhcpcd('dhcpcd-domain-dns.conf') - - 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*") - - def test_dhcpcd_dns_domain(self): - """ dhcpcd request DNS and domain name """ - - self.StartDnsMasq('dnsmasq-ipv4.conf') - time.sleep(1) - self.StartDhcpcd('dhcpcd-domain-dns.conf') - - 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*") - - # Dump the lease file - output=subprocess.check_output(['dhcpcd','-U', '-4', 'veth-test'], stderr=subprocess.STDOUT).rstrip().decode('utf-8') - self.assertRegex(output, 'domain_name=example-test.com') - self.assertRegex(output, 'domain_name_servers=\'?8.8.8.8 8.8.4.4\'?') - self.assertRegex(output, 'routers=192.168.1.1') - - def test_dhcpcd_mtu(self): - """ dhcpcd gets MTU 1492 """ - - self.StartDnsMasq('dnsmasq-mtu.conf') - time.sleep(1) - - self.StartDhcpcd('dhcpcd-mtu.conf') - time.sleep(5) - output=subprocess.check_output(['ip','address', 'show', 'veth-test']).rstrip().decode('utf-8') - - # Address prefix - self.assertRegex(output, "192.168.111.*") - - # Dump the lease file - output=subprocess.check_output(['dhcpcd','-U', '-4', 'veth-test'], stderr=subprocess.STDOUT).rstrip().decode('utf-8') - self.assertRegex(output, 'interface_mtu=1492') - - @unittest.skip("Known to be failing") - def test_dhcpcd_clientid_vendorclassid_userclass(self): - """ verify dhcpcd sends custom clientid vendor class id and userclass """ - - self.debug() - self.StartDnsMasq('dnsmasq-vendorclass.conf') - time.sleep(1) - - self.StartCaptureBOOTPPackets() - - self.StartDhcpcd('dhcpcd-vendorclass.conf') - time.sleep(10) - self.StopCapturingPackets() - - output=subprocess.check_output(['ip','address', 'show', 'veth-test']).rstrip().decode('utf-8') - # Address prefix - self.assertRegex(output, "192.168.111.*") - - self.findTextInDaemonLogs(DNSMASQ_LOG_FILE, vendor_class='vendor class: Zeus_dhcpcd_vendorclass_id', - user_class='user class: AAAA BBBB CCCC DDDD', - host_name='client provides name: Zeus') - self.findTextInDaemonLogs(DHCPCD_LOG_FILE, client_id='using ClientID 00:11:11:12:12:13:13:14:14:15:15:16:16') - self.FindProtocolFieldsinTCPDump(vendor='Vendor-Option Option 43, length 11: 104.101.108.108.111.32.119.111.114.108.100', - user_class='instance#1:.*AAAA BBBB CCCC DDDD", length 19', - vendor_class='Vendor-Class Option 60, length 26:.*Zeus_dhcpcd_vendorclass_id', - host_name='Hostname.*Zeus') - os.remove(DHCPCD_TCP_DUMP_FILE) - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, - verbosity=3)) diff --git a/Sanity/ipv4-tests/dhcpcd-vendorclass.conf b/Sanity/ipv4-tests/dhcpcd-vendorclass.conf deleted file mode 100644 index 51b2223..0000000 --- a/Sanity/ipv4-tests/dhcpcd-vendorclass.conf +++ /dev/null @@ -1,9 +0,0 @@ -debug -hostname Zeus -# Use custom Client ID. -clientid 00:11:11:12:12:13:13:14:14:15:15:16:16 -vendorclassid Zeus_dhcpcd_vendorclass_id -userclass "AAAA BBBB CCCC DDDD" -vendor ,"hello world" -# A ServerID is required by RFC2131. -require dhcp_server_identifier diff --git a/Sanity/ipv4-tests/dnsmasq-ipv4.conf b/Sanity/ipv4-tests/dnsmasq-ipv4.conf deleted file mode 100644 index cc912e2..0000000 --- a/Sanity/ipv4-tests/dnsmasq-ipv4.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 - -# 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/ipv4-tests/dnsmasq-mtu.conf b/Sanity/ipv4-tests/dnsmasq-mtu.conf deleted file mode 100644 index 35ce534..0000000 --- a/Sanity/ipv4-tests/dnsmasq-mtu.conf +++ /dev/null @@ -1,18 +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 - -# MTU -dhcp-option=26,1492 - -# 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/ipv4-tests/dnsmasq-vendorclass.conf b/Sanity/ipv4-tests/dnsmasq-vendorclass.conf deleted file mode 100644 index 2b2cf55..0000000 --- a/Sanity/ipv4-tests/dnsmasq-vendorclass.conf +++ /dev/null @@ -1,6 +0,0 @@ -interface=veth-peer -bind-interfaces - -# 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/ipv4-tests/main.fmf b/Sanity/ipv4-tests/main.fmf deleted file mode 100644 index 6e8bbe7..0000000 --- a/Sanity/ipv4-tests/main.fmf +++ /dev/null @@ -1,25 +0,0 @@ -summary: ipv4-tests -description: '' -contact: Petr Sklenar -component: - - dhcpcd -test: ./test.sh -framework: beakerlib -recommend: - - dhcpcd - - python3 - - python3-psutil - - python3-pyroute2 - - dnsmasq - - python-pip -duration: 15m -enabled: true -tag: - - Tier1 -tier: '1' -extra-nitrate: TC#0617596 -id: e0971651-cf08-4e3b-afcf-e31cf3a6ae80 -check: - - how: avc - result: info - diff --git a/Sanity/ipv4-tests/tcpdumpd.service b/Sanity/ipv4-tests/tcpdumpd.service deleted file mode 100644 index ec325dc..0000000 --- a/Sanity/ipv4-tests/tcpdumpd.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=TCPDumpd -After=multi-user.target network.target - -[Service] -Type=simple -ExecStart=/usr/sbin/tcpdump -i veth-peer port 67 or port 68 -vvv -w "/tmp/dhcpcd-tcp-dump.pcap" - -[Install] -WantedBy=multi-user.target diff --git a/Sanity/ipv4-tests/test.sh b/Sanity/ipv4-tests/test.sh deleted file mode 100755 index a68cfe2..0000000 --- a/Sanity/ipv4-tests/test.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: LGPL-2.1+ -# ~~~ -# runtest.sh of dhcpcd -# Description: a DHCP and DHCPv6 client. It's also an IPv4LL (aka ZeroConf) client. -# -# Author: Susant Sahani -# Copyright (c) 2018 Red Hat, Inc. -# ~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="dhcpcd" -DHCPCD_CI_DIR="/tmp/var/run/dhcpcd-ci" - -SERVICE_UNITDIR="/var/run/systemd/system" -RESOLVE_CONF="/etc/resolv.conf" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "systemctl stop firewalld" 0,5 - rlRun "setenforce 0" 0,1 - rlRun "TESTDIR=$(pwd)" - - rlFileBackup --missing-ok "$RESOLVE_CONF" - - rlRun "[ -e /sys/class/net/veth-test ] && ip link del veth-test" 0,1 - - rlLog "Create work dir ..." - rlRun "mkdir -p $DHCPCD_CI_DIR" - chcon -t dhcpc_var_run_t $DHCPCD_CI_DIR - rlRun "cp *.conf $DHCPCD_CI_DIR" - - rlRun "cp tcpdumpd.service $SERVICE_UNITDIR" - cp dhcpcd-tests.py /usr/local/sbin/ - - rlRun "systemctl daemon-reload" - rlPhaseEnd - - rlPhaseStartTest - rlLog "Starting dhcpcd tests ..." - rpm -q python3-pyroute2 || pip install pyroute2 - rlRun "/usr/bin/python3 ${TESTDIR}/dhcpcd-tests.py" - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "[ -e /sys/class/net/veth-test ] && ip link del veth-test" 0,1 - - rlFileRestore - - rlLog "remove work dir" - rlBundleLogs dhcpcd-ci ${DHCPCD_CI_DIR}/*log* - rlRun "rm -rf $DHCPCD_CI_DIR" - - rlRun "rm $SERVICE_UNITDIR/tcpdumpd.service" - rlRun "systemctl daemon-reload" - - rlRun "setenforce 1" 0,1 - rlLog "dhcpcd tests done" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd - -rlGetTestState diff --git a/Sanity/ipv6-tests/dhcp6s.conf b/Sanity/ipv6-tests/dhcp6s.conf deleted file mode 100644 index a2b42fe..0000000 --- a/Sanity/ipv6-tests/dhcp6s.conf +++ /dev/null @@ -1,20 +0,0 @@ -option domain-name-servers 2001:888:0db8:1::a 2001:888:db8:1::d; -option domain-name "test.com"; - -host zeus { - duid 00:01:00:01:22:8a:88:26:08:00:27:87:00:7e; - address 2001:888:db8:1::b infinity; -}; - -host test { - duid 00:01:00:01:22:8d:cb:58:0a:00:27:00:00:00; - address 2001:888:db8:1::c infinity; -}; - -interface veth-peer { - address-pool pool1 10; -}; - -pool pool1 { - range 2001:888:0db8:1::1000 to 2001:888:0db8:1::2000; -}; diff --git a/Sanity/ipv6-tests/dhcpcd-test.conf b/Sanity/ipv6-tests/dhcpcd-test.conf deleted file mode 100644 index 272a0ce..0000000 --- a/Sanity/ipv6-tests/dhcpcd-test.conf +++ /dev/null @@ -1,8 +0,0 @@ -debug -interface veth-test -# Inform the DHCP server of our hostname for DDNS. -hostname -dhcp6 -ipv6only -# Persist interface configuration when dhcpcd exits. -persistent diff --git a/Sanity/ipv6-tests/dhcpcd-tests.py b/Sanity/ipv6-tests/dhcpcd-tests.py deleted file mode 100755 index e24871e..0000000 --- a/Sanity/ipv6-tests/dhcpcd-tests.py +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env python3 -# SPDX-License-Identifier: LGPL-2.1+ -# ~~~ -# Description: DHCPv6 Tests for dhcpcd - 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 psutil -import socket -from pyroute2 import IPRoute - -DHCPCD_CI_DIR="/var/run/dhcpcd-ci" -DHCPCD_LOG_FILE='/var/run/dhcpcd-ci/dhcpcd-test.log' -DHCPCD_CONF_FILE='/var/run/dhcpcd-ci/dhcpcd-test.conf' - -DHCPCD_PID_FILE='/var/run/dhcpcd.pid' -DHCPCD_DUID_FILE='/etc/dhcpcd.duid' - -RADVD_LOG_FILE ='/var/run/dhcpcd-ci/radvd.log' -RADVD_CONFIG_FILE ='/var/run/dhcpcd-ci/radvd-ci.conf' -RADVD_PID_FILE='/var/run/dhcpcd-ci/radvd.pid' - -DHCP6S_CONFIG_FILE='/var/run/dhcpcd-ci/dhcp6s.conf' -DHCP6S_PID_FILE='/var/run/dhcp6s.pid' - -RESOLVE_CONF='/etc/resolv.conf' - -def setUpModule(): - """Initialize the environment, and perform sanity checks on it.""" - - for tool in ['dhcpcd', 'dhcp6s', 'radvd']: - if shutil.which(tool) is None: - raise OSError(errno.ENOENT, tool+' not found') - -def tearDownModule(): - pass - -class GenericUtilities(): - """Provide a set of utility functions start stop daemons. write config files etc """ - - def StartDhcp6s(self): - """Start dhcp6s""" - - subprocess.check_output(['dhcp6s', '-c', DHCP6S_CONFIG_FILE, 'veth-peer', '-dD']) - - def StartRadvd(self): - """Start radvd""" - - subprocess.check_output(['radvd', '-d5', '-C', RADVD_CONFIG_FILE, '-p', RADVD_PID_FILE, '-l', RADVD_LOG_FILE]) - - def StartDhcpcd(self): - subprocess.check_output(['dhcpcd', '-6', '-M', '-d', '--logfile', DHCPCD_LOG_FILE, '-f', DHCPCD_CONF_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 StopDaemonOptional(self, pid_file): - try: - self.StopDaemon(pid_file) - except FileNotFoundError: - pass - - def WriteConfigFile(self, path, contents): - """Write a config file, and queue it to be removed.""" - - with open(path, 'w') as unit: - unit.write(contents) - - self.addCleanup(os.remove, path) - - def findTextInDaemonLogs(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 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() - -class DhcpcdTests(unittest.TestCase, GenericUtilities): - - def setUp(self): - """ setup veth and write radvd and dhcpv6configs """ - self.pid_file = subprocess.check_output(['dhcpcd', '--printpidfile']).rstrip().decode('utf-8') - self.SetupVethInterface() - - def tearDown(self): - self.StopDaemon(self.pid_file) - self.StopDaemonOptional(RADVD_PID_FILE) - self.StopDaemonOptional(DHCP6S_PID_FILE) - - self.TearDownVethInterface() - - def test_dhcp6s_gets_rdnss_dnssl(self): - """ DHCP6c gets the RDNSS DNSSL """ - - self.StartDhcp6s() - self.StartRadvd() - - time.sleep(1) - - self.WriteConfigFile(DHCPCD_DUID_FILE, '''00:01:00:01:22:8a:88:26:08:00:27:87:00:7e\n''') - - self.StartDhcpcd() - - time.sleep(10) - output=subprocess.check_output(['ip','address', 'show', 'veth-test']).rstrip().decode('utf-8') - - # Address prefix - self.assertRegex(output, "2001:888:db8:1::b") - self.findTextInDaemonLogs(RESOLVE_CONF, - dns1='2001:888:db8:1::a', - dns2='2001:888:db8:1::d', - search='test.com') - - def test_dhcp6s_assigns_static_address_using_duid2(self): - """ DHCP6c gets the (static) addresses to hosts using known DUID value 00:01:00:01:22:8d:cb:58:0a:00:27:00:00:00 """ - - self.StartDhcp6s() - self.StartRadvd() - - time.sleep(1) - - self.WriteConfigFile(DHCPCD_DUID_FILE, '''00:01:00:01:22:8d:cb:58:0a:00:27:00:00:00\n''') - - self.StartDhcpcd() - time.sleep(10) - output=subprocess.check_output(['ip','address', 'show', 'veth-test']).rstrip().decode('utf-8') - - # Address - self.assertRegex(output, "2001:888:db8:1::c") - self.findTextInDaemonLogs(RESOLVE_CONF, - dns='2001:888:db8:1::a', - search='test.com') - - def test_dhcp6s_assigns_static_address_using_duid1(self): - """ DHCP6c gets the (static) addresses to hosts using known DUID value 00:01:00:01:22:8a:88:26:08:00:27:87:00:7e """ - - self.StartDhcp6s() - self.StartRadvd() - - time.sleep(1) - - self.WriteConfigFile(DHCPCD_DUID_FILE, '''00:01:00:01:22:8a:88:26:08:00:27:87:00:7e\n''') - - self.StartDhcpcd() - time.sleep(10) - output=subprocess.check_output(['ip','address', 'show', 'veth-test']).rstrip().decode('utf-8') - - # Address prefix - self.assertRegex(output, "2001:888:db8:1::b") - self.findTextInDaemonLogs(RESOLVE_CONF, - dns='2001:888:db8:1::a', - search='test.com') - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, - verbosity=3)) diff --git a/Sanity/ipv6-tests/main.fmf b/Sanity/ipv6-tests/main.fmf deleted file mode 100644 index 57c173c..0000000 --- a/Sanity/ipv6-tests/main.fmf +++ /dev/null @@ -1,31 +0,0 @@ -summary: ipv6-tests -description: '' -contact: Petr Sklenar -component: - - dhcpcd -test: ./test.sh -framework: beakerlib -recommend: - - dhcpcd - - python3 - - python3-psutil - - python3-pyroute2 - - dnsmasq - - dhcp6s - - radvd - - python3-pip - - python-pip -duration: 15m -enabled: true -tag: - - Tier1 -#tier: '1' -adjust: - - enabled: false - when: distro == rhel - continue: false - - enabled: false - when: distro == centos-stream - continue: false -extra-nitrate: TC#0617597 -id: 2565c26f-492b-40d0-b795-16c2fcb9e435 diff --git a/Sanity/ipv6-tests/radvd-ci.conf b/Sanity/ipv6-tests/radvd-ci.conf deleted file mode 100644 index cdd18de..0000000 --- a/Sanity/ipv6-tests/radvd-ci.conf +++ /dev/null @@ -1,9 +0,0 @@ -interface veth-peer -{ - AdvSendAdvert on; - AdvManagedFlag on; - AdvOtherConfigFlag on; - prefix 2001:888:0db8:1::/64 { - AdvAutonomous off; - }; -}; diff --git a/Sanity/ipv6-tests/test.sh b/Sanity/ipv6-tests/test.sh deleted file mode 100755 index e48fd95..0000000 --- a/Sanity/ipv6-tests/test.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: LGPL-2.1+ -# ~~~ -# runtest.sh of dhcpcd -# Description: a DHCP and DHCPv6 client. It's also an IPv4LL (aka ZeroConf) client. -# -# Author: Susant Sahani -# Copyright (c) 2018 Red Hat, Inc. -# ~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="dhcpcd" - -DHCPCD_CI_DIR="/var/run/dhcpcd-ci" -DHCPCD_DUID_FILE="/etc/dhcpcd.duid" - -RESOLVE_CONF="/etc/resolv.conf" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - - rlRun "systemctl stop firewalld" 0,5 - rlRun "setenforce 0" 0,1 - - rlFileBackup "$RESOLVE_CONF" - rlFileBackup "$DHCPCD_DUID_FILE" - rlRun "[ -e /sys/class/net/veth-test ] && ip link del veth-test" 0,1 - rlRun "TESTDIR=$(pwd)" - - rlLog "Create work dir ..." - rlRun "mkdir -p $DHCPCD_CI_DIR" - rlRun "cp *.conf $DHCPCD_CI_DIR" - rlPhaseEnd - - rlPhaseStartTest - rpm -q python3-pyroute2 || pip install pyroute2 - rlLog "Starting dhcpcd tests ..." - rlRun "/usr/bin/python3 ${TESTDIR}/dhcpcd-tests.py" - bash - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "[ -e /sys/class/net/veth-test ] && ip link del veth-test" 0,1 - - rlFileRestore - - rlBundleLogs dhcpcd-ci ${DHCPCD_CI_DIR}/*log* - rlLog "remove work dir" - #rlRun "rm -rf $DHCPCD_CI_DIR" - - rlRun "setenforce 1" 0,1 - rlLog "dhcpcd tests done" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd - -rlGetTestState diff --git a/main.fmf b/main.fmf deleted file mode 100644 index ac832bd..0000000 --- a/main.fmf +++ /dev/null @@ -1,4 +0,0 @@ -# QE owner -contact: Frantisek Hrdina -check: - - how: avc 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 diff --git a/plans/others.fmf b/plans/others.fmf deleted file mode 100644 index 1089333..0000000 --- a/plans/others.fmf +++ /dev/null @@ -1,20 +0,0 @@ -/public: - summary: Public other tests - discover: - how: fmf - filter: 'tier: -1 & tier: -2 & tier: -3 & tag: -multihost' - url: "https://src.fedoraproject.org/tests/dhcpcd.git" - execute: - how: tmt - -/internal: - summary: Internal other tests - discover: - how: fmf - filter: 'tier: -1 & tier: -2 & tier: -3 & tag: -multihost' - url: git://pkgs.devel.redhat.com/tests/dhcpcd - adjust: - enabled: false - when: distro == centos-stream or distro == fedora - execute: - how: tmt \ No newline at end of file diff --git a/plans/tier1.fmf b/plans/tier1.fmf deleted file mode 100644 index 76715da..0000000 --- a/plans/tier1.fmf +++ /dev/null @@ -1,25 +0,0 @@ -/public: - summary: Public Tier1 tests - discover: - - name: dhcpcd - how: fmf - filter: 'tier: 1' - url: "https://src.fedoraproject.org/tests/dhcpcd.git" - - name: kea - how: fmf - filter: 'name: /Sanity/start-stop' - url: "https://src.fedoraproject.org/tests/kea.git" - execute: - how: tmt - -/internal: - summary: Internal Tier1 tests - discover: - how: fmf - filter: 'tier: 1' - url: https://gitlab.com/redhat/rhel/tests/dhcpcd - adjust: - enabled: false - when: distro == centos-stream or distro == fedora - execute: - how: tmt diff --git a/plans/tier2-tier3.fmf b/plans/tier2-tier3.fmf deleted file mode 100644 index ba48c5c..0000000 --- a/plans/tier2-tier3.fmf +++ /dev/null @@ -1,20 +0,0 @@ -/public: - summary: Public Tier2 and Tier3 tests - discover: - how: fmf - filter: 'tier: 2 | tier: 3' - url: "https://src.fedoraproject.org/tests/dhcpcd.git" - execute: - how: tmt - -/internal: - summary: Internal Tier2 and Tier3 tests - discover: - how: fmf - filter: 'tier: 2 | tier: 3' - url: git://pkgs.devel.redhat.com/tests/dhcpcd - adjust: - enabled: false - when: distro == centos-stream or distro == fedora - execute: - how: tmt