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]