[svn] commit: r2219 - in /experiments/fujiwara-stats: configure.ac src/bin/stats/statsd.py src/bin/stats/statsd.py.in src/bin/stats/test/example_agent.py.in src/bin/stats/test/run_example_agent.sh.in
BIND 10 source code commits
bind10-changes at lists.isc.org
Tue Jun 22 11:48:04 UTC 2010
Author: fujiwara
Date: Tue Jun 22 11:48:04 2010
New Revision: 2219
Log:
Two session test for statistics program
Added:
experiments/fujiwara-stats/src/bin/stats/test/run_example_agent.sh.in (with props)
Modified:
experiments/fujiwara-stats/configure.ac
experiments/fujiwara-stats/src/bin/stats/statsd.py
experiments/fujiwara-stats/src/bin/stats/statsd.py.in
experiments/fujiwara-stats/src/bin/stats/test/example_agent.py.in
Modified: experiments/fujiwara-stats/configure.ac
==============================================================================
--- experiments/fujiwara-stats/configure.ac (original)
+++ experiments/fujiwara-stats/configure.ac Tue Jun 22 11:48:04 2010
@@ -434,6 +434,7 @@
src/bin/bind10/tests/bind10_test
src/bin/bind10/run_bind10.sh
src/bin/stats/run_statsd.sh
+ src/bin/stats/test/run_example_agent.sh
src/bin/bindctl/run_bindctl.sh
src/bin/bindctl/bindctl-source.py
src/bin/bindctl/tests/bindctl_test
@@ -460,6 +461,7 @@
chmod +x src/bin/xfrout/run_b10-xfrout.sh
chmod +x src/bin/bind10/run_bind10.sh
chmod +x src/bin/stats/run_statsd.sh
+ chmod +x src/bin/stats/test/run_example_agent.sh
chmod +x src/bin/cmdctl/tests/cmdctl_test
chmod +x src/bin/xfrin/tests/xfrin_test
chmod +x src/bin/xfrout/tests/xfrout_test
Modified: experiments/fujiwara-stats/src/bin/stats/statsd.py
==============================================================================
--- experiments/fujiwara-stats/src/bin/stats/statsd.py (original)
+++ experiments/fujiwara-stats/src/bin/stats/statsd.py Tue Jun 22 11:48:04 2010
@@ -41,6 +41,8 @@
import re
import isc.cc
+from isc.cc import Session
+
__version__ = "v20100602"
##############################################################
@@ -59,20 +61,20 @@
self.output_interval = 10
self.output_path = '/tmp/stats.xml'
self.output_generation = 100
- self.myname = 'statistics'
+ self.myname = 'statsd'
self.verbose = verbose
self.shutdown = 0
self.wrote_time = 0
- def stats_update(self, arg):
+ def stats_update(self, msg, env):
if self.debug:
- print ("[statsd] stats_update: "+str(arg))
- if (not ('component' in arg and 'from' in arg)):
+ print ("[statsd] stats_update: "+str(msg))
+ if (not ('component' in msg and 'from' in msg)):
return 1
- self.stats[arg['component']] = arg
+ self.stats[msg['component']] = msg
if self.debug:
- print ("received from=",arg['from'], " component=", arg['component'])
- print (str(arg))
+ print ("received from=",msg['from'], " component=", msg['component'])
+ print (str(msg))
return 0
#if last_recvd_time > wrote_time:
# if debug:
@@ -95,12 +97,7 @@
answer = isc.config.ccsession.create_answer(1, "bad command")
else:
cmd = command
- if cmd == "stats_update":
- result = self.stats_update(args)
- if self.debug:
- print ("self.stats_update returned "+str(result))
- answer = isc.config.ccsession.create_answer(result)
- elif cmd == "shutdown":
+ if cmd == "shutdown":
if self.debug:
print ("[statsd] shutdown")
self.shutdown = 1
@@ -120,6 +117,8 @@
print (item + ": " + str(full_config[item]))
answer = isc.config.ccsession.create_answer(0)
else:
+ if self.debug:
+ print ("[statsd:command] unknown command: "+str(command))
answer = isc.config.ccsession.create_answer(1, "Unknown command")
if self.debug:
print ("answer="+str(answer))
@@ -131,12 +130,24 @@
print ("statsd: Statistics.main()")
self.ccs = isc.config.ModuleCCSession(SPECFILE_LOCATION, self.config_handler, self.command_handler)
self.ccs.start()
+ print ("config lname=",self.ccs._session.lname)
if self.debug:
print ("[statsd] ccsession started")
+ self.session = Session()
+ print ("another lname=",self.session.lname)
+ self.session.group_subscribe("statistics", "*")
+ wait = None
while not self.shutdown:
if self.debug:
print ("loop")
- self.ccs.check_command()
+ r,w,e = select.select([self.session._socket, self.ccs._session._socket],[],[], wait)
+ for sock in r:
+ if sock == self.session._socket:
+ data,envelope = self.session.group_recvmsg(True)
+ self.stats_update(data,envelope)
+ elif sock == self.ccs._session._socket:
+ self.ccs.check_command(True)
+
exit (1)
def main():
Modified: experiments/fujiwara-stats/src/bin/stats/statsd.py.in
==============================================================================
--- experiments/fujiwara-stats/src/bin/stats/statsd.py.in (original)
+++ experiments/fujiwara-stats/src/bin/stats/statsd.py.in Tue Jun 22 11:48:04 2010
@@ -41,6 +41,8 @@
import re
import isc.cc
+from isc.cc import Session
+
__version__ = "v20100602"
##############################################################
@@ -54,25 +56,25 @@
"""Statistics Class."""
def __init__(self, verbose = True):
- self.debug = 1
+ self.debug = 0
self.stats = {}
self.output_interval = 10
self.output_path = '/tmp/stats.xml'
self.output_generation = 100
- self.myname = 'statistics'
+ self.myname = 'statsd'
self.verbose = verbose
self.shutdown = 0
self.wrote_time = 0
- def stats_update(self, arg):
+ def stats_update(self, msg, env):
if self.debug:
- print ("[statsd] stats_update: "+str(arg))
- if (not ('component' in arg and 'from' in arg)):
+ print ("[statsd] stats_update: "+str(msg))
+ if (not ('component' in msg and 'from' in msg)):
return 1
- self.stats[arg['component']] = arg
+ self.stats[msg['component']] = msg
if self.debug:
- print ("received from=",arg['from'], " component=", arg['component'])
- print (str(arg))
+ print ("received from=",msg['from'], " component=", msg['component'])
+ print (str(msg))
return 0
#if last_recvd_time > wrote_time:
# if debug:
@@ -95,12 +97,7 @@
answer = isc.config.ccsession.create_answer(1, "bad command")
else:
cmd = command
- if cmd == "stats_update":
- result = self.stats_update(args)
- if self.debug:
- print ("self.stats_update returned "+str(result))
- answer = isc.config.ccsession.create_answer(result)
- elif cmd == "shutdown":
+ if cmd == "shutdown":
if self.debug:
print ("[statsd] shutdown")
self.shutdown = 1
@@ -120,6 +117,8 @@
print (item + ": " + str(full_config[item]))
answer = isc.config.ccsession.create_answer(0)
else:
+ if self.debug:
+ print ("[statsd:command] unknown command: "+str(command))
answer = isc.config.ccsession.create_answer(1, "Unknown command")
if self.debug:
print ("answer="+str(answer))
@@ -131,12 +130,24 @@
print ("statsd: Statistics.main()")
self.ccs = isc.config.ModuleCCSession(SPECFILE_LOCATION, self.config_handler, self.command_handler)
self.ccs.start()
+ print ("config lname=",self.ccs._session.lname)
if self.debug:
print ("[statsd] ccsession started")
+ self.session = Session()
+ print ("another lname=",self.session.lname)
+ self.session.group_subscribe("statistics", "*")
+ wait = None
while not self.shutdown:
if self.debug:
print ("loop")
- self.ccs.check_command()
+ r,w,e = select.select([self.session._socket, self.ccs._session._socket],[],[], wait)
+ for sock in r:
+ if sock == self.session._socket:
+ data,envelope = self.session.group_recvmsg(True)
+ self.stats_update(data,envelope)
+ elif sock == self.ccs._session._socket:
+ self.ccs.check_command(True)
+
exit (1)
def main():
Modified: experiments/fujiwara-stats/src/bin/stats/test/example_agent.py.in
==============================================================================
--- experiments/fujiwara-stats/src/bin/stats/test/example_agent.py.in (original)
+++ experiments/fujiwara-stats/src/bin/stats/test/example_agent.py.in Tue Jun 22 11:48:04 2010
@@ -6,13 +6,21 @@
# One command is available
# "Boss" group: "shutdown"
+import os
import isc
import time
import select
import random
step_time = 3
-statgroup = "statsd"
+statgroup = "statistics"
+
+if "B10_FROM_SOURCE" in os.environ:
+ SPECFILE_LOCATION = os.environ["B10_FROM_SOURCE"] + "/src/bin/stats/statsd.s pec"
+else:
+ PREFIX = "@prefix@"
+ DATAROOTDIR = "@datarootdir@"
+ SPECFILE_LOCATION = "@datadir@/@PACKAGE@/statsd.spec".replace("${datarootdir}", DATAROOTDIR).replace("${prefix}", PREFIX)
cc = isc.cc.Session()
print (cc.lname)
@@ -47,7 +55,7 @@
last_sent = sent;
sent = time.time();
msg = {'component':'auth', 'from':cc.lname, 'version':1, 'timestamp':time.time(),'stats':{'NSSTATDESC':NSSTATDESC,'RESSTATDESC':RESSTATDESC,'SOCKSTATDESC':SOCKSTATDESC,'SYSSTATDESC':SYSSTATDESC}}
- print (cc.group_sendmsg({'command':['stats_update', msg]}, "statsd"))
+ print (cc.group_sendmsg(msg, statgroup))
wait = last_sent + step_time - time.time()
if wait < 0:
wait = step_time
More information about the bind10-changes
mailing list