Author: sleon
Date: 2006-01-08 02:21:34 +0000 (Sun, 08 Jan 2006)
New Revision: 7813

Modified:
   trunk/apps/freeviz/db.py
   trunk/apps/freeviz/gen.py
   trunk/apps/freeviz/handler.py
   trunk/apps/freeviz/histdata.py
   trunk/apps/freeviz/histogram.py
Log:
wow, transactions, python loops, swaps ... all seems to work

Modified: trunk/apps/freeviz/db.py
===================================================================
--- trunk/apps/freeviz/db.py    2006-01-08 00:36:15 UTC (rev 7812)
+++ trunk/apps/freeviz/db.py    2006-01-08 02:21:34 UTC (rev 7813)
@@ -5,11 +5,13 @@
 #mport pydot


-uri = 'mysql://twisted:severe at 127.0.0.1/twisted?debug=True'
+uri = 'mysql://twisted:severe at 127.0.0.1/twisted?cache=False'
 con = connectionForURI(uri)
 sqlhub.processConnection = con

+
 class NodePair(SQLObject):
+       _cacheValue = False
         node1 = ForeignKey('Node', notNull=True)
         node2 = ForeignKey('Node', notNull=True)

@@ -20,6 +22,7 @@
         index = DatabaseIndex('node1','node2', unique=True)

 class Node(SQLObject):
+       _cacheValue = False
        identity = StringCol(length=100, notNull=True)
        lastUpdate = DateTimeCol(notNull=True, default=datetime.datetime.now())
        name = StringCol(length=50, notNull=True, default='dummy')
@@ -37,9 +40,6 @@
        index = DatabaseIndex('identity',unique=True)
        #index2 = DatabaseIndex('name',unique=True)

-def getLastGoodVer():
-       return con.queryOne('SELECT MAX(last_good_version) from node')[0]
-
 def init():
        Node.createTable()
        NodePair.createTable()
@@ -52,15 +52,22 @@
        drop()
        init()

-def delete_conns(nodeinfo):
-       nodeid = getIdFromInfo(nodeinfo)
-       l = NodePair.select()
+def get_trans():
+       return con.transaction()
+
+def getLastGoodVer(trans):
+       return trans.queryOne('SELECT MAX(last_good_version) from node')[0]
+
+
+def delete_conns(nodeinfo, trans):
+       nodeid = getIdFromInfo(nodeinfo,trans)
+       l = NodePair.select(connection=trans)
        for i in l:
                if i.node1.id == nodeid or i.node2.id == nodeid:
                        i.delete(i.id)

-def exists(nodeinfo):
-       result = Node.select(Node.q.identity == nodeinfo['identity'])
+def exists(nodeinfo,trans):
+       result = Node.select(Node.q.identity == 
nodeinfo['identity'],connection=trans)

        if list(result):
                return True
@@ -68,12 +75,12 @@
                return False


-def refresh(nodeinfo):
-       if exists(nodeinfo):
-               n = Node.select(Node.q.identity == nodeinfo['identity'])[0]
+def refresh(nodeinfo,trans):
+       if exists(nodeinfo,trans):
+               n = Node.select(Node.q.identity == 
nodeinfo['identity'],connection=trans)[0]

        else:
-               n = Node(identity=nodeinfo['identity'])
+               n = Node(identity=nodeinfo['identity'],connection=trans)

        for key in nodeinfo.keys():
                setattr(n, key, nodeinfo[key])
@@ -81,18 +88,18 @@
        n.lastUpdate = datetime.datetime.now()


-def getIdFromInfo(nodeinfo):
-       n = Node.select(Node.q.identity == nodeinfo['identity'] )
+def getIdFromInfo(nodeinfo, trans):
+       n = Node.select(Node.q.identity == 
nodeinfo['identity'],connection=trans )
        if list(n):
                return list(n)[0].id
        else:
                raise Exception('No such node!')

-def insert(nodeinfo1, nodeinfo2, backoff1={}, backoff2={}):
+def insert(nodeinfo1, nodeinfo2, backoff1={}, backoff2={},trans=con):

         #NodePair.createTable( ifNotExists=True)
