[#42564] [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Makoto Kishimoto <redmine@...>

Feature #4043: =E3=82=B0=E3=83=AD=E3=83=BC=E3=83=90=E3=83=AB=E9=96=A2=E6=95=

15 messages 2010/11/11
[#42774] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/16

まつもと ゆきひろです

[#42834] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2010/12/21

きしもとです

[#42835] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/21

まつもと ゆきひろです

[#42838] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp> 2010/12/21

きしもとです

[#42845] Re: [Ruby 1.9-Feature#4043][Open] グローバル関数current_classの提案 — Yukihiro Matsumoto <matz@...> 2010/12/21

まつもと ゆきひろです

[#42577] Rubyのバグレポートのガイドライン — "Shota Fukumori (sora_h)" <sorah@...>

sora_hです。

11 messages 2010/11/15
[#42588] Re: Rubyのバグレポートのガイドライン — Yugui <yugui@...> 2010/11/18

2010/11/15 Shota Fukumori (sora_h) <sorah@tubusu.net>:

[#42638] Enumerable#categorize — Tanaka Akira <akr@...>

enumerable から hash を生成するメソッドとして

25 messages 2010/11/27
[#42643] Re: Enumerable#categorize — Yukihiro Matsumoto <matz@...> 2010/11/27

まつもと ゆきひろです

[ruby-dev:42661] (mswin32) fix port used in test/socket

From: arton <artonx@...>
Date: 2010-11-30 18:11:32 UTC
List: ruby-dev #42661
artonです。

ruby 1.9.3dev (2010-11-30) [i386-mswin32_100] で、nmake test-all を実行
すると、「常に」
 51) Error:
test_listen(TestSocketAddrinfo):
Errno::EACCES: Permission denied - bind(2)
    C:/Users/arton/Documents/ruby/src/trunkbuild/.ext/common/socket.rb:136:in `bind'
    C:/Users/arton/Documents/ruby/src/trunkbuild/.ext/common/socket.rb:136:in `listen'
    C:/Users/arton/Documents/ruby/src/rubytrunk/test/socket/test_addrinfo.rb:412:in `test_listen'
となります。
しかし、nmake test-all TESTS=socket や nmake test-all TESTS=socket/test_addrinfo.rb
では、再現しません。
で、nmake test-all では、test_addrinfo.rbを実行すると3回試した3回とも
49152 + rand(65535-49152+1)
で求めているポートが
65438 (test_bind)
58130 (test_connect_from)
62240 (test_connect_to)
49154 (test_listen) …… このポートをWin32では起動直後にScheduleサービス
                                       が利用しているのでバッティングする
の順にアサインされます。どうも、socketテストの前のいずれかのテストで乱数
のシードに固定値を入れているのが原因で、必ず同じポート番号がアサインされ
て、たまたまその中に使用中のポートがあるのが原因と思えます。
つまり、エラーとなる原因は2つあって、1つはランダムにポートがアサインされ
ないことと、49152〜49157(Windows7の場合)のような比較的若い番号は既に利
用されていることです。
というわけで、
・TestCaseの開始時に無引数のsrandを呼ぶ等して、以前のテ ストによって影響を受
けないようにする
・test_addrinfo#random_port を
  49152 + rand(65535-49152+1)ではなく 
  50000 + rand(65535-50000+1)
 のように、もっと上位のポートを使うようにする

のいずれかの対応をして欲しいです。
よろしくお願いします。

--- unit.rb~	Fri Nov 19 21:57:15 2010
+++ unit.rb	Wed Dec 01 03:03:07 2010
@@ -707,6 +707,7 @@ module MiniTest
       # Runs the tests reporting the status to +runner+
 
       def run runner
+        srand
         trap 'INFO' do
           warn '%s#%s %.2fs' % [self.class, self.__name__,
             (Time.now - runner.start_time)]

-- 
arton <artonx@yahoo.co.jp>

--------------------------------------
What is the No.1 drama, music and car of 2010 ?
    - Yahoo! JAPAN  Net BANZUKE 2010 -
http://pr.mail.yahoo.co.jp/banzuke/

In This Thread

Prev Next