88require 'json'
99
1010describe OpenTelemetry ::SDK ::Metrics ::ForkHooks do
11- def fork_with_fork_hooks ( before_fork_lambda , after_fork_lambda )
11+ def fork_with_fork_hooks ( after_fork_lambda )
1212 with_pipe do |inner_read_io , inner_write_io |
1313 child_pid = fork do # fork twice to avoid prepending fork in the parent process
14- setup_fork_hooks ( before_fork_lambda , after_fork_lambda ) do
14+ setup_fork_hooks ( after_fork_lambda ) do
1515 grandchild_pid = fork { }
1616 Timeout . timeout ( 5 ) { Process . waitpid ( grandchild_pid ) }
1717 message = { 'child_pid' => Process . pid , 'grandchild_pid' => grandchild_pid } . to_json
@@ -31,12 +31,10 @@ def fork_with_fork_hooks(before_fork_lambda, after_fork_lambda)
3131 end
3232 end
3333
34- def setup_fork_hooks ( before_hook , after_hook )
35- OpenTelemetry ::SDK ::Metrics ::ForkHooks . stub ( :before_fork , before_hook ) do
36- OpenTelemetry ::SDK ::Metrics ::ForkHooks . stub ( :after_fork , after_hook ) do
37- Process . singleton_class . prepend ( OpenTelemetry ::SDK ::Metrics ::ForkHooks )
38- yield if block_given?
39- end
34+ def setup_fork_hooks ( after_hook )
35+ OpenTelemetry ::SDK ::Metrics ::ForkHooks . stub ( :after_fork , after_hook ) do
36+ Process . singleton_class . prepend ( OpenTelemetry ::SDK ::Metrics ::ForkHooks )
37+ yield if block_given?
4038 end
4139 end
4240
@@ -48,22 +46,8 @@ def with_pipe
4846 write_io . close unless write_io . closed?
4947 end
5048
51- it 'runs the before_hook before forking' do
52- with_pipe do |inner_read_io , inner_write_io |
53- before_fork_lambda = proc do
54- inner_write_io . puts "before_fork was called on #{ Process . pid } "
55- end
56- after_fork_lambda = proc { }
57- forking_pid , _forked_pid = fork_with_fork_hooks ( before_fork_lambda , after_fork_lambda )
58-
59- before_fork_message = inner_read_io . gets . chomp
60- assert_equal ( before_fork_message , "before_fork was called on #{ forking_pid } " )
61- end
62- end
63-
6449 it 'runs the after_hook after forking' do
6550 with_pipe do |after_fork_read_io , after_fork_write_io |
66- before_fork_lambda = proc { }
6751 after_fork_lambda = proc do
6852 message = { 'after_fork_pid' => Process . pid } . to_json
6953 after_fork_write_io . puts message
@@ -78,26 +62,6 @@ def with_pipe
7862 end
7963 end
8064
81- it 'calls before_fork on metric readers' do
82- reader1 = Class . new do
83- attr_reader :before_fork_called
84-
85- def before_fork
86- @before_fork_called = true
87- end
88- end . new
89-
90- reader2 = OpenStruct . new
91-
92- meter_provider = OpenTelemetry ::SDK ::Metrics ::MeterProvider . new
93- meter_provider . add_metric_reader ( reader1 )
94- meter_provider . add_metric_reader ( reader2 )
95- ::OpenTelemetry . stub ( :meter_provider , meter_provider ) do
96- OpenTelemetry ::SDK ::Metrics ::ForkHooks . before_fork
97- end
98- assert ( reader1 . before_fork_called )
99- end
100-
10165 it 'calls after_fork on metric readers' do
10266 reader1 = Class . new do
10367 attr_reader :after_fork_called
0 commit comments