[前][次][番号順一覧][スレッド一覧]

ruby-changes:56113

From: Yusuke <ko1@a...>
Date: Sat, 15 Jun 2019 11:09:32 +0900 (JST)
Subject: [ruby-changes:56113] Yusuke Endoh: 5dd8fdd3f3 (trunk): test/net/imap/test_imap.rb: wait for the server thread to start

https://git.ruby-lang.org/ruby.git/commit/?id=5dd8fdd3f3

From 5dd8fdd3f328f741fae4abba00c478e8a51d2a7e Mon Sep 17 00:00:00 2001
From: Yusuke Endoh <mame@r...>
Date: Sat, 15 Jun 2019 11:06:39 +0900
Subject: test/net/imap/test_imap.rb: wait for the server thread to start

In some slow CI environments, the invocation of a thread seems very
slow.  This causes a test failure to attempt to connect a server that
does not start yet.

https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11x/ruby-master/log/20190615T002420Z.fail.html.gz
https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable11x/ruby-master/log/20190611T022407Z.fail.html.gz

diff --git a/test/net/imap/test_imap.rb b/test/net/imap/test_imap.rb
index 936f4e0..e33ab24 100644
--- a/test/net/imap/test_imap.rb
+++ b/test/net/imap/test_imap.rb
@@ -129,10 +129,19 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L129
     end
   end
 
+  def start_server
+    started = false
+    @threads << Thread.new do
+      started = true
+      yield
+    end
+    sleep 0.1 until started
+  end
+
   def test_unexpected_eof
     server = create_tcp_server
     port = server.addr[1]
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -158,7 +167,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L167
     server = create_tcp_server
     port = server.addr[1]
     requests = []
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -205,7 +214,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L214
     server = create_tcp_server
     port = server.addr[1]
     requests = []
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -268,7 +277,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L277
   def test_idle_done_not_during_idle
     server = create_tcp_server
     port = server.addr[1]
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -291,7 +300,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L300
     server = create_tcp_server
     port = server.addr[1]
     requests = []
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -347,7 +356,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L356
   def test_unexpected_bye
     server = create_tcp_server
     port = server.addr[1]
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK Gimap ready for requests from 75.101.246.151 33if2752585qyk.26\r\n")
@@ -369,7 +378,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L378
   def test_exception_during_shutdown
     server = create_tcp_server
     port = server.addr[1]
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -404,7 +413,9 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L413
     requests = []
     sock = nil
     threads = []
+    started = false
     threads << Thread.start do
+      started = true
       begin
         sock = server.accept
         sock.print("* OK test server\r\n")
@@ -415,6 +426,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L426
         server.close
       end
     end
+    sleep 0.1 until started
     threads << Thread.start do
       imap = Net::IMAP.new(server_addr, :port => port)
       begin
@@ -461,7 +473,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L473
   def test_connection_closed_without_greeting
     server = create_tcp_server
     port = server.addr[1]
-    @threads << Thread.start do
+    start_server do
       begin
         sock = server.accept
         sock.close
@@ -485,7 +497,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L497
   def test_send_invalid_number
     server = create_tcp_server
     port = server.addr[1]
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -537,7 +549,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L549
     port = server.addr[1]
     requests = []
     literal = nil
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -572,7 +584,7 @@ class IMAPTest < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L584
   def test_disconnect
     server = create_tcp_server
     port = server.addr[1]
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -608,7 +620,7 @@ hello world https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L620
 EOF
     requests = []
     received_mail = nil
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -654,7 +666,7 @@ hello world https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L666
 EOF
     requests = []
     received_mail = nil
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
@@ -698,9 +710,11 @@ EOF https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L710
       OpenSSL::X509::Certificate.new(f)
     }
     ssl_server = OpenSSL::SSL::SSLServer.new(server, ctx)
+    started = false
     ths = Thread.start do
       Thread.current.report_on_exception = false # always join-ed
       begin
+        started = true
         sock = ssl_server.accept
         begin
           sock.print("* OK test server\r\n")
@@ -713,6 +727,7 @@ EOF https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L727
       rescue Errno::EPIPE, Errno::ECONNRESET, Errno::ECONNABORTED
       end
     end
+    sleep 0.1 until started
     begin
       begin
         imap = yield(port)
@@ -729,7 +744,7 @@ EOF https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap.rb#L744
   def starttls_test
     server = create_tcp_server
     port = server.addr[1]
-    @threads << Thread.start do
+    start_server do
       sock = server.accept
       begin
         sock.print("* OK test server\r\n")
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]