aboutsummaryrefslogtreecommitdiffstats
path: root/test/socket
Commit message (Collapse)AuthorAgeFilesLines
* Add IO#timeout attribute and use it for blocking IO operations. (#5653)Samuel Williams2022-10-071-1/+1
|
* fixup 8cd6f2a0872e74c6cc089d2a4f8140483080c67aHiroshi SHIBATA2022-09-071-3/+1
| | | | we should handle ensure block when omit this test
* omit random failure tests with FreeBSDHiroshi SHIBATA2022-09-061-0/+2
| | | | | http://rubyci.s3.amazonaws.com/freebsd13/ruby-master/log/20220906T043002Z.fail.html.gz http://rubyci.s3.amazonaws.com/freebsd13/ruby-master/log/20220905T103002Z.fail.html.gz
* Use omit instead of skip: test/socket/**/*.rbHiroshi SHIBATA2021-12-286-11/+11
|
* Prepare for removing RubyVM::JIT (#5262)Takashi Kokubun2021-12-131-1/+1
|
* Revert "test/socket/test_socket.rb: skip on Solaris"Naohisa Goto2021-11-301-4/+0
| | | | | | | | | This reverts commit 27fb9d272daaae89089dfb61849ebe8e7aa6c833. The test failure on Solaris 10 is due to incomplete IPv6 configuration on the CI server, that have already been fixed. Reference for the fix: https://centrify.force.com/support/Article/KB-1179-X11-Forwarding-fails-with-Centrify-OpenSSH-5-0-Solaris/
* Use Test::Unit::AssertionFailedError instead of MiniTest::Assertion for ↵Hiroshi SHIBATA2021-09-062-2/+2
| | | | test-unit migration
* test/socket/test_socket.rb: skip on SolarisYusuke Endoh2021-07-291-0/+4
| | | | | | | | The test fails on Solaris 10. Maybe due to the IPv6 configuration on the server, but I have no idea at all. I've asked @ngoto to investigate the issue, so will tentatively skip the tests on Solaris http://rubyci.s3.amazonaws.com/solaris10-gcc/ruby-master/log/20210729T040002Z.fail.html.gz
* Get rid of sporadic WSAEACCES on Windows [ruby-dev:42661]Nobuyoshi Nakada2021-05-212-2/+10
|
* Get rid of sporadic WSAEACCES on Windows [ruby-dev:42661]Nobuyoshi Nakada2021-05-201-1/+6
|
* Fixed FD leaksNobuyoshi Nakada2021-03-081-1/+1
|
* added mutexes for socket and connection lists on win32Andrew Aladjev2021-02-231-0/+25
|
* Rename RubyVM::MJIT to RubyVM::JITTakashi Kokubun2021-01-131-1/+1
| | | | | | | | because the name "MJIT" is an internal code name, it's inconsistent with --jit while they are related to each other, and I want to discourage future JIT implementation-specific (e.g. MJIT-specific) APIs by this rename. [Feature #17490]
* Skip test when UDP server is no response.Hiroshi SHIBATA2021-01-131-0/+3
|
* Add connect_timeout to TCPSocketMasaki Matsushita2020-12-101-0/+6
| | | | | | Add connect_timeout to TCPSocket.new in the same way as Socket.tcp. Closes [Feature #17187]
* Revert getaddrinfo_a()Masaki Matsushita2020-12-071-10/+0
| | | | | | | | getaddrinfo_a() gets stuck after fork(). To avoid this, we need 1 second sleep to wait for internal worker threads of getaddrinfo_a() to be finished, but that is unacceptable. [Bug #17220] [Feature #17134] [Feature #17187]
* Reduce timeout of test_getaddrinfo_after_forkMasaki Matsushita2020-12-051-1/+1
|
* Guard all accesses to RubyVM::MJIT with defined?(RubyVM::MJIT) &&Benoit Daloze2020-12-041-1/+1
| | | | * Otherwise those tests, etc cannot run on alternative Ruby implementations.
* Add a hook before fork() for getaddrinfo_a()Masaki Matsushita2020-12-041-0/+10
| | | | | | | | | We need stop worker threads in getaddrinfo_a() before fork(). This change adds a hook before fork() that cancel all outstanding requests and wait for all ongoing requests. Then, it waits for all worker threads to be finished. Fixes [Bug #17220]
* Add resolve_timeout to TCPSocket [Feature #17134]Masaki Matsushita2020-09-251-0/+14
|
* Update UnixSocket#recv_io tests to handle receiving a UnixSocketJeremy Evans2020-09-221-2/+8
| | | | | | | | Receiving UnixSocket works fine if you don't provide a mode, and I think it is reasonable to expect that you should not provide a mode if klass.for_fd would not accept a mode. Fixes [Bug #11778]
* Make Socket.getaddrinfo interruptible (#2827)Kir Shatrov2020-08-271-1/+1
| | | | | | | | | | | | | | | | | | | Before, Socket.getaddrinfo was using a blocking getaddrinfo(3) call. That didn't allow to wrap it into Timeout.timeout or interrupt the thread in any way. Combined with the default 10 sec resolv timeout on many Unix systems, this can have a very noticeable effect on production Ruby apps being not resilient to DNS outages and timing out name resolution, and being unable to fail fast even with Timeout.timeout. Since we already have support for getaddrinfo_a(3), the async version of getaddrinfo, we should be able to make Socket.getaddrinfo leverage that when getaddrinfo_a version is available in the system (hence #ifdef HAVE_GETADDRINFO_A). Related tickets: https://bugs.ruby-lang.org/issues/16476 https://bugs.ruby-lang.org/issues/16381 https://bugs.ruby-lang.org/issues/14997
* test/socket/test_addrinfo.rb: Fix syntax errorYusuke Endoh2020-06-041-1/+1
| | | | Sorry!
* test/socket/test_addrinfo.rb: Suppress Errno::EACCES when addr is in useYusuke Endoh2020-06-041-1/+4
| | | | | | | | | | | | | | | | | | MinGW seems to raise Errno::EACCES instead of EADDRINUSE when bind fails due to in use. https://github.com/ruby/ruby/runs/736825846 ``` 2) Error: TestSocketAddrinfo#test_connect_from: Errno::EACCES: Permission denied - bind(2) for 0.0.0.0:49721 D:/a/ruby/ruby/build/.ext/common/socket.rb:54:in `bind' D:/a/ruby/ruby/build/.ext/common/socket.rb:54:in `connect_internal' D:/a/ruby/ruby/build/.ext/common/socket.rb:114:in `connect_from' D:/a/ruby/ruby/src/test/socket/test_addrinfo.rb:379:in `block in test_connect_from' D:/a/ruby/ruby/src/test/socket/test_addrinfo.rb:374:in `open' D:/a/ruby/ruby/src/test/socket/test_addrinfo.rb:374:in `test_connect_from' ```
* Thread scheduler for light weight concurrency.Samuel Williams2020-05-141-2/+0
|
* Fixed leaked fdsNobuyoshi Nakada2020-05-061-3/+7
|
* Test interfaces include localhostKazuhiro NISHIYAMA2019-12-061-0/+9
| | | | | When interfaces do not include localhost, some other tests may fail.
* Remove check of ai.protocolMasaki Matsushita2019-09-101-1/+0
| | | | Solaris 10 returns addrinfo.ai_protocol as 0, not 6.
* Support timeout for AddrinfoMasaki Matsushita2019-09-101-0/+5
| | | | | | | | | | | | Addrinfo.getaddrinfo and .foreach now accepts :timeout in seconds as a keyword argument. If getaddrinfo_a(3) is available, the timeout will be applied for name resolution. Otherwise, it will be ignored. Socket.tcp accepts :resolv_timeout to use this feature. This commit is retry of 6382f5cc91ac9e36776bc854632d9a1237250da7. Test was failed on Solaris machines which don't have "http" in /etc/services. In this commit, use "ssh" instead.
* Revert "Support timeout for Addrinfo"Masaki Matsushita2019-09-091-5/+0
| | | | | This reverts commit 6382f5cc91ac9e36776bc854632d9a1237250da7. test failed on Solaris.
* Fix expected ip_portMasaki Matsushita2019-09-091-1/+1
|
* Fix service name for testMasaki Matsushita2019-09-091-1/+1
| | | | change service name to fix failed test on Solaris
* Fix domain name for testMasaki Matsushita2019-09-091-1/+1
|
* Support timeout for AddrinfoMasaki Matsushita2019-09-091-0/+5
| | | | | | | | Addrinfo.getaddrinfo and .foreach now accepts :timeout in seconds as a keyword argument. If getaddrinfo_a(3) is available, the timeout will be applied for name resolution. Otherwise, it will be ignored. Socket.tcp accepts :resolv_timeout to use this feature.
* Try extending timeout of IO.selectTakashi Kokubun2019-09-031-1/+2
| | | | | hoping to stabilize: https://app.wercker.com/ruby/ruby/runs/mjit-test1/5d6df8a8a952c20008acf75b?step=5d6df90e4971a6000714c627
* Skip POINTOPOINT of IPv4 too instead of IPv6 onlyKazuhiro NISHIYAMA2019-09-021-5/+4
| | | | | | | | | Fix following error on `utun*`: ``` 1) Error: TestSocket#test_udp_server: Errno::ECONNREFUSED: Connection refused - recvmsg(2) ```
* Suppress unused variable warningsNobuyoshi Nakada2019-06-301-0/+1
|
* Removed unused variablesNobuyoshi Nakada2019-06-301-2/+2
|
* disable non-blocking pipes and sockets by defaultnormal2018-11-291-2/+2
| | | | | | | | | | | | There seems to be a compatibility problems with Rails + Rack::Deflater; so we revert this incompatibility. This effectively reverts r65922; but keeps the bugfixes to better support non-blocking sockets and pipes for future use. [Bug #15356] [Bug #14968] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66093 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io + socket: make pipes and sockets nonblocking by defaultnormal2018-11-221-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | All normal Ruby IO methods (IO#read, IO#gets, IO#write, ...) are all capable of appearing to be "blocking" when presented with a file description with the O_NONBLOCK flag set; so there is little risk of incompatibility within Ruby-using programs. The biggest compatibility risk is when spawning external programs. As a result, stdin, stdout, and stderr are now always made blocking before exec-family calls. This change will make an event-oriented MJIT usable if it is waiting on pipes on POSIX_like platforms. It is ALSO necessary to take advantage of (proposed lightweight concurrency (aka "auto-Fiber") or any similar proposal for network concurrency: https://bugs.ruby-lang.org/issues/13618 Named-pipe (FIFO) are NOT yet non-blocking by default since they are rarely-used and may introduce compatibility problems and extra syscall overhead for a common path. Please revert this commit if there are problems and if I am afk since I am afk a lot, lately. [ruby-core:89950] [Bug #14968] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tests: support Linux kernels with CONFIG_IPV6=nnormal2018-10-131-3/+7
| | | | | | | Detecting the presence of constants in C headers is insufficient, as a Linux kernel can be built with CONFIG_IPV6=n git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/socket/test_socket.rb (timestamp_retry_rw): IO.select before recvmsgnormal2018-08-201-0/+1
| | | | | | | | | CI failures are still happening from these tests, but try to break out of it earlier instead of holding up the job. [Bug #14898] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64484 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/socket/test_socket.rb (test_timestampns): retry sendnormal2018-08-021-30/+29
| | | | | | | | | | It looks like we need to retry test_timestampns in addition to test_timestamp; so share some code while we're at it. cf. http://ci.rvm.jp/results/trunk-test@frontier/1153126 [ruby-core:88104] [Bug #14898] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64157 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/socket/test_socket.rb (test_timestamp): retry sendnormal2018-07-071-4/+18
| | | | | | | | | | I theorize there can be UDP packet loss even over loopback if the kernel is under memory pressure. Retry sending periodically until recvmsg succeeds. i[ruby-core:87842] [Bug #14898] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* unixsocket.c: check NUL bytesnobu2018-03-281-0/+10
| | | | | | | * ext/socket/unixsocket.c (rsock_init_unixsock): check NUL bytes. https://hackerone.com/reports/302997 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62991 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* init.c: encode socket error messagenobu2018-01-231-0/+8
| | | | | | | | * ext/socket/init.c (rsock_raise_socket_error): on Windows, encode error messages from wide characters to the default encodings. [ruby-core:84972] [Bug #14384] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Fix test-all tests to avoid creating report_on_exception warningseregon2017-12-121-2/+4
| | | | | | | | | * The warnings are shown by Thread.report_on_exception defaulting to true. [Feature #14143] [ruby-core:83979] * Improves tests by narrowing down the scope where an exception is expected. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61188 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* socket: fix BasicSocket#*_nonblock buffering bugs from r58400normal2017-10-271-0/+21
| | | | | | | | | | | | | | | | | | | | | IO#read_nonblock and IO#write_nonblock take into account buffered data, so the Linux-only BasicSocket#read_nonblock and BasicSocket#write_nonblock methods must, too. This bug was only introduced in r58400 ("socket: avoid fcntl for read/write_nonblock on Linux") and does not affect any stable release. * ext/socket/basicsocket.c (rsock_init_basicsocket): * ext/socket/init.c (rsock_s_recvfrom_nonblock): * ext/socket/init.c (rsock_init_socket_init): * ext/socket/lib/socket.rb (def read_nonblock): * ext/socket/lib/socket.rb (def write_nonblock): * ext/socket/rubysocket.h (static inline void rsock_maybe_wait_fd): * test/socket/test_basicsocket.rb (def test_read_write_nonblock): [Feature #13362] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* socket.c: null byte at Socket.getnameinfonobu2017-10-111-0/+2
| | | | | | | | * ext/socket/socket.c (sock_s_getnameinfo): check null byte. patched by tommy (Masahiro Tomita) in [ruby-dev:50286]. [Bug #13994] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60162 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Remove unnecessary `require 'thread'`kazu2017-10-081-1/+0
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60139 b2dd03c8-39d4-4d8f-98ff-823fe69b080e