Skip to content
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

test failures on 32-bit architectures with 3.7.1 #516

Closed
boutil opened this issue Nov 29, 2018 · 24 comments
Closed

test failures on 32-bit architectures with 3.7.1 #516

boutil opened this issue Nov 29, 2018 · 24 comments

Comments

@boutil
Copy link

boutil commented Nov 29, 2018

Hi,

When uploading the version 3.7.1 to Debian, it was noticed that a test failure occurs on 32-bit architectures:

  1) Error:
Juice#test_time_neg:
ArgumentError: time out of system range
    /<<PKGBUILDDIR>>/test/test_various.rb:419:in `dump'
    /<<PKGBUILDDIR>>/test/test_various.rb:419:in `test_time_neg'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:98:in `block (3 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:195:in `capture_exceptions'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:95:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:265:in `time_it'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:94:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:211:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:93:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:960:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:334:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:321:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `each'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest.rb:347:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `block in __run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `map'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `__run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:136:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:63:in `block in autorun'

more details can be found in the Debian bug report:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=914546
and the list of architectures where it fails:
https://buildd.debian.org/status/package.php?p=ruby-oj&suite=sid

I would be happy to help debugging by running some code on the corresponding architectures if needed.

Cheers,

Cédric

@ohler55
Copy link
Owner

ohler55 commented Nov 29, 2018

Thanks. I'd like to take you up on the offer. I'll start a branch for 32 bit architectures and add some debugging.

@boutil
Copy link
Author

boutil commented Dec 27, 2018

Did you have a chance to make progress on this issue? Meanwhile, I will make the Debian buildbots skip the failing test.

@ohler55
Copy link
Owner

ohler55 commented Dec 28, 2018

I creates a debian branch and wanted to take you up on your offer of help.

@boutil
Copy link
Author

boutil commented Dec 28, 2018

From what I can see, the latest commit on the debian branch in the repo dates from august.
Let me know when you want me to run some tests.

@ohler55
Copy link
Owner

ohler55 commented Dec 28, 2018

Okay, I removed the old debian branch and created a new one. If you can run one and send the output I'll keep modifying until we get rid of the errors.

@boutil
Copy link
Author

boutil commented Dec 28, 2018

I realize just now that the failing test is exactly the one we debugged already in august. I apologize if I delayed unnecessarily the process by not running the existing code.
This is the output on an i386 machine for the whole test suite, as run in the package build process.

-------- running test/tests.rb test -------
Run options: --seed 9816

# Running:

.............................................E.....................................................................................................................{}
.................................................................................................................................................................................................................................................................................................................

Finished in 0.165964s, 2819.8914 runs/s, 5266.2075 assertions/s.

  1) Error:
Juice#test_time_neg:
ArgumentError: time out of system range
    /home/boutil/oj/test/test_various.rb:419:in `dump'
    /home/boutil/oj/test/test_various.rb:419:in `test_time_neg'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:98:in `block (3 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:195:in `capture_exceptions'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:95:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:265:in `time_it'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:94:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:211:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:93:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:960:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:334:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:321:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `each'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest.rb:347:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `block in __run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `map'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `__run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:136:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:63:in `block in autorun'

