mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02: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.
0a66c518bf
93 lines
2.8 KiB
Ruby
93 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
|