# =================================================== # 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