468 runs, 874 assertions, 0 failures, 1 errors, 0 skips
E: Test test/tests.rb has failed.
-------- running test/tests_mimic.rb test -------
Loaded suite test/tests_mimic
Started
..O
===============================================================================
Omission: mimic_JSON [test_deep_const_get(JSONCommonInterfaceTest)]
/home/boutil/oj/test/json_gem/json_common_interface_test.rb:55:in `test_deep_const_get'
===============================================================================
...............................................................................

Finished in 0.163996066 seconds.
-------------------------------------------------------------------------------
82 tests, 1966 assertions, 0 failures, 0 errors, 0 pendings, 1 omissions, 0 notifications
100% passed
-------------------------------------------------------------------------------
500.01 tests/s, 11988.09 assertions/s
-------- running test/tests_mimic_addition.rb test -------
Loaded suite test/tests_mimic_addition
Started
...........
Finished in 0.005924206 seconds.
-------------------------------------------------------------------------------
11 tests, 42 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
------------------------------------------------------------------------------

And this is the output of the failing test, run alone:

ruby -I lib:ext test/test_various.rb -n test_time_neg 
Run options: -n test_time_neg --seed 46084

# Running:

E

Finished in 0.003042s, 328.6933 runs/s, 0.0000 assertions/s.

  1) Error:
Juice#test_time_neg:
ArgumentError: time out of system range
    test/test_various.rb:419:in `dump'
    test/test_various.rb:419:in `test_time_neg'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:98:in `block (3 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:195:in `capture_exceptions'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:95:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:265:in `time_it'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:94:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:211:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:93:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:960:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:334:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:321:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `each'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest.rb:347:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `block in __run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `map'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `__run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:136:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:63:in `block in autorun'

1 runs, 0 assertions, 0 failures, 1 errors, 0 skips

@ohler55
Copy link
Owner

ohler55 commented Dec 28, 2018

Thanks. I do seem to remember isolating this at one point. Oh well, I expect this will take a few rounds. I added a couple of print statements so I can trace the path the code takes. I'll be traveling today so the next iteration will have to be tonight.

@boutil
Copy link
Author

boutil commented Dec 28, 2018

Here is the output of corresponding test:

(sid_i386-dchroot)boutil@barriere:~/oj$ ruby -I lib:ext test/test_various.rb -n test_time_neg
Run options: -n test_time_neg --seed 52711

# Running:

*** has timespec
E

Finished in 0.002397s, 417.2521 runs/s, 0.0000 assertions/s.

  1) Error:
Juice#test_time_neg:
ArgumentError: time out of system range
    test/test_various.rb:419:in `dump'
    test/test_various.rb:419:in `test_time_neg'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:98:in `block (3 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:195:in `capture_exceptions'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:95:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:265:in `time_it'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:94:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:211:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:93:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:960:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:334:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:321:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `each'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest.rb:347:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `block in __run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `map'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `__run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:136:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:63:in `block in autorun'

1 runs, 0 assertions, 0 failures, 1 errors, 0 skips

@ohler55
Copy link
Owner

ohler55 commented Dec 29, 2018

Added size info to the printout. Also seeing if it passes the rb_time_timespec call.
Next step it it raises on timespec will be to try a lower resolution timeval. If that works then a check for 32 bit to get around the issue.

@boutil
Copy link
Author

boutil commented Dec 29, 2018

new output on i386:

~/oj$ ruby -I lib:ext test/test_various.rb -n test_time_neg
Run options: -n test_time_neg --seed 58395

# Running:

*** has timespec - size: 8
E

Finished in 0.003624s, 275.9433 runs/s, 0.0000 assertions/s.

  1) Error:
Juice#test_time_neg:
ArgumentError: time out of system range
    test/test_various.rb:419:in `dump'
    test/test_various.rb:419:in `test_time_neg'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:98:in `block (3 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:195:in `capture_exceptions'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:95:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:265:in `time_it'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:94:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:211:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:93:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:960:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:334:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:321:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `each'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest.rb:347:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `block in __run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `map'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `__run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:136:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:63:in `block in autorun'

1 runs, 0 assertions, 0 failures, 1 errors, 0 skips

@ohler55
Copy link
Owner

ohler55 commented Dec 29, 2018

I was afraid of that. Apparently the Ruby call rb_time_timespec() does not work with dates before 1970 on 32 bit machines. Next lets see if rb_time_timeval() works. If it does we have one more step before implementing a fix. Check to see if we can get nanoseconds another way.

@boutil
Copy link
Author

boutil commented Dec 29, 2018

I ran the whole testsuite which gives me 6 failures (because of missing nanoseconds it seems) and 1 error

Finished in 0.261529s, 1789.4766 runs/s, 3292.1781 assertions/s.

  1) Failure:
ObjectJuice#test_time_early [/home/boutil/oj/test/test_object.rb:563]:
Expected: 123456788
  Actual: 123456000

  2) Failure:
ObjectJuice#test_time_unix_zone [/home/boutil/oj/test/test_object.rb:581]:
Expected: 123456788
  Actual: 123456000

  3) Failure:
ObjectJuice#test_time_unix_zone_12345 [/home/boutil/oj/test/test_object.rb:599]:
Expected: 123456788
  Actual: 123456000

  4) Failure:
