Sha256: cfd2f4ffcb6b5b39d74a6e42d5496879107f2b6d8d22ba86f780eaa3078a252f

Contents?: true

Size: 592 Bytes

Versions: 2

Compression:

Stored size: 592 Bytes

Contents

module WBench
  module Timings
    class Latency
      def initialize(browser)
        @browser = browser
      end

      def result
        Hash[domains.map { |domain| [domain, latency_for(domain) ] }.sort]
      end

      private

      def latency_for(domain)
        (::Benchmark.measure { TCPSocket.new(domain, 80) }.real * 1000).to_i
      rescue SocketError
        nil
      end

      def domains
        @domains ||= JSON.parse(@browser.evaluate_script('jQuery.stringify(resourceURLs())')).map do |url|
          URI(url).host
        end.compact.uniq
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wbench-0.3.0 lib/wbench/timings/latency.rb
wbench-0.2.3 lib/wbench/timings/latency.rb