Files
ubicloud/prog/test.rb
Jeremy Evans e6b7e5e879 Change rubocop TargetRubyVersion to 3.4
Disable Style/RedundantLineContinuation, as it incorrectly removes
line continutations in rhizome/host/lib/vm_setup.rb that are not
redundant.

All code changes are for _1 => it in blocks.
2025-04-26 06:51:19 +09:00

128 lines
2.2 KiB
Ruby

# frozen_string_literal: true
# A no-operation prog for testing.
class Prog::Test < Prog::Base
subject_is :sshable
semaphore :test_semaphore
label def start
end
label def pusher1
pop "1" if retval
push Prog::Test, {test_level: "2"}, :pusher2
end
label def pusher2
pop frame["test_level"] if retval
push Prog::Test, {test_level: "3"}, :pusher3
end
label def pusher3
pop frame["test_level"]
end
label def synchronized
th = Thread.list.find { it.name == "clover_test" }
w = th[:clover_test_in]
th.thread_variable_set(:clover_test_out, Thread.current)
w.close
pop "done"
end
label def wait_exit
th = Thread.list.find { it.name == "clover_test" }
r = th[:clover_test_in]
r.read
pop "done"
end
label def hop_entry
hop_hop_exit
end
label def hop_exit
pop({msg: "hop finished"})
end
label def reaper
# below loop is only for ensuring we are able to process reaped strands
reap.each do |st|
st.exitval
end
donate
end
label def reap_exit_no_children
reap
pop({msg: "reap_exit_no_children"}) if leaf?
donate
end
label def napper
nap(123)
end
label def popper
pop({msg: "popped"})
end
label def invalid_hop
dynamic_hop "hop_exit"
end
label def invalid_hop_target
dynamic_hop :black_hole
end
label def budder
bud self.class, frame, :popper
hop_reaper
end
label def increment_semaphore
incr_test_semaphore
donate
end
label def decrement_semaphore
decr_test_semaphore
donate
end
label def set_expired_deadline
register_deadline("pusher2", -1)
hop_pusher1
end
label def extend_deadline
register_deadline("pusher2", 1, allow_extension: true)
hop_pusher1
end
label def set_popping_deadline1
push Prog::Test, {}, :set_popping_deadline2
end
label def set_popping_deadline_via_bud
bud Prog::Test, {}, :set_popping_deadline2
hop_reaper
end
label def set_popping_deadline2
register_deadline("pusher2", -1)
hop_popper
end
label def bad_pop
pop nil
end
label def push_subject_id
push Prog::Test, {"subject_id" => "70b633b7-1d24-4526-a47f-d2580597d53f"}
end
end
class Prog::Test2 < Prog::Test
end