ObjectJuice#test_time_unix_zone_utc [/home/boutil/oj/test/test_object.rb:617]:
Expected: 123456788
  Actual: 123456000

  5) Error:
Juice#test_time_neg:
ArgumentError: time out of system range
    /home/boutil/oj/test/test_various.rb:419:in `dump'
    /home/boutil/oj/test/test_various.rb:419:in `test_time_neg'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:98:in `block (3 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:195:in `capture_exceptions'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:95:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:265:in `time_it'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:94:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:211:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:93:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:960:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:334:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:321:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `each'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest.rb:347:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `block in __run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `map'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `__run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:136:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:63:in `block in autorun'

  6) Failure:
FileJuice#test_time_object [/home/boutil/oj/test/test_file.rb:225]:
Expected: 931543095
  Actual: 931543000

  7) Failure:
CustomJuice#test_time [/home/boutil/oj/test/test_custom.rb:387]:
No visible difference in the Time#inspect output.
You should look at the implementation of #== on Time or its members.
2018-12-29 22:58:41 +0100

468 runs, 861 assertions, 6 failures, 1 errors, 0 skip

and the error in test:

$ ruby -I lib:ext test/test_various.rb -n test_time_neg
Run options: -n test_time_neg --seed 21420

# Running:

*** has timespec - size: 8
E

Finished in 0.002481s, 403.0786 runs/s, 0.0000 assertions/s.

  1) Error:
Juice#test_time_neg:
ArgumentError: time out of system range
    test/test_various.rb:419:in `dump'
    test/test_various.rb:419:in `test_time_neg'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:98:in `block (3 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:195:in `capture_exceptions'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:95:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:265:in `time_it'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:94:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:211:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:93:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:960:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:334:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:321:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `each'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest.rb:347:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `block in __run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `map'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `__run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:136:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:63:in `block in autorun'

1 runs, 0 assertions, 0 failures, 1 errors, 0 skips

@ohler55
Copy link
Owner

ohler55 commented Dec 29, 2018

Worse than I expected. rb_time_timeval() has the same bug as rb_time_timespec(). Resorting to an alternate approach.

@boutil
Copy link
Author

boutil commented Dec 29, 2018

running just the test_time_neg:

Run options: -n test_time_neg --seed 48801

# Running:

*** has timespec - size: 8
E

Finished in 0.003806s, 262.7357 runs/s, 0.0000 assertions/s.

  1) Error:
Juice#test_time_neg:
ArgumentError: time out of system range
    test/test_various.rb:419:in `dump'
    test/test_various.rb:419:in `test_time_neg'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:98:in `block (3 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:195:in `capture_exceptions'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:95:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:265:in `time_it'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:94:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:211:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:93:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:960:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:334:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:321:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `each'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest.rb:347:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `block in __run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `map'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `__run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:136:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:63:in `block in autorun'

1 runs, 0 assertions, 0 failures, 1 errors, 0 skips

The whole test suite:


┌──────────────────────────────────────────────────────────────────────────────┐
│ Run tests for ruby2.5 from debian/ruby-tests.rb                              │
└──────────────────────────────────────────────────────────────────────────────┘

RUBYLIB=/home/boutil/oj/debian/ruby-oj/usr/lib/i386-linux-gnu/ruby/vendor_ruby/2.5.0:/home/boutil/oj/debian/ruby-oj/usr/lib/ruby/vendor_ruby:. GEM_PATH=debian/ruby-oj/usr/share/rubygems-integration/2.5.0:/home/boutil/.gem/ruby/2.5.0:/var/lib/gems/2.5.0:/usr/lib/i386-linux-gnu/rubygems-integration/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all ruby2.5 debian/ruby-tests.rb
-------- running test/tests.rb test ------- 
Run options: --seed 6807

# Running:

