nyk0r

Load Testing with Iron Python

Aug 25th, 2011
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.86 KB | None | 0 0
  1. import clr
  2. clr.AddReference('System.Data')
  3.  
  4. from System import DateTime, Random
  5. from System.Timers import Timer
  6. from System.Threading import Thread
  7. import System.Data.SqlClient as client
  8.  
  9. connStr = "Data Source=.\SQL2008;Initial Catalog=MyDB;Integrated Security=True"
  10.  
  11. digits = '0123456789'
  12. letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  13. digitsAndLetter = digits + letters
  14.  
  15. def replaceIf(value, badValue, replacingValue):
  16.     return value if value != badValue else replacingValue
  17.  
  18. def generateRandomString(length, source):
  19.     rnd = Random(DateTime.Now.Second)
  20.     return ''.join([source[rnd.Next(len(source))] for i in range(length)])
  21.  
  22. def generateOrderInfo():
  23.     rnd = Random(DateTime.Now.Second)
  24.     return {
  25.         '[COL1]': generateRandomString(255, digitsAndLetter),
  26.         '[COL2]': generateRandomString(255, digitsAndLetter),
  27.         '[COL3]': generateRandomString(rnd.Next(255), letters),
  28.         '[COL4]': generateRandomString(255, digitsAndLetter),
  29.         '[COL5]': replaceIf(rnd.Next(100), 0, 3),
  30.     }
  31.  
  32. def insertInfo(conn, info):
  33.     with conn.CreateCommand() as comm:
  34.         comm.CommandText =  '''
  35.            INSERT INTO [Table]({0})
  36.            VALUES({1})'''.format(
  37.                 ','.join([k for k in info.keys()]),
  38.                 ','.join(["'{0}'".format(v) for v in info.values()]))
  39.         comm.ExecuteNonQuery()
  40.              
  41. def onTimedEvent(source, e):
  42.     rnd = Random(DateTime.Now.Second)
  43.    
  44.     with client.SqlConnection(connStr) as conn:
  45.         conn.Open()
  46.         for i in range(rnd.Next(5)):
  47.             insertInfo(conn, generateOrderInfo())
  48.         conn.Close()
  49.    
  50.     source.Interval = replaceIf(rnd.Next(15), 0, 15)
  51.     source.Start()
  52.    
  53. if __name__ == '__main__':
  54.     timer = Timer(1)
  55.     timer.Elapsed += onTimedEvent
  56.     timer.AutoReset = False
  57.     timer.Start()
  58.     while True:
  59.         Thread.Sleep(300)
Advertisement
Add Comment
Please, Sign In to add comment