Bug #6965

Ramdom test failure for test_pstore_files_are_accessed_as_binary_files

Added by Hiroshi Shirosaki almost 3 years ago. Updated almost 3 years ago.

[ruby-core:47402]
Status:Closed
Priority:Normal
Assignee:Nobuyoshi Nakada
ruby -v:ruby 2.0.0dev (2012-09-01 trunk 36875) [i386-mingw32] Backport:

Description

=begin
test_pstore_files_are_accessed_as_binary_files(PStoreTest) sometime fails on ci.rubyinstaller.org.

2) Error:
test_pstore_files_are_accessed_as_binary_files(PStoreTest):
IOError: stream closed
C:/Users/Worker/Jenkins/workspace/ruby-trunk-x64-build/test/ruby/envutil.rb:60:in
read'
C:/Users/Worker/Jenkins/workspace/ruby-trunk-x64-build/test/ruby/envutil.rb:60:in
block in invoke_ruby'
C:/Users/Worker/Jenkins/workspace/ruby-trunk-x64-build/build/.ext/common/win32ole.rb:13:in
call'
C:/Users/Worker/Jenkins/workspace/ruby-trunk-x64-build/build/.ext/common/win32ole.rb:13:in
block in initialize'

This happens on both i386-mingw32 and x64-mingw32 test-all jobs:

((URL:http://ci.rubyinstaller.org/job/ruby-trunk-x86-test-all/14/console))

((URL:http://ci.rubyinstaller.org/job/ruby-trunk-x64-test-all/11/console))

This seems due to timeout(10 seconds) since the test is slow (usually over 5s) on Windows with HDD disk.

make test-all TESTS="-v test_pstore.rb"

PStoreTest#test_pstore_files_are_accessed_as_binary_files = 8.33 s = .

If other processes run in parallel, it would be possible to take time over 10s (timeout).
I confirmed same IOError: stream closed was raised on my local box by setting shorter timeout.

The reason of IOError: stream closed would be that the pipe is closed at ensure block in EnvUtil#invoke_ruby while a thread which reads from the pipe is alive.
If killing threads before closing pipe, Timeout::Error is shown.

It would be nice to know the cause of error easily if Timeout::Error was showen in the case of timeout.

And more longer timeout would be helpful not to fail this test for Windows.

I attached a patch. This increases timeout to 15s.

Luis Lavena also confirmed this patch helped when tested manually on the worker machine.
=end

fix_test_pstore.patch Magnifier (1.19 KB) Hiroshi Shirosaki, 09/03/2012 01:00 AM

Associated revisions

Revision 36900
Added by shirosaki almost 3 years ago

test_pstore.rb: fix for timeout

  • test/ruby/envutil.rb (EnvUtil#invoke_ruby): show Timeout::Error
    instead of IOError if the timeout has expired.

  • test/test_pstore.rb
    (PStoreTest#test_pstore_files_are_accessed_as_binary_files):
    increase timeout because this test is slow on Windows.
    [Bug #6965]

Revision 36900
Added by shirosaki almost 3 years ago

test_pstore.rb: fix for timeout

  • test/ruby/envutil.rb (EnvUtil#invoke_ruby): show Timeout::Error
    instead of IOError if the timeout has expired.

  • test/test_pstore.rb
    (PStoreTest#test_pstore_files_are_accessed_as_binary_files):
    increase timeout because this test is slow on Windows.
    [Bug #6965]

History

#1 Updated by Anonymous almost 3 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r36900.
Hiroshi, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


test_pstore.rb: fix for timeout

  • test/ruby/envutil.rb (EnvUtil#invoke_ruby): show Timeout::Error
    instead of IOError if the timeout has expired.

  • test/test_pstore.rb
    (PStoreTest#test_pstore_files_are_accessed_as_binary_files):
    increase timeout because this test is slow on Windows.
    [Bug #6965]

Also available in: Atom PDF