A tool for measuring the coverage of Bluesky/ATProto relays
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

pass the final numbers to the master process via pipe

+14 -3
+14 -3
run_test.rb
··· 31 31 end 32 32 end 33 33 34 - Worker = Struct.new(:host, :pid) 34 + Worker = Struct.new(:host, :pid, :pipe) 35 35 workers = [] 36 36 37 37 relays.each do |host| 38 + input, output = IO.pipe 39 + 38 40 pid = fork do 41 + input.close 39 42 sky = Skyfall::Firehose.new(host, :subscribe_repos) 40 43 41 44 events = 0 ··· 62 65 63 66 sky.connect 64 67 puts "[#{Time.now}] #{host}: Finished." 68 + 69 + output.puts(JSON.generate([events, users.size])) 65 70 end 66 71 67 - workers << Worker.new(host, pid) 72 + output.close 73 + 74 + workers << Worker.new(host, pid, input) 68 75 end 69 76 70 77 begin ··· 74 81 75 82 while !workers.empty? 76 83 pid = Process.wait 77 - workers.delete_if { |w| w.pid == pid } 84 + worker = workers.detect { |w| w.pid == pid } 85 + workers.delete(worker) 86 + 87 + line = worker.pipe.gets 88 + puts "#{worker.host}: #{line}" if verbose 78 89 end 79 90 rescue Interrupt 80 91 puts