-       node1 = getIdFromInfo(nodeinfo1)
-       node2 = getIdFromInfo(nodeinfo2)
+       node1 = getIdFromInfo(nodeinfo1,trans)
+       node2 = getIdFromInfo(nodeinfo2,trans)
                         #sorting
         if node1 > node2:
                temp=node2
@@ -104,7 +111,7 @@
                backoff1=btemp


-       bla = NodePair( node1=node1, node2=node2 )
+       bla = NodePair( node1=node1, node2=node2,connection=trans )
        if backoff1:
                bla.backoffmax_node1 = backoff1['backoffmax']
                bla.backoffcur_node1 = backoff1['backoffcur']

Modified: trunk/apps/freeviz/gen.py
===================================================================
--- trunk/apps/freeviz/gen.py   2006-01-08 00:36:15 UTC (rev 7812)
+++ trunk/apps/freeviz/gen.py   2006-01-08 02:21:34 UTC (rev 7813)
@@ -7,11 +7,10 @@
 import re
 import handler
 import math
-import time
+from time import sleep
 import histogram

 import db
-import sqlobject
 from datetime import *


@@ -62,47 +61,35 @@
                 #                break
                #return index * chunk

-       def get_activenodes(self):
-               nodes = list(db.Node.select())
-               if not nodes:
-                       print 'got empty nodes'
-               active_nodes=[]
-
-               for node in nodes:
-                       if not handler.inactive(node):
-                               active_nodes.append(node)
-
-               return active_nodes
-
        def find_and_addswapedge(self, g, nodes, identity, nstate):

                oldidentities=[]

                for okey in self.oldnstate.keys():
-                       if oldstate[okey][0] == oldlocation:
+                       if oldnstate[okey][0] == nstate[identity][0]:
                                oldidentities.append(okey)

                #not eindeutig!!
                if len(oldidentities) != 1 :
                        print("name not eindeutig!")    
+                       return

                oldidentity = oldidentities[0]
                print "showing edge between %s and %s" % ( nstate[identity][1], 
nstate[oldidentity][1])
-               gedge=pydot.Gedge(nstate[identity][1], nstate[oldidentity][1], 
label='swap', taillabel='nstate[identity][0]'
-                                       , headlabel='nstate[oldidentity][0]', 
arrowtail='vee', arrowhead='vee'  )
+               gedge=pydot.Edge(nstate[identity][1], nstate[oldidentity][1], 
label='swap', 
+                                       taillabel='%s' % nstate[identity][0],
+                                       headlabel='%s' %nstate[oldidentity][0], 
arrowtail='vee', arrowhead='vee'  )

-               g.add_ege(gedge)
+               g.add_edge(gedge)

-       def gentopology(self):
+       def gentopology(self,trans):
                #NodePair.createTable( ifNotExists=True )
-               node_pairs = list(db.NodePair.select())
+               node_pairs = list(db.NodePair.select(connection=trans))
                if not node_pairs:
                        print "node_pairs is empty"
-               nodes = list( self.get_activenodes())
-               while not nodes:
+               nodes = list( handler.get_activenodes(trans))
+               if not nodes:
                        print "got empty active nodes list!"
-                       time.sleep(1)
-                       nodes = list( self.get_activenodes())

                #number of edges and nodes in grapgh
                nnum=len(nodes)