..........................................................................................................................F...............................................F....................................................................................................................................................E.............................................................F.........F................F.............F......................{}
..........*** has timespec - size: 8
*** after timespec - 4 4 - 1483629630 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1483574400 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1483574400 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1483629630 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1546126860 542889
*** has timespec - size: 8
*** after timespec - 4 4 - 1546126860 568885
*** has timespec - size: 8
*** after timespec - 4 4 - -504579600 123456
*** has timespec - size: 8
*** has timespec - size: 8
*** after timespec - 4 4 - 1420481482 123456
*** has timespec - size: 8
*** after timespec - 4 4 - 1420522627 123456
*** has timespec - size: 8
*** after timespec - 4 4 - 1420493827 123456
*** has timespec - size: 8
*** after timespec - 4 4 - -504469373 123456
.............

Finished in 0.191062s, 2449.4670 runs/s, 4506.3913 assertions/s.

  1) Failure:
CustomJuice#test_time [/home/boutil/oj/test/test_custom.rb:387]:
No visible difference in the Time#inspect output.
You should look at the implementation of #== on Time or its members.
2018-12-30 00:41:00 +0100

  2) Failure:
FileJuice#test_time_object [/home/boutil/oj/test/test_file.rb:225]:
Expected: 568885307
  Actual: 568885000

  3) Error:
Juice#test_time_neg:
ArgumentError: time out of system range
    /home/boutil/oj/test/test_various.rb:419:in `dump'
    /home/boutil/oj/test/test_various.rb:419:in `test_time_neg'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:98:in `block (3 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:195:in `capture_exceptions'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:95:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:265:in `time_it'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:94:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:211:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest/test.rb:93:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:960:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:334:in `run_one_method'
    /usr/lib/ruby/vendor_ruby/minitest.rb:321:in `block (2 levels) in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `each'
    /usr/lib/ruby/vendor_ruby/minitest.rb:320:in `block in run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:360:in `on_signal'
    /usr/lib/ruby/vendor_ruby/minitest.rb:347:in `with_info_handler'
    /usr/lib/ruby/vendor_ruby/minitest.rb:319:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `block in __run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `map'
    /usr/lib/ruby/vendor_ruby/minitest.rb:159:in `__run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:136:in `run'
    /usr/lib/ruby/vendor_ruby/minitest.rb:63:in `block in autorun'

  4) Failure:
ObjectJuice#test_time_unix_zone_12345 [/home/boutil/oj/test/test_object.rb:599]:
Expected: 123456788
  Actual: 123456000

  5) Failure:
ObjectJuice#test_time_unix_zone [/home/boutil/oj/test/test_object.rb:581]:
Expected: 123456788
  Actual: 123456000

  6) Failure:
ObjectJuice#test_time_unix_zone_utc [/home/boutil/oj/test/test_object.rb:617]:
Expected: 123456788
  Actual: 123456000

  7) Failure:
ObjectJuice#test_time_early [/home/boutil/oj/test/test_object.rb:563]:
Expected: 123456788
  Actual: 123456000

