Author: sleon
Date: 2006-01-11 23:40:32 +0000 (Wed, 11 Jan 2006)
New Revision: 7839

Added:
   trunk/apps/freeviz/ciclegraph.py
   trunk/apps/freeviz/watchdog.sh
Modified:
   trunk/apps/freeviz/db.py
   trunk/apps/freeviz/gen.py
   trunk/apps/freeviz/handler.py
   trunk/apps/freeviz/server.py
Log:
cicle graph and watchdog script

Added: trunk/apps/freeviz/ciclegraph.py
===================================================================
--- trunk/apps/freeviz/ciclegraph.py    2006-01-11 17:24:48 UTC (rev 7838)
+++ trunk/apps/freeviz/ciclegraph.py    2006-01-11 23:40:32 UTC (rev 7839)
@@ -0,0 +1,32 @@
+import Image
+import ImageDraw
+import math
+import handle
+from nodes import nodes
+
+nodes = handle.get_activenodes
+
+im = Image.new('RGB',(800,800))
+da = ImageDraw.Draw(im)
+da.fill='red'
+
+
+#big circle
+
+
+#CENTER IS 220x220
+#rad is 240
+da.rectangle((0,0,im.size[0],im.size[1]),fill='white')
+#da.chord((20,20,460,460),0,360, outline='red'   )
+r = im.size[0]/2 - 20
+u = 10
+
+#for i in nodes:
+for node in nodes:
+       j =  node.location
+       x = int(r * math.cos(j*2*math.pi))
+       y = int(r * math.sin(j*2*math.pi))
+       da.chord((x - 10 + im.size[0]/2, y-10 + 
im.size[1]/2,x+10+im.size[0]/2,y+10+im.size[1]/2),0,360,outline='red')
+
+
+im.save('/tmp/ciclegraph.png','PNG')

Modified: trunk/apps/freeviz/db.py
===================================================================
--- trunk/apps/freeviz/db.py    2006-01-11 17:24:48 UTC (rev 7838)
+++ trunk/apps/freeviz/db.py    2006-01-11 23:40:32 UTC (rev 7839)
@@ -5,7 +5,7 @@
 #mport pydot


-uri = 'postgres://tiwsted:severe at 127.0.0.1/twisted?cache=False'
+uri = 'mysql://twisted:severe at 127.0.0.1/twisted?cache=False'
 #con = connectionForURI(uri)

 #sqlhub.processConnection = con
@@ -71,6 +71,9 @@

        return hub.getConnection()

+def close_con(con):
+       #dbconnection.DBAPI.releaseConnection(con, explicit=True)
+       del hub.threadConnection
 def getLastGoodVer(trans):
        return trans.queryOne('SELECT MAX(last_good_version) from node')[0]


Modified: trunk/apps/freeviz/gen.py
===================================================================
--- trunk/apps/freeviz/gen.py   2006-01-11 17:24:48 UTC (rev 7838)
+++ trunk/apps/freeviz/gen.py   2006-01-11 23:40:32 UTC (rev 7839)
@@ -24,11 +24,12 @@
        #COLORS
        nodeOK='#9dfbb9'
        nodeOUTDATED='#c5ffff'
-#      nodeLCONNS='#f9ffcb'
+       #nodeOUTDATED='#f9ffcb'
 #      nodeLCONNS=nodeOK

        edgeOK='#238500'
        edgeBLOCKED='#ee4a1e'
+       edgeCRITICAL='#c08000'
        defaultSize='3px'
 #      minEdges=3

@@ -76,7 +77,10 @@
                        return

                oldidentity = oldidentities[0]
-               print "showing edge between %s and %s" % ( nstate[identity][1], 
nstate[oldidentity][1])
+               #print "showing edge between %s and %s" % ( 
nstate[identity][1], nstate[oldidentity][1])
+               #emergency
+               if not(identity in nstate and oldidentity in nstate):
+                       return
                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'  )
@@ -159,6 +163,8 @@

                        if node_pair.backoffcur_node1 != '0' or 
node_pair.backoffcur_node2 != '0':
                                edgecolor= self.edgeBLOCKED
+                       elif node_pair.backoffmax_node1 != '5000' or 
node_pair.backoffmax_node2 != '5000':
+                               edgecolor= self.edgeCRITICAL
                        #print "adding %s-%s" % 
(node_pair.node1.name,node_pair.node2.name)
                        gedge = pydot.Edge(node_pair.node1.name , 
node_pair.node2.name, color=edgecolor , fontcolor=edgecolor, 
                                                        label='d: %0.3f' % 
distance, fontsize='9.5',arrowhead='none')
@@ -170,6 +176,12 @@
                                if node_pair.backoffcur_node2 != '0':
                                        gedge.headlabel='%s (%s)' % 
(node_pair.backoffmax_node2, node_pair.backoffcur_node2 ) 
                                        gedge.arrowhead='tee'
+                       elif edgecolor == self.edgeCRITICAL:
+                               if node_pair.backoffmax_node1 != '5000':
+                                       gedge.taillabel='%s' % 
(node_pair.backoffmax_node1)
+                               if node_pair.backoffmax_node2 != '5000':
+                                       gedge.headlabel='%s' % 
(node_pair.backoffmax_node2)
+

                        g.add_edge(gedge)

@@ -213,9 +225,9 @@
        delay=60

 print "delay is %d" % delay
-con = db.get_con()
-trans = con.transaction()
 while(True):
+       con = db.get_con()
+       trans = con.transaction()
        generator = Generator(oldnstate)
        #STARING TRANS
        generator.gentopology(trans)
@@ -223,4 +235,6 @@
        #COMMITING TRANS
        trans.commit()
        oldnstate = generator.oldnstate
+       trans.close()
+       db.close_con(con)
        sleep(delay)

Modified: trunk/apps/freeviz/handler.py
===================================================================
--- trunk/apps/freeviz/handler.py       2006-01-11 17:24:48 UTC (rev 7838)
+++ trunk/apps/freeviz/handler.py       2006-01-11 23:40:32 UTC (rev 7839)
@@ -3,6 +3,7 @@
 import time

 timedelta=360
+
 def handle(data,trans):
        (nodeinfo, nodeinfos, backoffs)=parser.parse(data)


Modified: trunk/apps/freeviz/server.py
===================================================================
--- trunk/apps/freeviz/server.py        2006-01-11 17:24:48 UTC (rev 7838)
+++ trunk/apps/freeviz/server.py        2006-01-11 23:40:32 UTC (rev 7839)
@@ -6,8 +6,8 @@

 PORT=23415
 NRCONS=100
-DELAY=1
-MAXCONNS=10
+DELAY=10
+MAXCONNS=300


 class Base(threading.Thread):
@@ -24,10 +24,12 @@
                trans = con.transaction()
                while 1:
                        Base.vlock.acquire()
+                       print "Hanlding harvested data"
                        for chunk in Base.chunks:
                                handler.handle(chunk,trans)
                        if Base.chunks: print "COMMITED"
                        Base.chunks=[]
+                       print "Done"
                        Base.vlock.release()
                        time.sleep(DELAY)                       

@@ -45,6 +47,7 @@
                        k = self.clnsock.recv(1024)
                        if k == '': break
                        self.chunk+=k
+               self.clnsock.shutdown(socket.SHUT_RDWR)
                self.clnsock.close()
                Base.vlock.acquire()
                Base.chunks.append(self.chunk)

Added: trunk/apps/freeviz/watchdog.sh
===================================================================
--- trunk/apps/freeviz/watchdog.sh      2006-01-11 17:24:48 UTC (rev 7838)
+++ trunk/apps/freeviz/watchdog.sh      2006-01-11 23:40:32 UTC (rev 7839)
@@ -0,0 +1,4 @@
+MAXTHREADS=100
+DELAY=10
+
+while (true);do A=$(netstat -atlnp  2>/dev/null |grep python|grep -c 
CLOSE_WAIT); if (($A > $MAXTHREADS ));then (printf "warning too many 
threads"|mail -s "WARNING freeviz" sleon) ; fi;sleep $DELAY;done


Property changes on: trunk/apps/freeviz/watchdog.sh
___________________________________________________________________
Name: svn:executable
   + *


Reply via email to