You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
docuseal/vendor/bundle/ruby/4.0.0/gems/sidekiq-8.1.2/bin/webload

69 lines
1.1 KiB

#!/usr/bin/env ruby
require 'bundler'
Bundler.setup
# This skeleton allows you to run Sidekiq::Web page rendering
# through Vernier for tuning.
require "sidekiq/web"
require "rack/test"
require "vernier"
Sidekiq::Web.configure do |config|
config.middlewares.clear # remove csrf
end
class SomeJob
include Sidekiq::Job
end
class BenchWeb
include Rack::Test::Methods
def app
Sidekiq::Web.new
end
def warmup(page = "/scheduled")
# Sidekiq.redis {|c| c.flushdb }
# 100.times do |idx|
# SomeJob.perform_at(idx, 1, 3, "mike", {"foo" => "bar"})
# end
100.times do
get page
end
end
def load(page = "/scheduled", count = 10_000)
profile do
count.times do
get page
raise last_response.inspect unless last_response.status == 200
end
end
end
def profile(&)
if ENV["PROF"]
Vernier.profile(out: "profile.json.gz", &)
else
yield
end
end
end
def timer(name="block", count = 10_000)
a = Time.now
yield count
b = Time.now
puts "#{name} in #{b - a} sec"
end
page = "/busy"
b = BenchWeb.new
b.warmup(page)
timer(page) do |count|
b.load(page, count)
end