#!/usr/bin/python import gvib import sys import os import os.path import thread db="runner:/usr/local/db/stress.gdb" tbn="stress_mga" def create_mark(): if not os.path.exists("__M"): f=open("__M","w+") f.close() def con(): return gvib.connect(db, 'sysdba', 'masterkey') i=1 def fac_data(): global i i = i +1 return ("%d" % (i),"Descricao do codigo %d" % (i),(i*1000)/1.1,(i*1740)/1.1,"OOOOBBSSSSSSSSSSSSSSSSSSSSSSSSS") def execsql(sql): c=con() cr=c.cursor() cr.execute(sql) c.commit() def cria_tabela(): sql="""\ CREATE TABLE %s ( CODIGO VARCHAR(30), DESCR VARCHAR(80), PRECO1 DOUBLE PRECISION, PRECO2 DOUBLE PRECISION, OBS VARCHAR(200) ) """ % (tbn) idx1="""\ CREATE INDEX IDX_STRESS_1 ON %s (CODIGO,DESCR)""" % (tbn) idx2="""\ CREATE DESCENDING INDEX IDX_STRESS_2 ON %s (CODIGO,DESCR,PRECO1,PRECO2)""" % (tbn) print "%s\n%s\n%s\n" % (sql,idx1,idx2) execsql(sql) execsql(idx1) execsql(idx2) def s_insert(rollback=0): print "insert ",rollback for i1 in range(2): c=con() cr=c.cursor() f=fac_data() for i2 in range(100): cr.execute('INSERT INTO STRESS_MGA (CODIGO,DESCR,PRECO1,PRECO2,OBS) VALUES (?,?,?,?,?)',f) if rollback: c.rollback() else: c.commit() def s_update(rollback=0): print "update ",rollback for i1 in range(1): c=con() cr=c.cursor() for i2 in range(2): cr.execute("UPDATE STRESS_MGA SET CODIGO=CODIGO,DESCR='DESCR UPDATE',OBS='OBS UPDATE',PRECO1=PRECO1+1000,PRECO2=PRECO2-1000") if rollback: print "rollback" c.rollback() else: c.commit() def s_del_ins(rollback=0): print "del_ins ",rollback for i1 in range(10): c=con() cr=c.cursor() cr.execute("DELETE FROM STRESS_MGA") f=fac_data() for i2 in range(10): cr.execute('INSERT INTO STRESS_MGA (CODIGO,DESCR,PRECO1,PRECO2,OBS) VALUES (?,?,?,?,?)',f) if rollback: c.rollback() else: c.commit() def s_sel(): print "select" for i in range(10): c=con() cr=c.cursor() for i2 in range(10): #cr.execute("select * from STRESS_MGA") #cr.fetchall() cr.execute("select sum(PRECO1) from stress_mga") cr.fetchall() mutex = thread.allocate_lock() running = 0 done = thread.allocate_lock() def test(d=0): global running global done global mutex s_insert() s_insert(1) s_update() s_update(1) s_sel() mutex.acquire() running = running - 1 if running == 0: done.release() mutex.release() def do_test(): global running mutex.acquire() thread.start_new_thread(test,(0,)) running = running + 1 mutex.release() print "New test." if len(sys.argv) > 1: if sys.argv[1]=="create": cria_tabela() elif sys.argv[1]=="multi": s_insert() done.acquire() do_test() s_insert(1) do_test() s_update() do_test() s_update(1) do_test() s_sel() done.acquire() elif sys.argv[1]=="test": s_insert() s_insert(1) #s_del_ins() #s_del_ins(1) #s_update() #s_update(1) s_sel() elif sys.argv[1]=="update": while 1: s_update() s_update(1) print "Done."