Difference between revisions of "Automated Reconstruction of LoadRunner Scripts"
Jump to navigation
Jump to search
PeterHarding (talk | contribs) |
PeterHarding (talk | contribs) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=Overview= | =Overview= | ||
The following are scripts I have used to cleanup and reformat LoadRunner after I have recorded them | The following are early versions of scripts I have used to cleanup and reformat LoadRunner scripts after I have recorded them. Ultimately, my intention was to automate the inclusion of parameters and other code such as standard libraries. | ||
=The Scripts= | =The Scripts= | ||
See: | |||
* [[LR__fmt.py]] | |||
* [[LR__item_data.py]] | |||
=Examples= | =Examples= | ||
Line 19: | Line 24: | ||
#-------------------------------------------------------------------------- | #-------------------------------------------------------------------------- | ||
import re | import re | ||
import sys | import sys | ||
import types | import types | ||
import getopt | |||
import pprint | |||
from string import join, split | from string import join, split | ||
#-------------------------------------------------------------------------- | #-------------------------------------------------------------------------- | ||
""" | """ | ||
Clean up LoadRuner script data blocks | Clean up LoadRuner script data blocks | ||
""" | """ | ||
#-------------------------------------------------------------------------- | |||
debug_flg = False | debug_flg = False | ||
Line 37: | Line 43: | ||
in_ITEMDATA = False | in_ITEMDATA = False | ||
#-------------------------------------------------------------------------- | #-------------------------------------------------------------------------- | ||
Line 47: | Line 52: | ||
ofd = open('xxx.tmp', 'w') | ofd = open('xxx.tmp', 'w') | ||
pat = re.compile( | pat = re.compile('( *)("Name=[^"]*") *, *("Value=[^"]*") *, *ENDITEM,(.*)') | ||
for line in ifd.readlines(): | for line in ifd.readlines(): | ||
Line 67: | Line 72: | ||
print m.__dict__ | print m.__dict__ | ||
ofd.write("%s\n" % line) | ofd.write("%s\n" % line) | ||
Line 94: | Line 98: | ||
</pre> | </pre> | ||
== | ==lr__cleanup.py== | ||
<pre> | <pre> | ||
Line 100: | Line 104: | ||
#-------------------------------------------------------------------------- | #-------------------------------------------------------------------------- | ||
import re | import re | ||
import os | import os | ||
import sys | import sys | ||
import types | import types | ||
import getopt | |||
import pprint | |||
from string import join, split | from string import join, split | ||
#-------------------------------------------------------------------------- | #-------------------------------------------------------------------------- | ||
""" | """ | ||
Clean up LoadRuner script data blocks | Clean up LoadRuner script data blocks | ||
""" | """ | ||
#-------------------------------------------------------------------------- | |||
debug_flg = False | debug_flg = False | ||
Line 120: | Line 124: | ||
in_ITEMDATA = False | in_ITEMDATA = False | ||
tmpfile | tmpfile = 'xxx' | ||
#-------------------------------------------------------------------------- | #-------------------------------------------------------------------------- | ||
def | def cleanup(filename): | ||
global in_ITEMDATA | global in_ITEMDATA | ||
Line 137: | Line 141: | ||
ofd = open(tmpfile, 'w') | ofd = open(tmpfile, 'w') | ||
p = re.compile('( *)("Name=[^ | p = re.compile('( *)("Name=[^"]*") *, *("Value=[^"]*") *, *ENDITEM,(.*)') | ||
for line in ifd.readlines(): | for line in ifd.readlines(): | ||
Line 216: | Line 220: | ||
for script in argv: | for script in argv: | ||
cleanup(script) | |||
#-------------------------------------------------------------------------- | #-------------------------------------------------------------------------- | ||
Line 251: | Line 255: | ||
print "%s,%s,%s,%s,%s" % (x[0], x[1], x[2], urllib.quote(x[2]), x[3]) | print "%s,%s,%s,%s,%s" % (x[0], x[1], x[2], urllib.quote(x[2]), x[3]) | ||
ih.close() | ih.close() | ||
</pre> | </pre> | ||
[[Category:LoadRunner]] | [[Category:LoadRunner]] | ||
[[Category:Python]] | [[Category:Python]] |
Latest revision as of 10:31, 5 June 2008
Overview
The following are early versions of scripts I have used to cleanup and reformat LoadRunner scripts after I have recorded them. Ultimately, my intention was to automate the inclusion of parameters and other code such as standard libraries.
The Scripts
See:
Examples
chk.py lr__.py url_quote.py
chk.py
#!/usr/bin/env python #-------------------------------------------------------------------------- import re import sys import types import getopt import pprint from string import join, split #-------------------------------------------------------------------------- """ Clean up LoadRuner script data blocks """ #-------------------------------------------------------------------------- debug_flg = False verbose_flg = False in_ITEMDATA = False #-------------------------------------------------------------------------- def process(filename): global in_ITEMDATA ifd = open(filename, 'r') ofd = open('xxx.tmp', 'w') pat = re.compile('( *)("Name=[^"]*") *, *("Value=[^"]*") *, *ENDITEM,(.*)') for line in ifd.readlines(): line = line[:-1] if re.match('ITEMDATA', line): in_ITEMDATA = True ofd.write("%s\n" % line) continue if re.match('LAST', line): in_ITEMDATA = False ofd.write("%s\n" % line) continue if in_ITEMDATA: m = pat.search(line) print pat.groupindex print m.__dict__ ofd.write("%s\n" % line) ifd.close() ofd.close() #----- Main test ---------------------------------------------------------- def main(argv): global pp print argv file = argv[0] process(file) #-------------------------------------------------------------------------- if __name__ == "__main__": main(sys.argv[1:]) #--------------------------------------------------------------------------
lr__cleanup.py
#!/usr/bin/env python #-------------------------------------------------------------------------- import re import os import sys import types import getopt import pprint from string import join, split #-------------------------------------------------------------------------- """ Clean up LoadRuner script data blocks """ #-------------------------------------------------------------------------- debug_flg = False verbose_flg = False in_ITEMDATA = False tmpfile = 'xxx' #-------------------------------------------------------------------------- def cleanup(filename): global in_ITEMDATA spacer = None block = None l_name = 0 l_value = 0 print filename ifd = open(filename, 'r') ofd = open(tmpfile, 'w') p = re.compile('( *)("Name=[^"]*") *, *("Value=[^"]*") *, *ENDITEM,(.*)') for line in ifd.readlines(): line = line[:-1] line = line.replace('\t', ' ') if re.search('ITEMDATA', line): block = [] l_name = 0 l_value = 0 spacer = '' if debug_flg: print 'ITEMDATA Start' in_ITEMDATA = True ofd.write("%s\n" % line) continue if in_ITEMDATA and re.search('LAST', line): if debug_flg: print 'ITEMDATA End =========================================' in_ITEMDATA = False if debug_flg: print 'len block = %d' % len(block) block_txt = '' for b in block: line = "%s%s,%s%s,%sENDITEM,%s\n" % ( spacer, b[1], (' '*(l_name - len(b[1]) + 2)), b[2], (' '*(l_value - len(b[2]) + 2)), b[3]) block_txt += line ofd.write("%s" % block_txt) ofd.write("%sLAST);\n" % spacer) if debug_flg: print 'ITEMDATA End =========================================' spacer = None continue if in_ITEMDATA: if debug_flg: print line m = p.search(line) if m: if debug_flg: print '[%s][%s][%s][%s]' % (m.group(1), m.group(2), m.group(3), m.group(4)) if not spacer: spacer = m.group(1) name = m.group(2) value = m.group(3) extra = m.group(4) l = len(name) if l > l_name: l_name = l l = len(value) if l > l_value: l_value = l block.append((spacer, name, value, extra)) continue ofd.write("%s\n" % line) ifd.close() ofd.close() os.rename(filename, 'bak/' + filename) os.rename(tmpfile, filename) #----- Main test ---------------------------------------------------------- def main(argv): global pp print argv if not os.path.exists('bak'): os.mkdir('bak') for script in argv: cleanup(script) #-------------------------------------------------------------------------- if __name__ == "__main__": main(sys.argv[1:]) #--------------------------------------------------------------------------
url_quote.py
#!/usr/bin/env python import urllib x = 'WAGGA WAGGA SERVICE' print urllib.quote(x) ih = open('WCID.dat', 'r') while (True): l = ih.readline() if not l: break l = l[:-1] x = l.split(',') print "%s,%s,%s,%s,%s" % (x[0], x[1], x[2], urllib.quote(x[2]), x[3]) ih.close()