Class: JmeterReports::Summary

Inherits:
Object
  • Object
show all
Defined in:
lib/jmeter/reports/summary.rb

Constant Summary collapse

CSV_HEADER =
"timeStamp,elapsed,label,responseCode,responseMessage,threadName,"+
"dataType,success,bytes,grpThreads,allThreads,URL,Latency\n"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSummary

Returns a new instance of Summary.



6
7
8
9
# File 'lib/jmeter/reports/summary.rb', line 6

def initialize
  @items = {}
  @req_count = 0
end

Class Method Details

.create(summary_report_file_path) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/jmeter/reports/summary.rb', line 11

def self.create(summary_report_file_path)
  report = Summary.new
  csv_report = File.open(summary_report_file_path,'r')
  
  unless csv_report.readline == CSV_HEADER
    raise Exception.new("Invalid CSV report: #{summary_report_file_path}")
  end
  
  csv_report.each_line do |line|
    next if line.start_with?("timeStamp,") # ignore header
    report.add(SummaryLine.parse(line))
  end
  return report
end

Instance Method Details

#add(line) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/jmeter/reports/summary.rb', line 26

def add(line)
  @items[line.label] = SummaryItem.new(line.label) if @items[line.label].nil?
  @items[line.label].add(line)
  @req_count += 1
  @start_ms = line.timestamp if @start_ms.nil? || line.timestamp < @start_ms
  @end_ms   = line.timestamp if @end_ms.nil?   || line.timestamp > @end_ms
end

#avg_throughputObject



42
43
44
# File 'lib/jmeter/reports/summary.rb', line 42

def avg_throughput
  @req_count / self.elapsed
end

#elapsedObject



38
39
40
# File 'lib/jmeter/reports/summary.rb', line 38

def elapsed
  (self.elapsed_in_ms / 1000.0).ceil
end

#elapsed_in_msObject



34
35
36
# File 'lib/jmeter/reports/summary.rb', line 34

def elapsed_in_ms
  @end_ms - @start_ms
end

#end_dateObject



58
59
60
# File 'lib/jmeter/reports/summary.rb', line 58

def end_date
  Time.at(@end_ms / 1000.0)
end

#itemsObject



46
47
48
# File 'lib/jmeter/reports/summary.rb', line 46

def items
  @items.values
end

#start_dateObject



54
55
56
# File 'lib/jmeter/reports/summary.rb', line 54

def start_date
  Time.at(@start_ms / 1000.0)
end

#total_requestsObject



50
51
52
# File 'lib/jmeter/reports/summary.rb', line 50

def total_requests
  @req_count
end