Message ID | 20220823163616.1466543-1-andrew.zaborowski@intel.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | [1/3] autotests: Fix testNetconfig ACD test | expand |
Context | Check | Description |
---|---|---|
tedd_an/pre-ci_am | success | Success |
prestwoj/iwd-alpine-ci-fetch | success | Fetch PR |
prestwoj/iwd-ci-gitlint | success | GitLint |
prestwoj/iwd-ci-fetch | success | Fetch PR |
prestwoj/iwd-ci-makedistcheck | success | Make Distcheck |
prestwoj/iwd-ci-build | success | Build - Configure |
prestwoj/iwd-alpine-ci-makedistcheck | success | Make Distcheck |
prestwoj/iwd-alpine-ci-build | success | Build - Configure |
prestwoj/iwd-ci-clang | success | clang PASS |
prestwoj/iwd-ci-makecheckvalgrind | success | Make Check w/Valgrind |
prestwoj/iwd-ci-makecheck | success | Make Check |
prestwoj/iwd-alpine-ci-makecheckvalgrind | success | Make Check w/Valgrind |
prestwoj/iwd-alpine-ci-makecheck | success | Make Check |
prestwoj/iwd-ci-incremental_build | success | Incremental Build with patches |
prestwoj/iwd-alpine-ci-incremental_build | success | Incremental Build with patches |
prestwoj/iwd-ci-testrunner | success | test-runner PASS |
Hi Andrew, On 8/23/22 11:36, Andrew Zaborowski wrote: > Part of static_test.py starts a second IWD instance and tries to make > it connect to the AP with the same IP address as the first IWD instance > which is already connected, to produce an IP conflict. For this, the > second instance uses DHCP and the test expects the DHCP server to offer > the address 192.168.1.10 to it. However in the current setup the DHCP > server manages to detect that 192.168.1.10 is in use and offers .11 > instead. Break the DHCP server's conflict detection by disabling ICMP > ping replies in order to fix the test. > > Previously this has worked because the AP's and the DHCP server's > network interface is in the same network namespace as the first IWD > instance's network interface meaning that pings between the two > interfaces shouldn't work (a known Linux kernel routing quirk...). > I am not sure why those pings currently do work but take no chances and > disable ICMP pings. > --- > autotests/testNetconfig/static_test.py | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > All applied, thanks. Regards, -Denis
diff --git a/autotests/testNetconfig/static_test.py b/autotests/testNetconfig/static_test.py index 01d694ca..4ce279f2 100644 --- a/autotests/testNetconfig/static_test.py +++ b/autotests/testNetconfig/static_test.py @@ -85,11 +85,16 @@ class Test(unittest.TestCase): condition = 'not obj.connected' wd_ns0.wait_for_object_condition(ordered_network.network_object, condition) - # Connect to the same network from a dynamically configured client. The - # DHCP server doesn't know (even though dev1 announced itself) that - # 192.168.1.10 is already in use and if it assigns dev2 the lowest - # available address, that's going to be 192.168.1.10. dev1's ACD - # implementation should then stop using this address. + # Connect to the same network from a dynamically configured client. We + # block ICMP pings so that the DHCP server can't confirm that + # 192.168.1.10 is in use by dev1 and if it assigns dev2 the lowest + # available address, that's going to be 192.168.1.10. We also keep the + # second client's netdev in a separate namespace so that the kernel + # lets us assign the same IP. dev1's ACD implementation should then + # stop using this address. Yes, a quite unrealistic scenario but this + # lets us test our reaction to a conflict appearing after successful + # initial setup. + os.system("echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all") ordered_network.network_object.connect() condition = 'obj.state == DeviceState.connected'