-
Notifications
You must be signed in to change notification settings - Fork 3k
lwip - Add more network tests #3265
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
/morph test-nightly |
Result: FAILUREYour command has finished executing! Here's what you wrote!
Outputmbed Build Number: 1080 Build failed! |
int main() { | ||
GREENTEA_SETUP(60, "tcp_echo"); | ||
|
||
EthernetInterface eth; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we shouldn't make it Ethernet specific, WiFi would use this kind of testing as well -> or any other IP network that we may have to be fair.
I think what we should do after we unify Ethernet and WiFi to use EMAC, scrape the DEVICE_EMAC flag and introduce DEVICE_WIFI and DEVICE_ETHERNET and run the test for each present interface, which shouldn't be difficult as only the connect function would be different.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree, this test being ethernet specific is only a makeshift solution until we have a consistent way to grab network interfaces.
We could duplicate these tests for now between the tests for WiFi and Ethernet, or do you think these tests should adopt the #ifdef
checks for each interface?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's all very theoretical right now, we don't test any WiFi. Depending when we are thinking of hooking Odin in the farm it may make sense to just hold of with implementing them for wifi till we have unified networking in place.
what about cellular, 6lowpan, thread, .. are you going to support those as well? |
Not knowing anything about them (or the APIs), as long as their implement NetworkInterface they should be supported. That should be pretty much 'for free' if we get them supported in the 'built in network interface' class that would provide built in network interfaces. |
We don't currently have the testing infrastructure in place to choose interfaces with different names in a scalable manner. We are planning on sorting out how to access the network without knowing the underlying network interface, but this is currently a work in progress and won't be ready for 5.3 (This API update will be slow since we want to avoid API churn and keep any updates transparent before being landed). The goal of this pr is to get testing for at least one network interface type strongly covered and make sure the ethernet drivers are stable across all devices. Once we have a way of accessing the network generically, these tests will be moved up to cover all interfaces. Unfortunately, with the current setup, the best way to have these tests on all devices is to duplicate them for each "FEATURE". I think that duplication may be better as a separate pr to keep this pr's scope limited (there is likely to be many bug fixes attached to this pr). (unrelated morph test to avoid message spam) |
Result: FAILUREYour command has finished executing! Here's what you wrote!
Outputmbed Build Number: 1084 Build failed! |
/morph test-nightly |
Result: FAILUREYour command has finished executing! Here's what you wrote!
Outputmbed Build Number: 1085 Build failed! |
/morph test-nightly |
Result: SUCCESSYour command has finished executing! Here's what you wrote!
Outputmbed Build Number: 1088 All builds and test passed! |
@geky Is this still in progress? Let us know once completed. |
@0xc0170, This is still in progress. Successfully passing all the tests was unexpected and a result of a restricted buffer being used across all devices. Working on a more flexible solution to scale the buffers per device. I am still expecting board failures, so there's still quite a bit of work to do. |
a5e63ca
to
4db7183
Compare
Don't mind me, just giving the test bot stuff to do |
Result: FAILUREYour command has finished executing! Here's what you wrote!
OutputBuild failed! |
/morph test-nightly |
Result: ABORTEDYour command has finished executing! Here's what you wrote!
OutputBuild Prep failed! |
Local test results for K64F with GCC_ARM (This is the only board currently connected to network testing):
|
@mikaleppanen Are you aware of these? We are working towards providing more IPv6 capable testcases also. Please synch efforts. Seems that these are using green-tea, and we are using clitest. |
/morph test-nightly |
Result: FAILUREYour command has finished executing! Here's what you wrote!
|
Sorry for the lack explanation on that failure, found a bug in the CI script. It was a build error for LPC1768 devices (LPC1768, ARCH_PRO, and UBLOX_C027), the test
|
These tests could adopt the dynamically sized buffers used for the packet-pressure tests, however throughput is not an important feature of these tests.
Despite being able to buffer an arbitrary stream of data, TCP send is still limited by the available buffer space in the network stack. Errors from TCP send are perfectly reasonable and should be handled by reducing the buffer that is attempted.
@bridadan, thanks! These tests have already gotten worrisomely small, but I've decreased the buffer size again to see if it will fit. /morph test-nightly |
Result: FAILUREYour command has finished executing! Here's what you wrote!
OutputTest failed! |
|
*_packet_pressure_parallel tests are useful for checking for synchronization errors, but push the practical limitations of the network stack. Failing these tests is not unreasonable. *_packet_pressure tests are a little bit less unreasonable, but also push the practical limitations of the network stack. Hopefully these will become stable in the near future.
Currently DEVICE_EMAC is incompatible with the EthernetInterface
/morph test-nightly |
Result: SUCCESSYour command has finished executing! Here's what you wrote!
OutputAll builds and test passed! |
Better late than never, LGTM! |
Oops, sorry for the label craziness! |
Testing this on different K64F and multiple OSes (Windows, Mac), I see the case 'features-feature_lwip-tests-mbedmicro-net-udp_dtls_handshake' always fails (others are ok). The result of the above CI tests seems to be fine, but are we aware of any instabilities around UDP/DTLS handshake? If this requires further discussion, I'll happy to create an issue. |
Adds more tests over network operations. Since these tests are currently dependent on the availability of a network interface, these live in FEATURE_LWIP.
Also cleaned up the existing network tests and removed the problematic nist test.
Available network tests:
Note: Not all tests may be passing due to issues with underlying drivers. This pr is for initial review, but needs additional work before merging.
cc @bridadan, @bulislaw, @c1728p9