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 3fb3ec8..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 = 100 - print("running ",howmany,"x") - for i in range(howmany): - #print('running ', i, ' / ', howmany) - #print('.',end='') - sendPacket('emac0',10000) - - -if __name__ == '__main__': - print('some random testing ...') - main() diff --git a/Sanity/Stress/main.fmf b/Sanity/Stress/main.fmf deleted file mode 100644 index 86a9624..0000000 --- a/Sanity/Stress/main.fmf +++ /dev/null @@ -1,28 +0,0 @@ -summary: Stress test - It runs many dhcp discover packet -description: '' -enabled: true -tag: - - NoRHEL4 - - NoRHEL5 - - Tier3 -tier: '3' -adjust: - - enabled: false - when: distro == rhel-4, rhel-5 - continue: false -contact: Petr Sklenar -component: [] -test: ./runtest.sh -framework: beakerlib -recommend: - - dhcp - - dhcp - - bridge-utils - - dhcp-server - - dhcp-client - - python-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 689911f..0000000 --- a/Sanity/Stress/runtest.sh +++ /dev/null @@ -1,112 +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" - -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" - -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`" - rm -f lease.f - touch lease.f - rlRun "sleep 30" - 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& - SERVER_PID=$! - sleep 5 - rlLog "dhcps 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" - rlPhaseEnd - - sleep 5 - - rlPhaseStartTest "does dhcpd still live?" - rlLog "dhcps 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 - - -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 - 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 1468bd5..0000000 --- a/Sanity/client-ipv4-tests/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: Test if the ABI hasn't changed -description: '' -contact: Susant Sahani -component: - - dhcp-client -test: ./runtest.sh -framework: beakerlib -recommend: - - dhcp-client - - dnsmasq - - wireshark - - python3-pyroute2 -duration: 15m -extra-summary: /CoreOS/dhcpcd-client -extra-task: /CoreOS/dhcpcd-client -tier: '1' diff --git a/Sanity/client-ipv4-tests/runtest.sh b/Sanity/client-ipv4-tests/runtest.sh deleted file mode 100755 index ad522e3..0000000 --- a/Sanity/client-ipv4-tests/runtest.sh +++ /dev/null @@ -1,55 +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" -RESOLVE_CONF="/etc/resolv.conf" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - - rlRun "systemctl stop firewalld" 0,5 - rlRun "setenforce 0" 0,1 - rlFileBackup "$RESOLVE_CONF" - - 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 - rlFileRestore - 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/main.fmf b/main.fmf deleted file mode 100644 index 41e2fab..0000000 --- a/main.fmf +++ /dev/null @@ -1,2 +0,0 @@ -# QE owner -contact: Petr Sklenar 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