Skip to content

Commit 08743d9

Browse files
authored
DEBUG-3316 verify code tracking works in forked processes (#4284)
1 parent 5235204 commit 08743d9

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed

spec/datadog/di/code_tracker_spec.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,43 @@
9797
expect(tracker.send(:registry)).to be_empty
9898
end
9999
end
100+
101+
context 'when process forks' do
102+
it 'continues tracking in the fork' do
103+
# Load rspec assertion code
104+
expect(1).to eq(1)
105+
expect(1).to equal(1)
106+
107+
expect(tracker.send(:registry)).to be_empty
108+
tracker.start
109+
110+
require_relative 'code_tracker_test_class_4'
111+
expect(tracker.send(:registry).length).to eq(1)
112+
path = tracker.send(:registry).to_a.dig(0, 0)
113+
expect(File.basename(path)).to eq("code_tracker_test_class_4.rb")
114+
115+
expect_in_fork do
116+
expect(tracker.send(:registry).length).to eq(1)
117+
path = tracker.send(:registry).to_a.dig(0, 0)
118+
expect(File.basename(path)).to eq("code_tracker_test_class_4.rb")
119+
120+
require_relative 'code_tracker_test_class_5'
121+
expect(tracker.send(:registry).length).to eq(2)
122+
path = tracker.send(:registry).to_a.dig(1, 0)
123+
expect(File.basename(path)).to eq("code_tracker_test_class_5.rb")
124+
end
125+
126+
begin
127+
Process.waitpid
128+
rescue Errno::ECHILD
129+
end
130+
131+
# Verify parent did not change
132+
expect(tracker.send(:registry).length).to eq(1)
133+
path = tracker.send(:registry).to_a.dig(0, 0)
134+
expect(File.basename(path)).to eq("code_tracker_test_class_4.rb")
135+
end
136+
end
100137
end
101138

102139
describe "#active?" do
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class CodeTrackerTestClass4
2+
end
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class CodeTrackerTestClass5
2+
end

0 commit comments

Comments
 (0)