Module: ElbPing::Display

Defined in:
lib/elbping/display.rb

Class Method Summary collapse

Class Method Details

.response(status) ⇒ Object

Format and display the ping data



5
6
7
8
9
10
11
# File 'lib/elbping/display.rb', line 5

def self.response(status)
  node = status[:node]
  code = status[:code]
  duration = status[:duration]

  puts "Response from #{node}: code=#{code.to_s} time=#{duration} ms"
end

.summary(total_summary, node_summary) ⇒ Object

Display summary of results (in aggregate and per-node)



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/elbping/display.rb', line 14

def self.summary(total_summary, node_summary)
  requests = total_summary[:reqs_attempted]
  responses = total_summary[:reqs_completed]
  loss = (1 - (responses.to_f/requests)) * 100

  latencies = total_summary[:latencies]
  avg_latency = (latencies.inject { |sum, el| sum + el }.to_f / latencies.size).to_i # ms

  node_summary.each { |node, summary|
    requests = summary[:reqs_attempted]
    responses = summary[:reqs_completed]
    loss = (1 - (responses.to_f/requests)) * 100

    latencies = summary[:latencies]
    avg_latency = (latencies.inject { |sum, el| sum + el }.to_f / latencies.size).to_i # ms

    puts "--- #{node} statistics ---"
    puts "#{requests} requests, #{responses} responses, #{loss.to_i}% loss"
    puts "min/avg/max = #{latencies.min}/#{avg_latency}/#{latencies.max} ms"
  }

  puts '--- total statistics ---'
  puts "#{requests} requests, #{responses} responses, #{loss.to_i}% loss"
  puts "min/avg/max = #{latencies.min}/#{avg_latency}/#{latencies.max} ms"

end