@@ -113,7 +100,7 @@
                        print "got empty nstate list"

                g=pydot.Dot(type='digraph', labelloc='tl', label='Nodes: %s, 
Edges: %s, Time: %s' % (nnum, enum, datetime.now())  )
-               lastgoodver = db.getLastGoodVer()
+               lastgoodver = db.getLastGoodVer(trans)

                #counts edges for a node        
                edge_count={}
@@ -190,7 +177,7 @@
                        for identity in nstate.keys():
                                if identity in self.oldnstate:
                                        if self.oldnstate[identity] != 
nstate[identity]:
-                                               print('location swap detected')
+                                               print('\nlocation swap 
detected!!!!!!!!!!!!!!!!!!!!!!\n')
                                                self.find_and_addswapedge(g, 
nodes, identity, nstate) 
                else:
                        print "oldnstate empty!"
@@ -213,10 +200,21 @@
        #       </html>
        #       """
 oldnstate={}
+if len(sys.argv) > 1:
+       delay=int(sys.argv[1])
+else:
+       delay=60

-#while(True):
-generator = Generator(oldnstate)
-generator.gentopology()
-histogram.gen()
-oldnstate = generator.oldnstate
-#time.sleep(10)
+print "delay is %d" % delay
+
+while(True):
+       generator = Generator(oldnstate)
+       #STARING TRANS
+       trans=db.get_trans()
+       generator.gentopology(trans)
+       histogram.gen(trans)
+       #COMMITING TRANS
+       trans.commit()
+       del trans
+       oldnstate = generator.oldnstate
+       sleep(delay)

Modified: trunk/apps/freeviz/handler.py
===================================================================
--- trunk/apps/freeviz/handler.py       2006-01-08 00:36:15 UTC (rev 7812)
+++ trunk/apps/freeviz/handler.py       2006-01-08 02:21:34 UTC (rev 7813)
@@ -6,13 +6,21 @@

 def handle(data):
        (nodeinfo, nodeinfos, backoffs)=parser.parse(data)
+
+
+
+
+       #STRARTING TRANSACTION
+       trans = db.get_trans()
+
+
        #deleting first
        if 'identity' in nodeinfo:
-               db.refresh(nodeinfo)
-               db.delete_conns(nodeinfo)
+               db.refresh(nodeinfo,trans)
+               db.delete_conns(nodeinfo,trans)
                if nodeinfos:
                        for nodeinfo2 in nodeinfos:
-                               db.refresh(nodeinfo2)
+                               db.refresh(nodeinfo2,trans)

                                if nodeinfo['identity'] in backoffs:
                                        backoff1 = backoffs[ 
nodeinfo['identity']]
@@ -24,18 +32,21 @@
                                else:
                                        backoff2= {}

-                               db.insert(nodeinfo,nodeinfo2, 
backoff1=backoff1, backoff2=backoff2)
-       check_nodes()
+                               db.insert(nodeinfo,nodeinfo2, 
backoff1=backoff1, backoff2=backoff2,trans=trans)
+       check_nodes(trans)
+       
+       #FINISHING TRANSACTION
+       trans.commit()
+       del trans

-
 #check if the node is up to date, if not remove it from node-pairs
-def check_nodes():
-       nodes = db.Node.select()
+def check_nodes(trans):
+       nodes = db.Node.select(connection=trans)

        for node in nodes:
                if inactive(node):
                        nodeinfo = getInfoFromNode(node)
-                       db.delete_conns(nodeinfo)
+                       db.delete_conns(nodeinfo,trans)


 def inactive(node):
@@ -43,8 +54,8 @@
        return (curtime() - convtime(nodetime) ) > timedelta


-def get_activenodes():
-       nodes = list(db.Node.select())
+def get_activenodes(trans):
+       nodes = list(db.Node.select(connection=trans))
        assert nodes
        active_nodes=[]


Modified: trunk/apps/freeviz/histdata.py
===================================================================
--- trunk/apps/freeviz/histdata.py      2006-01-08 00:36:15 UTC (rev 7812)
+++ trunk/apps/freeviz/histdata.py      2006-01-08 02:21:34 UTC (rev 7813)
@@ -2,13 +2,13 @@
 import handler
 #returns the list of the form 
 #[({'identity':'dasdas','location':'0.31231'},{:,:}),...]
-def get():
+def get(trans):
        data=[]
-       connections = list(db.NodePair.select())
+       connections = list(db.NodePair.select(connection=trans))


-       nodes = list(handler.get_activenodes())
-       lastgoodver = db.getLastGoodVer()
+       nodes = list(handler.get_activenodes(trans))
+       lastgoodver = db.getLastGoodVer(trans)

        goodnodes=[]
        for node in nodes:

Modified: trunk/apps/freeviz/histogram.py
===================================================================
--- trunk/apps/freeviz/histogram.py     2006-01-08 00:36:15 UTC (rev 7812)
+++ trunk/apps/freeviz/histogram.py     2006-01-08 02:21:34 UTC (rev 7813)
@@ -11,8 +11,8 @@



-def gen():
-       links = histdata.get()
+def gen(trans):
+       links = histdata.get(trans)
        chunk=0.5 / float(precision)

        histogram=[]


Reply via email to