Skip to content

Commit ecc2a3e

Browse files
committed
update unit test to be more simpler
1 parent d94ffe1 commit ecc2a3e

File tree

1 file changed

+10
-39
lines changed

1 file changed

+10
-39
lines changed

test/memory/sampler.rb

Lines changed: 10 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
# Copyright, 2020-2025, by Samuel Williams.
55

66
require "memory"
7-
require "socket"
8-
require "fileutils"
97

108
class MyThing
119
end
@@ -42,50 +40,23 @@ class MyThing
4240
end
4341

4442
it "safely captures locked string objects" do
45-
socket_path = "/tmp/test_supervisor.ipc"
46-
FileUtils.rm_f(socket_path)
47-
48-
memory = Memory::Sampler.new
49-
memory.start
50-
51-
# Create server thread
52-
Thread.new do
53-
server = UNIXServer.new(socket_path)
54-
client = server.accept
55-
56-
2.times do
57-
buffer = String.new(capacity: 2)
58-
length_data = client.read(2, buffer) # buffer gets locked while reading
59-
break unless length_data && length_data.bytesize == 2
60-
61-
length = length_data.unpack1("n")
62-
client.read(length)
43+
fiber = Fiber.new do |string|
44+
IO::Buffer.for(string) do
45+
# string is now locked for the duration of this block.
46+
sleep(0.1)
47+
Fiber.yield
6348
end
64-
ensure
65-
client&.close
66-
server.close
6749
end
6850

69-
# Create a client thread
70-
Thread.new do
71-
socket = UNIXSocket.new(socket_path)
72-
73-
2.times do
74-
message = Time.now.to_s
75-
socket.write([message.bytesize].pack("n") + message)
76-
puts "hello #{message}"
77-
sleep(1)
78-
end
79-
ensure
80-
socket&.close
81-
end
51+
memory = Memory::Sampler.new
52+
memory.start
8253

83-
sleep(0.1)
54+
# Lock the string
55+
key = String.new("foo")
56+
fiber.resume(key)
8457

8558
memory.stop
8659
memory.report # buffer string is locked while reading ObjectSpace#each_object
87-
ensure
88-
FileUtils.rm_f(socket_path)
8960
end
9061

9162
with "#as_json" do

0 commit comments

Comments
 (0)