Skip to content

Instantly share code, notes, and snippets.

@fguillen
Created November 5, 2014 09:40
Show Gist options
  • Save fguillen/622292cfc2e74bc8aa4f to your computer and use it in GitHub Desktop.
Save fguillen/622292cfc2e74bc8aa4f to your computer and use it in GitHub Desktop.
require "benchmark"
require "logger"
require "resolv"
module Script
def self.run(process_name, resolv_kind, dns_server_ip, nameserver_to_resolv)
file = File.open("/tmp/dns_resolution_stress.log", File::WRONLY | File::APPEND)
logger = Logger.new(file)
logger.level = Logger::DEBUG
if resolv_kind == "ruby"
dns_resolv = Resolv::DNS.new(:nameserver => [dns_server_ip])
end
max = 0
while(true)
time =
Benchmark.realtime do
if resolv_kind == "ruby"
dns_resolv.getaddress(nameserver_to_resolv)
else
`nslookup #{nameserver_to_resolv} #{dns_server_ip}`
end
end
message = "[#{Time.now.strftime("%Y%m%d%H%M%s")}] [#{process_name}] [#{(1/time).round(1)}] [#{time}]"
message += " **************" if time > 1
logger.debug message
end
end
end
if ARGV.length != 4
puts "use $ ruby dns_resolution_stress.rb <process_name> <resolv_kind(ruby|nslookup)> <dns_server_ip> <nameserver_to_resolv>"
puts "exa $ ruby dns_resolution_stress.rb 001 ruby 8.8.8.8 google.com"
exit 1
end
Script.run(ARGV[0], ARGV[1], ARGV[2], ARGV[3])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment