tangled
alpha
login
or
join now
mackuba.eu
/
pulsar
9
fork
atom
A tool for measuring the coverage of Bluesky/ATProto relays
9
fork
atom
overview
issues
1
pulls
pipelines
stop worker processes after a configured duration
mackuba.eu
1 week ago
c7a8be14
3cf3d78d
+18
-7
1 changed file
expand all
collapse all
unified
split
run_test.rb
+18
-7
run_test.rb
···
9
config = YAML.load(File.read(SOURCES))
10
11
relays = config['relays']
0
12
maxlen = relays.map(&:length).max
0
0
0
13
14
relays.each do |host|
15
pid = fork do
···
30
end
31
end
32
33
-
sky.on_connecting { puts "[#{Time.now}] #{host}: Connecting..."}
34
-
sky.on_connect { puts "[#{Time.now}] #{host}: Connected ✓"}
35
-
36
-
trap("SIGINT") {
37
-
sky.disconnect
38
-
}
39
40
sky.connect
41
puts "[#{Time.now}] #{host}: Finished."
42
end
0
0
43
end
44
45
begin
46
-
sleep 1000000
0
0
0
0
0
0
0
47
rescue Interrupt
48
puts
49
puts "Stopping..."
···
9
config = YAML.load(File.read(SOURCES))
10
11
relays = config['relays']
12
+
duration = config['duration']&.to_i || 60 * 15
13
maxlen = relays.map(&:length).max
14
+
15
+
Worker = Struct.new(:host, :pid)
16
+
workers = []
17
18
relays.each do |host|
19
pid = fork do
···
34
end
35
end
36
37
+
sky.on_connecting { puts "[#{Time.now}] #{host}: Connecting..." }
38
+
sky.on_connect { puts "[#{Time.now}] #{host}: Connected ✓" }
39
+
40
+
trap('SIGINT') { sky.disconnect }
0
0
41
42
sky.connect
43
puts "[#{Time.now}] #{host}: Finished."
44
end
45
+
46
+
workers << Worker.new(host, pid)
47
end
48
49
begin
50
+
sleep(duration)
51
+
52
+
Process.kill('SIGINT', *workers.map(&:pid))
53
+
54
+
while !workers.empty?
55
+
pid = Process.wait
56
+
workers.delete_if { |w| w.pid == pid }
57
+
end
58
rescue Interrupt
59
puts
60
puts "Stopping..."