8
8
require 'json'
9
9
10
10
describe 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 )
12
12
with_pipe do |inner_read_io , inner_write_io |
13
13
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
15
15
grandchild_pid = fork { }
16
16
Timeout . timeout ( 5 ) { Process . waitpid ( grandchild_pid ) }
17
17
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)
31
31
end
32
32
end
33
33
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?
40
38
end
41
39
end
42
40
@@ -48,22 +46,8 @@ def with_pipe
48
46
write_io . close unless write_io . closed?
49
47
end
50
48
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
-
64
49
it 'runs the after_hook after forking' do
65
50
with_pipe do |after_fork_read_io , after_fork_write_io |
66
- before_fork_lambda = proc { }
67
51
after_fork_lambda = proc do
68
52
message = { 'after_fork_pid' => Process . pid } . to_json
69
53
after_fork_write_io . puts message
@@ -78,26 +62,6 @@ def with_pipe
78
62
end
79
63
end
80
64
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
-
101
65
it 'calls after_fork on metric readers' do
102
66
reader1 = Class . new do
103
67
attr_reader :after_fork_called
0 commit comments