468 runs, 861 assertions, 6 failures, 1 errors, 0 skips
*** has timespec - size: 8
*** after timespec - 4 4 - 1483629630 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1483574400 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1483574400 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1483629630 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1546126860 542889
*** has timespec - size: 8
*** after timespec - 4 4 - 1546126860 568885
*** has timespec - size: 8
*** after timespec - 4 4 - -504579600 123456
*** has timespec - size: 8
*** has timespec - size: 8
*** after timespec - 4 4 - 1420481482 123456
*** has timespec - size: 8
*** after timespec - 4 4 - 1420522627 123456
*** has timespec - size: 8
*** after timespec - 4 4 - 1420493827 123456
*** has timespec - size: 8
*** after timespec - 4 4 - -504469373 123456
E: Test test/tests.rb has failed.
-------- running test/tests_mimic.rb test ------- 
*** has timespec - size: 8
*** after timespec - 4 4 - 1483629630 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1483574400 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1483574400 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1483629630 0
*** has timespec - size: 8
*** after timespec - 4 4 - 1546126860 542889
*** has timespec - size: 8
*** after timespec - 4 4 - 1546126860 568885
*** has timespec - size: 8
*** after timespec - 4 4 - -504579600 123456
*** has timespec - size: 8
*** has timespec - size: 8
*** after timespec - 4 4 - 1420481482 123456
*** has timespec - size: 8
*** after timespec - 4 4 - 1420522627 123456
*** has timespec - size: 8
*** after timespec - 4 4 - 1420493827 123456
*** has timespec - size: 8
*** after timespec - 4 4 - -504469373 123456
Loaded suite test/tests_mimic
Started
..O
===============================================================================
Omission: mimic_JSON [test_deep_const_get(JSONCommonInterfaceTest)]
/home/boutil/oj/test/json_gem/json_common_interface_test.rb:55:in `test_deep_const_get'
===============================================================================
...............................................................................

Finished in 0.158469763 seconds.
-------------------------------------------------------------------------------
82 tests, 1966 assertions, 0 failures, 0 errors, 0 pendings, 1 omissions, 0 notifications
100% passed
-------------------------------------------------------------------------------
517.45 tests/s, 12406.15 assertions/s
-------- running test/tests_mimic_addition.rb test ------- 
Loaded suite test/tests_mimic_addition
Started
...........
Finished in 0.005865574 seconds.
-------------------------------------------------------------------------------
11 tests, 42 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
-------------------------------------------------------------------------------
1875.35 tests/s, 7160.42 assertions/s

@ohler55
Copy link
Owner

ohler55 commented Dec 29, 2018

That's very odd. I had effectively commented out the code that seems to have run. I made the bypass more drastic. You only need to run the one test.

@boutil
Copy link
Author

boutil commented Dec 30, 2018

Here it is:

$ ruby -I lib:ext test/test_various.rb -n test_time_neg  
Run options: -n test_time_neg --seed 27750

# Running:

*** this is the alternative code
.

Finished in 0.002707s, 369.4786 runs/s, 369.4786 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

@ohler55
Copy link
Owner

ohler55 commented Dec 30, 2018

Excellent. I'll cleanup and gets the code setup to only use that when in 32 bit mode.

@ohler55
Copy link
Owner

ohler55 commented Dec 30, 2018

Please give the latest a try. With any luck all tests will pass.

@boutil
Copy link
Author

boutil commented Dec 30, 2018

All green:

Run options: --seed 7399

# Running:

.........................................................................................................................................................................................................................................................................................{}
...........................................................................................................................................................................................

Finished in 0.177218s, 2640.8190 runs/s, 4937.4287 assertions/s.

468 runs, 875 assertions, 0 failures, 0 errors, 0 skips
-------- running test/tests_mimic.rb test -------
Loaded suite test/tests_mimic
Started
..O
===============================================================================
Omission: mimic_JSON [test_deep_const_get(JSONCommonInterfaceTest)]
/home/boutil/oj/test/json_gem/json_common_interface_test.rb:55:in `test_deep_const_get'
===============================================================================
...............................................................................

Finished in 0.152443846 seconds.
-------------------------------------------------------------------------------
82 tests, 1966 assertions, 0 failures, 0 errors, 0 pendings, 1 omissions, 0 notifications
100% passed
-------------------------------------------------------------------------------
537.90 tests/s, 12896.55 assertions/s
-------- running test/tests_mimic_addition.rb test -------
Loaded suite test/tests_mimic_addition
Started
...........
Finished in 0.005299959 seconds.
-------------------------------------------------------------------------------
11 tests, 42 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
-------------------------------------------------------------------------------
2075.49 tests/s, 7924.59 assertions/s

┌──────────────────────────────────────────────────────────────────────────────┐
│ dh_ruby --install finished                                                   │
└──────────────────────────────────────────────────────────────────────────────┘
[...]

@ohler55
Copy link
Owner

ohler55 commented Dec 30, 2018

Release Oj 3.7.6 has the 32 bit fixes.

@boutil
Copy link
Author

boutil commented Jan 6, 2019

3.7.6 builds fine on all release architectures:
https://buildd.debian.org/status/package.php?p=ruby-oj
Only hppa is a problem because of <SystemStackError(<stack level too deep>)> raised instead of JSON::NestingError but it is unrelated issue.

@ohler55
Copy link
Owner

ohler55 commented Jan 6, 2019

So, okay to close?

@boutil
Copy link
Author

boutil commented Jan 6, 2019

yeah! Thanks!

@boutil boutil closed this as completed Jan 6, 2019
@ohler55
Copy link
Owner

ohler55 commented Jan 6, 2019

Thanks. Nice to be compatible with more platforms.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants