[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