Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jakarta-jmeter Wiki" 
for change notification.

The following page has been changed by OliverErlewein:
http://wiki.apache.org/jakarta-jmeter/LogAnalysis

------------------------------------------------------------------------------
  ...
  }}}
  
+ == Extracting JTL files to CSV with Python ==
+ This script does two things. First it filters the JTL file for a regular 
expression. Then it strips them and outputs a CSV file. This also includes the 
conversion of the timestamp to a readable format.
+ 
+ Usage is:
+   "program.py <JTL input file> <CSV output file> <regular expression>"
+ 
+ 
+ {{{
+ #!/usr/bin/python
+ 
+ """
+ Description : Split JTL file into a comma delimited CVS
+ by          : Oliver Erlewein (c)2008
+ Date        : 04.02.2008
+ Lang        : Python 2.4+
+ 
+ JMeter JTL field contents:
+ 
+ Attribute & Content
+ by      Bytes
+ de      Data encoding
+ dt      Data type
+ ec      Error count (0 or 1, unless multiple samples are aggregated)
+ hn      Hostname where the sample was generated
+ lb      Label
+ lt      Latency = time to initial response (milliseconds) - not all samplers 
support this
+ na      Number of active threads for all thread groups
+ ng      Number of active threads in this group
+ rc      Response Code (e.g. 200)
+ rm      Response Message (e.g. OK)
+ s       Success flag (true/false)
+ sc      Sample count (1, unless multiple samples are aggregated)
+ t       Elapsed time (milliseconds)
+ tn      Thread Name
+ ts      timeStamp (milliseconds since midnight Jan 1, 1970 UTC)
+ """
+ 
+ import sys
+ import string
+ import re
+ import datetime
+ import time
+ 
+ startTime = time.time()
+ cnt                     = 0
+ cnt2                    = 0
+ failCnt                 = 0
+ reCompile = re.compile("\s([^\s]*?)=\"(.*?)\"")
+ delimiterCharacterOut = ","
+ 
+ def writeCSVLine(line):
+     x = reCompile.findall(line)
+     a = dict((row[0], row[1]) for row in x)
+     try:
+         a['ts'] = str(int(int(a['ts'])/1000))
+         x = str(datetime.datetime.fromtimestamp(float(a['ts'])))[0:19]
+         b = a['ts'] + ",\"" + x + "\"," + a['t'] + "," + a['lt'] + ",\"" + 
a['s'] + "\",\"" + a['lb'] + "\"," + a['rc'] + ",\"" + a['rm'] + "\",\"" + 
a['tn'] + "\",\"" + a['dt'] + "\"," + a['by'] + "\n"
+     except:
+         return -1
+     o.write(b)
+     return 1
+ 
+ print "Splitting JTL file"
+ 
+ try:
+     runArgv             = sys.argv                      # Save the command 
line
+     jtlInfile           = str(sys.argv[1])              # Name of JTL input 
file
+     cvsOutfile          = str(sys.argv[2])              # Name of CVS output 
file
+     reFilter            = str(sys.argv[3])              # Filter the labels 
(lb) for the filter
+ except:
+     print "Error: Input format: <input file> <output file> <Filter by regular 
expression>"
+     raise
+ 
+ try:
+     f = open(jtlInfile, "r")
+     o = open(cvsOutfile, "w")
+ except:
+     raise
+ 
+ print "Filtering on regular expression : " + reFilter cmpFilter = 
re.compile(reFilter)
+ 
+ for line in f:
+     try:
+         if cmpFilter.search(line):
+            returnVal = writeCSVLine(line)
+            if returnVal < 0:
+               failCnt += 1
+            else:
+               cnt2 += 1
+     except:
+         print 'Error in line : ', cnt, line
+         raise
+ 
+     cnt += 1
+ 
+ endTime = time.time()
+ print "Time taken                    : ", str(endTime-startTime)
+ print "Lines processed              : ", cnt
+ print "Lines that passed the filter : ", cnt2
+ print "Lines skipped (error?)       : ", failCnt
+ 
+ f.close()
+ o.close()
+ }}}
+ 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to