-
Notifications
You must be signed in to change notification settings - Fork 307
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
MultiCallbackTest.test_easy_pause_unpause fails on macOS #729
Comments
Failure is documented at: pycurl#729
In those macOs builds I did some testing just in libcurl and it seems libcurl's Regardless, pycurl makes no difference between platforms here, so I can't say why it consistently works on Linux yet consistently fails on macOS. Fortunately this particular callback invocation isn't that crucial since libcurl is still pausing the transfer internally. The impact on downstream applications is that socket polling gets no performance benefit from pausing a transfer because the application isn't told that the associated sockets should be removed from its polling list. Can you comment out that assert line and see if the rest of the test passes? That would tell us if at least unpausing works on macOS. On Linux unpausing always invokes timer callback as expected. |
Thanks for the analysis. Yes, the rest of the test passes if I comment out that one assert. |
FYI, one other random thing I wanted to mention: when I was running the tests locally on Windows, a bunch of the multi-callback tests were failing initially - I was running on a VM with a single core. When I added a second core to the VM, all of the tests passed. I don't think that's relevant here as my Mac and the GitHub Macs both have multiple cores, but just wanted to mention it. |
libcurl isn't invoking socket callback on macOS (issue pycurl#729)
Thanks for the info, could you post the output from those tests? If more that just the pause test was failing then it might be something else. The mock event loops in these tests assume a very simple transfer, maybe the bottle server behaves differently on different platforms. Replacing those mock event loops with asyncio might introduce another can of worms. I'm now thinking how to make this simple enough for the purpose of the tests and flexible enough for the unexpected differences between platforms. |
These are the tests that fail on Windows 10 on a single-core VM:
|
Seems like a problem with the mock event loop, otherwise |
|
Thanks again, looks like the event loop was indeed the main issue on Windows.
That's the strangest one yet. What's most important is that there are no runtime warnings in any of these failures. The problem so far is just with the tests themselves not forcing libcurl to invoke the callbacks across different platforms. IMO your CI changes (#725 and #726) can be accepted without passing these callback tests. I'll also have easier time fine-tuning these tests to different platforms if Windows and macOS CI is already in place. |
Sounds good. Hopefully, @p will find some time soon to review and merge them. |
Hey @fsbs, I thought your latest PR #731 had resolved all these issues, but it seems there are now some failures, see CI results:
|
Note: I added more xfails to the multi-callback tests so that the mac tests will show a green board for now. |
Actually it doesn’t. These are build logs from the test suite failing on openSUSE/Tumbleweed while building the official package for python-pycurl. |
https://build.opensuse.org/request/show/1117519 by user mcepl + anag+factory - Skip test_multi_socket_select (gh#pycurl/pycurl#819), test_multi_socket_action (gh#pycurl/pycurl#729), and test_request_with_verifypeer (gh#pycurl/pycurl#822).
https://build.opensuse.org/request/show/1117519 by user mcepl + anag+factory - Skip test_multi_socket_select (gh#pycurl/pycurl#819), test_multi_socket_action (gh#pycurl/pycurl#729), and test_request_with_verifypeer (gh#pycurl/pycurl#822).
I see the following failure on OpenIndiana (sunos) with
|
I also see this likely related failure:
|
There is also one more (and the last one) pause related test failure here:
|
MultiCallbackTest.test_easy_pause_unpause fails on macOS. It's unclear whether this is a bug with the test or with the pause/unpause code itself. This is on macOS 12.1 with Secure Transport backend.
CC: @fsbs
The text was updated successfully, but these errors were encountered: