# ===================================================
# Classe de formatage de resultat renvoye par httperf
# Author: Vincent Dubois
# ===================================================
class HttperfFormatter
attr_accessor :results, :description
# Constructeur
def initialize results, description
self.results = results
self.description = description
end
# Methode qui permet de fabriquer le flux HTML a partir du flux console httperf
def to_html
html = "
Statistics for task '#{self.description}' :
"
begin
results_lines = self.results.split(/$/)
# On enleve la premiere ligne d'espace, sinon elle apparait en premier
if results_lines.length > 2 #and results_lines[2] == ""
results_lines.delete_at(2)
results_lines.delete_at(results_lines.length-1)
end
i = 0
results_lines.each do |line|
if line[0..0].to_i == 0
elements = line[1..line.length].split(/$|\:/)
else
elements = line.split(/$|\:/)
end
html = html + "" + format_line(elements) + "
"
i = i + 1
end
rescue Exception => e
raise " Unable to format httperf results. Exception is : #{e.to_s}"
end
html = html + "
"
end
# Methode qui permet de formater une ligne de presentation des resultats
def format_line elements
line = ""
if elements.length == 0
line = line + " | "
else
details = elements[1].split(' ') if elements.length > 1
if elements[0] != "Maximum connect burst length" and elements[0][0..6] != "ttperf "
line = line + "#{elements[0]} | "
end
case elements[0]
when "Total"
line = line + "#{details[0]} | "
line = line + "#{details[1]} | "
line = line + "#{details[2]} | "
line = line + "#{details[3]} | "
line = line + "#{details[4]} | "
line = line + "#{details[5]} | "
line = line + "#{details[6]} | "
line = line + "#{details[7]} #{details[8]} | "
when "Connection rate"
line = line + "#{elements[1]} | "
when "Connection time [ms]"
line = line + "#{details[0]} | "
if details[0] == "min"
line = line + "#{details[1]} | "
line = line + "#{details[2]} | "
line = line + "#{details[3]} | "
line = line + "#{details[4]} | "
line = line + "#{details[5]} | "
line = line + "#{details[6]} | "
line = line + "#{details[7]} | "
line = line + "#{details[8]} | "
line = line + "#{details[9]} | "
else
line = line + "#{details[1]} | "
end
when "Connection length [replies/conn]"
line = line + "#{elements[1]} | "
when "Request rate"
line = line + "#{elements[1]} | "
when "Request size [B]"
line = line + "#{elements[1]} | "
when "Reply rate [replies/s]"
line = line + "#{details[0]} | "
line = line + "#{details[1]} | "
line = line + "#{details[2]} | "
line = line + "#{details[3]} | "
line = line + "#{details[4]} | "
line = line + "#{details[5]} | "
line = line + "#{details[6]} | "
line = line + "#{details[7]} | "
line = line + "#{details[8]} #{details[9]} | "
when "Reply time [ms]"
line = line + "#{details[0]} | "
line = line + "#{details[1]} | "
line = line + "#{details[2]} | "
line = line + "#{details[3]} | "
when "Reply size [B]"
line = line + "#{details[0]} | "
line = line + "#{details[1]} | "
line = line + "#{details[2]} | "
line = line + "#{details[3]} | "
line = line + "#{details[4]} | "
line = line + "#{details[5]} | "
line = line + "#{details[6]} #{details[7]} | "
when "Reply status"
line = line + "#{details[0]} | "
line = line + "#{details[1]} | "
line = line + "#{details[2]} | "
line = line + "#{details[3]} | "
line = line + "#{details[4]} | "
when "CPU time [s]"
line = line + "#{details[0]} | "
line = line + "#{details[1]} | "
line = line + "#{details[2]} | "
line = line + "#{details[3]} | "
line = line + "#{details[4]} #{details[5]} #{details[6]} #{details[7]} #{details[8]} #{details[9]} | "
when "Net I/O"
line = line + "#{elements[1]} | "
when "Errors"
line = line + "#{details[0]} | "
line = line + "#{details[1]} | "
line = line + "#{details[2]} | "
line = line + "#{details[3]} | "
line = line + "#{details[4]} | "
line = line + "#{details[5]} | "
line = line + "#{details[6]} | "
if details[0] == "total"
line = line + "#{details[7]} | "
line = line + "#{details[8]} | "
line = line + "#{details[9]} | "
else
line = line + "#{details[7]} | "
end
when "Session rate [sess/s]"
line = line + "#{details[0]} | "
line = line + "#{details[1]} | "
line = line + "#{details[2]} | "
line = line + "#{details[3]} | "
line = line + "#{details[4]} | "
line = line + "#{details[5]} | "
line = line + "#{details[6]} | "
line = line + "#{details[7]} | "
line = line + "#{details[8]} | "
when "Session"
line = line + "#{details[0]} | "
line = line + "#{details[1]} #{details[2]} | "
when "Session lifetime [s]"
line = line + "#{elements[1]} | "
when "Session failtime [s]"
line = line + "#{elements[1]} | "
when "Session length histogram"
line = line + "#{elements[1]} | "
end
return line
end
end
private :format_line
end