mirror of https://github.com/docusealco/docuseal
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.
69 lines
1.1 KiB
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 |