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.

added owner info to sources

+22 -8
+5
init.rb
··· 1 + require 'sinatra/activerecord' 2 + 3 + ActiveRecord::Base.logger = nil 4 + 5 + SOURCES = 'config/sources.yml'
+10 -7
run_test.rb
··· 1 1 #!/usr/bin/env ruby 2 2 3 3 require 'bundler/setup' 4 - 5 4 require 'json' 6 - require 'sinatra/activerecord' 7 5 require 'skyfall' 8 6 require 'yaml' 9 7 8 + require_relative 'init' 10 9 require_relative 'opts' 11 10 require_relative 'report' 12 11 13 - ActiveRecord::Base.logger = nil 14 - 15 - SOURCES = 'config/sources.yml' 12 + def get_hosts(entries) 13 + if entries 14 + entries.map { |x| x.is_a?(Hash) ? x['host'] : x } 15 + else 16 + [] 17 + end 18 + end 16 19 17 20 config = YAML.load(File.read(SOURCES)) 18 21 options = parse_options(ARGV) ··· 21 24 relays = options[:relays] || [] 22 25 jetstreams = options[:jetstreams] || [] 23 26 else 24 - relays = config['relays'] || [] 25 - jetstreams = config['jetstreams'] || [] 27 + relays = get_hosts(config['relays']) 28 + jetstreams = get_hosts(config['jetstreams']) 26 29 end 27 30 28 31 maxlen = (relays + jetstreams).map(&:length).max
+5 -1
server.rb
··· 2 2 3 3 require 'bundler/setup' 4 4 require 'sinatra' 5 - require 'sinatra/activerecord' 6 5 require 'thin' 6 + require 'yaml' 7 7 8 + require_relative 'init' 8 9 require_relative 'report' 10 + 11 + $config = YAML.load(File.read(SOURCES)) 12 + $owners = ($config['relays'] + $config['jetstreams']).map { |x| x.is_a?(Hash) ? [x['host'], x['owner']] : [x, nil] }.then { Hash[it] } 9 13 10 14 get '/' do 11 15 @last_test = Report.maximum(:start_time)
+2
views/index.erb
··· 7 7 <tr> 8 8 <th>Host</th> 9 9 <th>Type</th> 10 + <th>Run by</th> 10 11 <th>Users</th> 11 12 <th>Events</th> 12 13 <th>% of max</th> ··· 18 19 <tr> 19 20 <td><%= report.host %></td> 20 21 <td><%= report.source_type %></td> 22 + <td><%= $owners[report.host] %></td> 21 23 <td><%= report.users %></td> 22 24 <td><%= report.events %></td> 23 25 <td><%= format('%.2f%%', percent) %></td>