Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

test_evt_filters.py

00001 #!/usr/local/bin/python
00002 #
00003 #                               Copyright 2002
00004 #                                     by
00005 #                        The Board of Trustees of the
00006 #                     Leland Stanford Junior University.
00007 #                            All rights reserved.
00008 #
00009 
00010 """Test of callbacks in OES
00011 """
00012 __facility__ = "Online"
00013 __abstract__ = "Test script for event taking modes in FSW"
00014 __author__   = "Jim Panetta <panetta@slac.stanford.edu> SLAC - GLAST I&T/Online"
00015 __date__     = ("$Date: 2005/03/17 22:17:12 $").split(' ')[1]
00016 __created__  = "040908"
00017 __version__  = "$Revision: 1.7 $"
00018 __release__  = "$Name: R04-12-00 $"
00019 __credits__  = "SLAC"
00020 
00021 import LATTE.copyright_SLAC
00022 
00023 from LATTE.client.gOptions import Options
00024 from LATTE.client.gCmdCli  import CmdCli
00025 from LATTE.database.gLAT   import GLAT
00026 from LATTE.database.gOCS   import GOCS
00027 from LATTE.client.gEvtCli  import EvtCli
00028 from LATTE.database.gXBR   import GXBRD
00029 from LATTE.database.gPlumber import Plumber
00030 from LATTE.tools.taskEngine import TaskEngine
00031 
00032 from time import sleep
00033 import time
00034 import os
00035 import gc
00036 import math
00037 import logging as log
00038 import threading
00039 
00040 from LATTE.tests.apps.support.SimpleGasuExample import *
00041 from LATTE.trigger.rcTrgFunctions import rcTrgInjectMarker
00042 
00043 
00044 aem     = None
00045 trigger = None
00046 ocs     = None
00047 task    = None
00048 ec      = None
00049 
00050 def test(cmd=None, debug=0, count=10, disconnectOnExit=1):
00051   global aem, trigger, ec, ocs, task
00052   gc.disable()
00053   
00054   options = Options(['server', 'schema'],
00055                     ['fswmsglevel', 'evtdebug'],
00056                     ['initforce', 'ocsverbose', 'nocommander'])
00057   try:
00058     options.parse()
00059   except Exception, msg:
00060     options.usage(str(msg))
00061     return
00062     
00063   if options.fswmsglevel is not None:
00064     msglevel = int(options.fswmsglevel)
00065   else:
00066     msglevel = 3
00067   verbose = (options.ocsverbose != None)
00068   force = (options.initforce != None)
00069   commander = not(options.nocommander != None)
00070   
00071   task = TaskEngine("TestEngine")
00072   task.start()
00073   
00074   if cmd == None:
00075     cmd = CmdCli()
00076     cmd.connect(options.server)
00077     
00078   if options.evtdebug is not None:
00079     debug = options.evtdebug
00080   ec = EvtCli(debug)
00081   ec.setTimeoutEnabled(True)
00082   ec.connect(options.server, force)
00083   ec.socket().settimeout(1)
00084   
00085   lat = GLAT(cmd)
00086   lat.readSchema(options.schema)
00087 
00088   xbrd = GXBRD(cmd)
00089   xbrd = xbrd.readSchema(options.schema)
00090   
00091   plumber = Plumber(lat, xbrd)
00092   plumber.initialize(msglevel, verbose, force, commander)  
00093   
00094   lat.applyConfig()
00095   
00096   try:
00097     lat.LCB.setEvtEnable(True)
00098   except Exception, e:
00099     log.error(e)
00100     raise
00101     
00102   ocs = GOCS(cmd)
00103   ocs.evtHandlerSetVerbosity(0xf)
00104 
00105   trigger = SimpleGasuExample()
00106   trigger.GEM(lat.GEM)
00107   trigger.commit()
00108   trigger.enable()
00109 
00110   cnt=0
00111   start = time.time()
00112   
00113   nTest = 1
00114   
00115   testEHSendAll(nTest, count);             nTest += 1
00116   testEHSendErrors(nTest, count);          nTest += 1
00117   testEHSendNothing(nTest, count);         nTest += 1
00118   testEHSendPrescale(nTest, count, 0);     nTest += 1
00119   testEHSendPrescale(nTest, count, 2);     nTest += 1
00120   testEHSendPrescale(nTest, count, 0);     nTest += 1
00121   testEHFilterTkrHits(nTest, count, 0x1);  nTest += 1
00122   testEHSendAcd(nTest, count, 5, 0);       nTest += 1
00123   testEHSendAcd(nTest, count, 5, 2);       nTest += 1
00124   testEHSendAcd(nTest, count, 5, 0);       nTest += 1
00125   testEHSendAll(nTest, count);             nTest += 1
00126   
00127   trigger.disable()
00128   ec.disconnect()
00129   task.shutdown()
00130 
00131   if disconnectOnExit == 1:
00132     cmd.disconnect()
00133 
00134 def countEvents(count, printSize=False):
00135   lastEvt = -1
00136   nSeen = 0
00137   for i in range(count):
00138     trigger.solicit()
00139     try:
00140       ec.readEvent()
00141       summary = ec.evt.summary
00142       # Construct event number
00143       evtNumber = (summary.evNumber << 2) | (summary.tag)
00144       nSeen += 1
00145       lastEvt = evtNumber
00146       if printSize:
00147         print "N: %d, Event number %x size = %X, summary=%x" % \
00148            (nSeen, evtNumber, len(ec.dat), summary.ui)
00149     except IOError, e:
00150       pass
00151       # print e
00152   return nSeen
00153 
00154 def testEHSendErrors(test, count):
00155   print "test %d:  Take %d events, using evtHandlerSendErrorsOnly" % (test, count)
00156   trigger.disable()
00157   ocs.evtHandlerSendErrorsOnly()
00158   trigger.commit()
00159   trigger.enable()
00160   cnt = countEvents(count)
00161   print "evtHandlerSendErrorsOnly: Sent %d events, saw %d" % (count, cnt)
00162   if (cnt != 0):
00163     print "      FAILED"
00164   else:
00165     print "      PASSED"
00166 
00167 def testEHSendNothing(test, count):
00168   print "test %d:  Take %d events, using evtHandlerSendNothing" % (test, count)
00169   trigger.disable()
00170   ocs.evtHandlerSendNothing()
00171   trigger.commit()
00172   trigger.enable()
00173   cnt = countEvents(count)
00174   print "evtHandlerSendNothing: Sent %d events, saw %d" % (count, cnt)
00175   if (cnt != 0):
00176     print "      FAILED"
00177   else:
00178     print "      PASSED"
00179 
00180 def testEHSendPrescale(test, count, prescale):
00181   effPre = prescale+1
00182   print "test %d:  Take %d events, using evtHandlerSendPrescaled(%d)" % (test, count*effPre, prescale)
00183   trigger.disable()
00184   ocs.evtHandlerSendPrescaled(prescale)
00185   trigger.commit()
00186   trigger.enable()
00187   cnt = countEvents(count*effPre)
00188   print "evtHandlerSendPrescaled(%d): Sent %d events, saw %d" % (prescale, count*effPre, cnt)
00189   if (cnt != count):
00190     print "      FAILED, expected %d" % count
00191   else:
00192     print "      PASSED"
00193 
00194 def testEHFilterTkrHits(test, count, prescale):
00195   effPre = prescale+1
00196   print "test %d:  Take %d events, using evtHandlerFilterTkrHits(%d)" % (test, count*effPre, prescale)
00197   trigger.disable()
00198   ocs.evtHandlerFilterTkrHits(lowThreshold = 10, highThreshold = 0xffffffffL, prescale=prescale)
00199   trigger.commit()
00200   trigger.enable()
00201   cnt = countEvents(count*effPre)
00202   print "testEHFilterTkrHits(%d): Sent %d events, saw %d" % (prescale, count*effPre, cnt)
00203   if (cnt != count):
00204     print "      FAILED, expected %d" % count
00205   else:
00206     print "      PASSED"
00207 
00208 def testEHSendAcd(test, count, marker, prescale):
00209   effPre = prescale+1
00210   print "test %d:  Take %d events, using evtHandlerSendAcdScalers(%d,%d)" % \
00211         (test, count*effPre, marker, prescale)
00212         
00213   trigger.disable()
00214   ocs.evtHandlerSendAcdScalers(marker, prescale)
00215   trigger.commit()
00216   trigger.enable()
00217   
00218   cnt = countEvents(count*effPre)
00219   evt = threading.Event()
00220   task.spawn(trigger.shut, evt)
00221   time.sleep(0.1)
00222   evt.set()
00223   
00224   ec.readEvent()
00225   datalen = len(ec.dat)
00226       
00227   print "evtHandlerSendAcdScalers(%d,%d): Sent %d events, saw %d" % \
00228         (marker, prescale,count*effPre, cnt)
00229   if (cnt != count):
00230     print "      FAILED, expected %d" % count
00231   elif (datalen < 0x4000):
00232     print "      FAILED, ASC event size = 0x%X, < 0x4000" % datalen
00233   else:
00234     print "      PASSED"
00235   time.sleep(1)  # let shut() above finish...
00236 
00237 def testEHSendAll(test, count):
00238   print "test %d:  Take %d events, using evtHandlerSendAll:" % (test, count)
00239   trigger.disable()
00240   ocs.evtHandlerSendAll()
00241   trigger.commit()
00242   trigger.enable()
00243   cnt = countEvents(count)
00244   print "evtHandlerSendAll: Sent %d events, saw %d" % (count, cnt)
00245   if (cnt != count):
00246     print "      FAILED"
00247   else:
00248     print "      PASSED"
00249   
00250 
00251 if __name__ == '__main__':
00252   test()

Generated on Fri Jul 21 13:26:32 2006 for LATTE R04-12-00 by doxygen 1.4.3