mirror of
https://github.com/ruby/ruby.git
synced 2026-01-27 12:34:21 +00:00
RUBY_TEST_TIMEOUT_SCALE is set for debug builds because they are slower to run. We should respect this environment variable in MMTk tests too. https://github.com/ruby/mmtk/commit/0a66c518bf
94 lines
2.8 KiB
Ruby
94 lines
2.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "helper"
|
|
|
|
module MMTk
|
|
class TestConfiguration < TestCase
|
|
def test_MMTK_THREADS
|
|
assert_separately([{ "MMTK_THREADS" => "5" }], <<~RUBY)
|
|
assert_equal(5, GC.config[:mmtk_worker_count])
|
|
RUBY
|
|
|
|
assert_separately([{ "MMTK_THREADS" => "1" }], <<~RUBY)
|
|
assert_equal(1, GC.config[:mmtk_worker_count])
|
|
RUBY
|
|
end
|
|
|
|
%w(NoGC MarkSweep Immix).each do |plan|
|
|
define_method(:"test_MMTK_PLAN_#{plan}") do
|
|
assert_separately([{ "MMTK_PLAN" => plan }], <<~RUBY)
|
|
assert_equal("#{plan}", GC.config[:mmtk_plan])
|
|
RUBY
|
|
end
|
|
end
|
|
|
|
%w(fixed dynamic).each do |heap|
|
|
define_method(:"test_MMTK_HEAP_MODE_#{heap}") do
|
|
assert_separately([{ "MMTK_HEAP_MODE" => heap }], <<~RUBY)
|
|
assert_equal("#{heap}", GC.config[:mmtk_heap_mode])
|
|
RUBY
|
|
end
|
|
end
|
|
|
|
def test_MMTK_HEAP_MIN
|
|
# Defaults to 1MiB
|
|
assert_separately([], <<~RUBY)
|
|
assert_equal(1 * 1024 * 1024, GC.config[:mmtk_heap_min])
|
|
RUBY
|
|
|
|
assert_separately([{ "MMTK_HEAP_MODE" => "dynamic", "MMTK_HEAP_MIN" => "1" }], <<~RUBY)
|
|
assert_equal(1, GC.config[:mmtk_heap_min])
|
|
RUBY
|
|
|
|
assert_separately([{ "MMTK_HEAP_MODE" => "dynamic", "MMTK_HEAP_MIN" => "10MiB", "MMTK_HEAP_MAX" => "1GiB" }], <<~RUBY)
|
|
assert_equal(10 * 1024 * 1024, GC.config[:mmtk_heap_min])
|
|
RUBY
|
|
end
|
|
|
|
def test_MMTK_HEAP_MIN_is_ignored_for_fixed_heaps
|
|
assert_separately([{ "MMTK_HEAP_MODE" => "fixed", "MMTK_HEAP_MIN" => "1" }], <<~RUBY)
|
|
assert_nil(GC.config[:mmtk_heap_min])
|
|
RUBY
|
|
end
|
|
|
|
def test_MMTK_HEAP_MAX
|
|
assert_separately([{ "MMTK_HEAP_MODE" => "fixed", "MMTK_HEAP_MAX" => "100MiB" }], <<~RUBY)
|
|
assert_equal(100 * 1024 * 1024, GC.config[:mmtk_heap_max])
|
|
RUBY
|
|
end
|
|
|
|
%w(MMTK_THREADS MMTK_HEAP_MIN MMTK_HEAP_MAX MMTK_HEAP_MODE MMTK_PLAN).each do |var|
|
|
define_method(:"test_invalid_#{var}") do
|
|
exit_code = assert_in_out_err(
|
|
[{ var => "foobar" }, "--"],
|
|
"",
|
|
[],
|
|
["[FATAL] Invalid #{var} foobar"]
|
|
)
|
|
|
|
assert_equal(1, exit_code.exitstatus)
|
|
end
|
|
end
|
|
|
|
def test_MMTK_HEAP_MIN_greater_than_or_equal_to_MMTK_HEAP_MAX
|
|
exit_code = assert_in_out_err(
|
|
[{ "MMTK_HEAP_MIN" => "100MiB", "MMTK_HEAP_MAX" => "10MiB" }, "--"],
|
|
"",
|
|
[],
|
|
["[FATAL] MMTK_HEAP_MIN(104857600) >= MMTK_HEAP_MAX(10485760)"]
|
|
)
|
|
|
|
assert_equal(1, exit_code.exitstatus)
|
|
|
|
exit_code = assert_in_out_err(
|
|
[{ "MMTK_HEAP_MIN" => "10MiB", "MMTK_HEAP_MAX" => "10MiB" }, "--"],
|
|
"",
|
|
[],
|
|
["[FATAL] MMTK_HEAP_MIN(10485760) >= MMTK_HEAP_MAX(10485760)"]
|
|
)
|
|
|
|
assert_equal(1, exit_code.exitstatus)
|
|
end
|
|
end
|
|
end
|