A re-worked version of the performance testing framework.
This commit is contained in:
parent
031dc3e004
commit
a009f582f3
52 changed files with 7017 additions and 0 deletions
102
utilities/LoadTesting/scripts/subscripts/test_result_file.rb
Normal file
102
utilities/LoadTesting/scripts/subscripts/test_result_file.rb
Normal file
|
@ -0,0 +1,102 @@
|
|||
#! /usr/bin/ruby
|
||||
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Parse a file of JMeter test results (*./jtl), summarize the times for each test,
|
||||
and make the summaries easily available.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
require "rexml/document"
|
||||
|
||||
include REXML
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# TestResultSummary class
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
class TestResultSummary
|
||||
attr_reader :label
|
||||
attr_reader :how_many
|
||||
attr_reader :failures
|
||||
attr_reader :min_time
|
||||
attr_reader :max_time
|
||||
attr_reader :avg_time
|
||||
def addResult(result_element)
|
||||
@how_many += 1
|
||||
@failures += 1 unless result_element.attributes["s"] == "true"
|
||||
|
||||
time = result_element.attributes["t"].to_i
|
||||
@total_time += time
|
||||
@min_time = [@min_time, time].min
|
||||
@max_time = [@max_time, time].max
|
||||
|
||||
@avg_time = @total_time / how_many
|
||||
end
|
||||
|
||||
def initialize(result_element)
|
||||
@label = result_element.attributes["lb"]
|
||||
@how_many = 0
|
||||
@failures = 0
|
||||
@min_time = 100000000
|
||||
@max_time = 0
|
||||
@total_time = 0
|
||||
|
||||
addResult(result_element)
|
||||
end
|
||||
end
|
||||
|
||||
# ------------------------------------------------------------------------------------
|
||||
# TestResultFile class
|
||||
# ------------------------------------------------------------------------------------
|
||||
|
||||
class TestResultFile
|
||||
attr_reader :filename
|
||||
attr_reader :timestamp
|
||||
attr_reader :summaries
|
||||
attr_reader :version
|
||||
def parse_result_file()
|
||||
@summaries = {}
|
||||
@version = "_"
|
||||
|
||||
file = File.new( @file_path )
|
||||
doc = Document.new file
|
||||
XPath.each(doc, "/testResults/httpSample") do | result |
|
||||
test_label = result.attributes["lb"]
|
||||
if @summaries[test_label] == nil
|
||||
@summaries[test_label] = TestResultSummary.new(result)
|
||||
else
|
||||
@summaries[test_label].addResult(result)
|
||||
end
|
||||
end
|
||||
|
||||
XPath.each(doc, "version") do | version |
|
||||
@version = version.attributes["name"]
|
||||
end
|
||||
end
|
||||
|
||||
def initialize(filename, source_directory)
|
||||
raise("filename must not be nil") if filename == nil
|
||||
raise("source_directory must not be nil") if source_directory == nil
|
||||
|
||||
@filename = filename
|
||||
@source_directory = source_directory
|
||||
|
||||
if !File.directory?(@source_directory)
|
||||
raise "Directory does not exist: '#{@source_directory}'."
|
||||
end
|
||||
|
||||
@file_path = File.expand_path(filename + ".jtl", @source_directory)
|
||||
|
||||
if !File.file?(@file_path)
|
||||
raise "File doesn't exist: '#{@file_path}'."
|
||||
end
|
||||
|
||||
@timestamp = File.mtime(@file_path)
|
||||
|
||||
parse_result_file()
|
||||
end
|
||||
end
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue