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
+ *