Exemple #1
0
    def __init__(self,
                 logger,
                 monitor,
                 debug,
                 dummyval,
                 usethread,
                 ev_quit=None):

        self.logger = logger
        self.debug = debug  # do dubug or not
        self.monitor = monitor  # do monitoring
        self.dummyval = dummyval  # use dummy fits values
        self.usethread = usethread  # use thread

        self.timeout = 0.2  # Q timeout

        self.cmd_end = "END"

        self.aliasVal = guiderfitsheader.getAlias()  # status alias values
        self.keyVal = guiderfitsheader.getKeyVal()

        # fits header template
        self.guiderFitsHeader = guiderfitsheader.guider_fits_header

        # set thread event
        if not ev_quit: self.ev_quit = threading.Event()
        else: self.ev_quit = ev_quit

        # monitor instance
        if self.monitor:
            self.db = Monitor.Minimon('GuiderInt.mon', self.logger)
            self.db.subscribe(self.monitor, ['GuiderInt'], None)

        if not self.dummyval:
            self.svc = ro.remoteObjectProxy('status')
    def setUp(self):
        self.env = environment.MockEnvironment()
        self.env.removeTestDirs()  # just in case
        self.env.makeDirs()
        mysqlarchiver._deleteMySQLArchiveDb()  # just in case
        (self.env.con,self.env.cur) = mysqlarchiver.initMySQLArchiveDb()
        self.framedb = archiver.SimFrameDBint(self.env)
        #import test_archiver
        #self.framedb = test_archiver.SimTestFrameDBint(self.env)
        self.iaq = 'SUKA'
        self.archmon = archiver.ArchiveMonitor(self.framedb,self.env)
        self.archivemgr = archiver.ArchiveMgr(self.framedb,self.archmon, self.env)
        self.framesrcSUKA = self.archivemgr.createFrameSourceA("SUK")
        self.basic = ['SIMPLE','BITPIX','NAXIS','EXTEND','PROP-ID',
                      'FRAMEID','RANDOM','OBCPMODE']
        self.basic.sort()
        self.archivemgr.registerKeywords(self.iaq,self.basic)
        import random
        #randokm.seed(0)  # force a random but repeatable sequence
        self.random = str(random.randrange(1000,1010))
        self.mode = "mode_"+str(random.randrange(0,10))

        self.obcpnum = 9
        self.ev_quit = threading.Event()
        # Timeout value for this task
        self.timeout = 20.0

        # Create monitor and other allocations
        self.monitor_name = 'monitor'
        self.monitor = Monitor.Minimon(self.monitor_name, logger=logger)
        
        myhost = SOSSrpc.get_myhost(short=True)
        statusDict = {}
        
        # Create and start the instrument interface
        self.insint = INSint.ocsInsInt(self.obcpnum, myhost, self.env.ARCH_PROP,
                                       statusDict, db=self.monitor,
                                       logger=logger, ev_quit=self.ev_quit)
        self.insint.start()

        # This is our set of allocations
        self.alloc = Bunch.Bunch(monitor=self.monitor,
                                 INSint9=self.insint,
                                 archmgr=self.archivemgr,
                                 status=None)

        # Create and start SIMCAM
        ocsint = DAQtk.ocsInt(self.obcpnum, logger=logger, ev_quit=self.ev_quit)
        simcam = SIMCAM.SIMCAM(logger, self.env, ev_quit=self.ev_quit)
        self.simcam = SIMCAM.OCSInterface(logger, ev_quit=self.ev_quit,
                                          ocsint=ocsint, instrument=simcam)
        self.simcam.start()

        # Create and start our task manager
        self.tm = TaskManager.TaskManager(logger=logger, internal_allocs=self.alloc)
        self.tm.setAllocs(['monitor', 'INSint9', 'archmgr'])
        self.tm.start()
    def setUp(self):
        import rpc
        
        self.ev_quit = threading.Event()

        # Create monitor and other allocations
        self.monitor = Monitor.Minimon(TestTCSCmds.monitorName, logger)

#
#        commandManager = CommandManager.CommandManager(None)
#        commandSender  = CommandManager.CommandSender(commandManager=commandManager,
#                                            timeout=0.1,
#                                            host='localhost',
#                                            prog=0x20000011,
#                                            uid=CommandManager.TCS_UID,
#                                            gid=CommandManager.TCS_GID )
#        #humm...
#        commandManager.commandQueue = commandSender.commandQueue
#        commandReceiver = CommandManager.ReplyReceiver(host="",
#                                            prog=0x20000012,
#                                            vers=1,
#                                            port=0,
#                                            commandManager=commandManager)

        commandManager  = TCSintTestCase.MockCommandManager()
        commandManager.mockResult = True
        commandSender   = TCSintTestCase.MockTCSClient()
        commandReceiver = TCSintTestCase.MockReplyReceiver(rpc.Packer(), 
                                                           rpc.Unpacker('\x00\x00\x00=CEOBS%TSC%00002006020719514370028000005930020000000COMPLETE%%\x00\x00\x00'), 
                                                           commandManager)
        ddSequenceGenerator = TCSint.FakeSequenceGenerator()
        
        self.tCSint   = TCSint.TCSint(self.monitor,
                                      commandManager, 
                                      commandSender, 
                                      commandReceiver, 
                                      ddSequenceGenerator)

        self.tCSint.start()

        self.alloc = Bunch.Bunch(monitor=self.monitor,
                                 TSC=self.tCSint,
                                 status=None)

        # Create and start our task manager
        self.tm = TaskManager.TaskManager(logger=logger, ev_quit=self.ev_quit,
                                          internal_allocs=self.alloc)
        self.tm.setAllocs([TestTCSCmds.monitorName, 
                           TestTCSCmds.intName])
        self.tm.start()
Exemple #4
0
 def setup(self):
     self.minimon = Monitor.Minimon('mymon',
                                    self.logger,
                                    ev_quit=self.ev_quit)
     self.minimon.start(wait=True)
     tp = self.minimon.get_threadPool()
     self.soss = INSint.ocsInsInt(self.obcpnum,
                                  self.obcphost,
                                  '/tmp',
                                  self.statusObj,
                                  ev_quit=self.ev_quit,
                                  interfaces=('cmd', ),
                                  db=self.minimon,
                                  logger=self.logger,
                                  threadPool=tp)
     self.soss.start(wait=True)
    def __init__(self, logger, svcname, monitor, debug, port, usethread=False):

        # Superclass constructor
        #self.guider=GuiderSaveFrame(debug=False, monitor=monitor, svcname=svcname)
        ro.remoteObjectServer.__init__(self,
                                       svcname=svcname,
                                       port=port,
                                       logger=logger,
                                       usethread=usethread)

        self.logger = logger
        self.debug = debug
        self.monitor = monitor

        if self.monitor:
            self.db = Monitor.Minimon(monSvcName, self.logger)
            self.db.subscribe(self.monitor, (monChannel), (Monitor.TWO_WAY))
    def setUp(self):
        self.env = environment.MockEnvironment()
        self.env.removeTestDirs()  # just in case
        self.env.makeDirs()
        self.obcpnum = 9
        self.ev_quit = threading.Event()

        # Create monitor and other allocations
        self.monitor_name = 'monitor'
        self.monitor = Monitor.Minimon(self.monitor_name, logger)
        
        myhost = SOSSrpc.get_myhost(short=True)

        # Create and start STARS simulator
        self.stars = STARSint.STARSsimulator(logger=logger, ev_quit=self.ev_quit)
        # Tell STARS how to contact us to copy files
        STARSint.add_transferParams('*',
                                    transfermethod='ssh',
                                    raidpath=self.env.ARCH_PATH,
                                    #username=os.getlogin(),
                                    username=os.environ['LOGNAME'],
                                    password='******')
        
        self.stars.start()

        # Create and start the STARS interface
        self.starsint = STARSint.STARSinterface(starshost=myhost,
                                                db=self.monitor, logger=logger,
                                                ev_quit=self.ev_quit)
        self.starsint.start()

        # This is our set of allocations
        self.alloc = Bunch.Bunch(monitor=self.monitor,
                                 STARSint=self.starsint,
                                 status=None)

        # Create and start our task manager
        self.tm = TaskManager.TaskManager(logger=logger, ev_quit=self.ev_quit,
                                          internal_allocs=self.alloc)
        self.tm.setAllocs(['monitor', 'STARSint'])
        self.tm.start()
    def setUp(self):
        self.env = environment.MockEnvironment()
        self.env.removeTestDirs()  # just in case
        self.env.makeDirs()
        self.obcpnum = 9
        self.fmtstr = 'EXEC SIMCAM FITS_FILE MOTOR=%(motor)s FRAME_NO=%(frame_no)s DELAY=%(delay)f'
        self.ev_quit = threading.Event()

        # Create monitor and other allocations
        self.monitor_name = 'monitor'
        self.monitor = Monitor.Minimon(self.monitor_name, logger)
        
        myhost = SOSSrpc.get_myhost(short=True)
        statusDict = {}
        
        # Create and start the instrument interface
        self.insint = INSint.ocsInsInt(self.obcpnum, myhost, self.env.ARCH_PROP,
                                       statusDict, db=self.monitor,
                                       logger=logger, ev_quit=self.ev_quit)
        self.insint.start()

        # This is our set of allocations
        self.alloc = Bunch.Bunch(monitor=self.monitor,
                                 INSint9=self.insint,
                                 status=None)

        # Create and start SIMCAM
        ocsint = DAQtk.ocsInt(self.obcpnum, logger=logger, ev_quit=self.ev_quit)
        self.simcam = SIMCAM.Instrument(logger, ev_quit=self.ev_quit,
                                        ocsint=ocsint, allowNoPara=True,
                                        env=self.env)
        self.simcam.loadPersonality('SIMCAM')
        #self.simcam.loadParaBuf(fits_file_para)
        self.simcam.start()

        # Create and start our task manager
        self.tm = TaskManager.TaskManager(logger=logger, ev_quit=self.ev_quit,
                                          internal_allocs=self.alloc)
        self.tm.setAllocs(['monitor', 'INSint9'])
        self.tm.start()
Exemple #8
0
    def setUp(self):
        self.env = environment.MockEnvironment()
        self.env.removeTestDirs()  # just in case
        self.env.makeDirs()

        self.obcpnum = 9
        self.ev_quit = threading.Event()

        # Create mini monitor for INSint
        self.minimon = Monitor.Minimon('monitor', logger)

        myhost = SOSSrpc.get_myhost(short=True)

        raidpath = self.env.INST_PATH
        statusObj = INSint.FetchStatusWrapper_SOSS({})

        # Create and start the instrument interface
        self.insint = INSint.ocsInsInt(self.obcpnum,
                                       myhost,
                                       raidpath,
                                       statusObj,
                                       db=self.minimon,
                                       logger=logger,
                                       ev_quit=self.ev_quit)
        self.insint.start(wait=True)

        # Create and start SIMCAM
        ocsint = DAQtk.ocsInt(self.obcpnum,
                              logger=logger,
                              ev_quit=self.ev_quit)
        self.simcam = SIMCAM.Instrument(logger,
                                        ev_quit=self.ev_quit,
                                        ocsint=ocsint,
                                        allowNoPara=False,
                                        env=self.env)
        self.simcam.loadPersonality('SIMCAM')
        self.simcam.loadParaBuf(('SIMCAM', 'FITS_FILE'), fits_file_para)
        # Wait until SIMCAM is up and running
        self.simcam.start(wait=True)
Exemple #9
0
    def setUp(self):
        self.env = environment.MockEnvironment()
        self.env.removeTestDirs()  # just in case
        self.env.makeDirs()

        self.ev_quit = threading.Event()

        # Create mini monitor for STARSint
        self.minimon = Monitor.Minimon('monitor', logger)

        myhost = SOSSrpc.get_myhost(short=True)

        # Create and start STARS simulator
        self.starssim = STARSint.STARSsimulator(logger=logger,
                                                ev_quit=self.ev_quit)
        # Tell STARS how to contact us to copy files
        STARSint.add_transferParams(
            '*',
            transfermethod='ssh',
            raidpath=self.env.ARCH_PATH,
            #username=os.getlogin(),
            username=os.environ['LOGNAME'],
            password='******')

        self.starssim.start()

        # Create and start the STARS interface
        self.starsint = STARSint.STARSinterface(starshost=myhost,
                                                db=self.minimon,
                                                logger=logger,
                                                ev_quit=self.ev_quit)
        self.starsint.start()

        # Wait until STARS simulator is up and running
        # TODO: figure out a way to synchronize on the portmapper
        time.sleep(0.0)
    def __init__(self, logger=None, ev_quit=None, dbpath='taskmgr-db',
                 threadPool=None, numthreads=50, internal_allocs=None,
                 identity=serviceName, monitor='monitor'):

        self.myname = identity
        self.myMonName = ('%s.mon' % self.myname)
        self.mainMonName = monitor

        # For instrument information
        self.insconfig = INSconfig()
        
        # Handles for subsystems.  Is set/reset by setAllocs() method.
        self.alloc = Bunch.threadSafeBunch()
        #self.alloc = {}

        # Dictionary-compat object of 'internal' allocations (local objects to
        # the TaskManager process)
        if internal_allocs:
            self.internal_allocs = internal_allocs
        else:
            self.internal_allocs = {}

        self.internal_allocs['taskmgr'] = self

        # If no logger is passed in, create a simple one to stderr
        if not logger:
            logger = logging.getLogger(self.myname)
            logger.setLevel(logging.ERROR)
            fmt = logging.Formatter(ssdlog.STD_FORMAT)
            stderrHdlr = logging.StreamHandler()
            stderrHdlr.setFormatter(fmt)
            logger.addHandler(stderrHdlr)
        self.logger = logger

        if not ev_quit:
            ev_quit = threading.Event()
        self.ev_quit = ev_quit

        self.numthreads = numthreads

        # If we were passed in a thread pool, then use it.  If not,
        # make one.  Record whether we made our own or not.
        if threadPool != None:
            self.threadPool = threadPool
            self.mythreadpool = False

        else:
            self.threadPool = Task.ThreadPool(logger=self.logger,
                                              ev_quit=self.ev_quit,
                                              numthreads=self.numthreads)
            self.mythreadpool = True
        
        # If we were handed a monitor then use it, otherwise create a
        # minimon (will be synced to by external monitor)
        if self.internal_allocs.has_key('monitor'):
            self.monitor = self.internal_allocs['monitor']
            self.mymonitor = False
        else:
            self.monitor = Monitor.Minimon(self.myMonName, self.logger,
                                           useSync=False,
                                           threadPool=self.threadPool)
            self.mymonitor = True
            self.internal_allocs['monitor'] = self.monitor

        # Our list of loaded modules
        self.modules = Bunch.threadSafeBunch()
        # Our directory mapping subsystems and task class names
        self.taskdir = Bunch.threadSafeBunch(caseless=True)
        self.taskdir[''] = Bunch.threadSafeBunch(caseless=True)

        # Generates tags for tasks
        self.tagger = TagGenerator()

        # Used for validating subsystem commands
        self.validator = ParaValidator.ParaValidator(self.logger)

        # For loading skeleton files
        self.sk_bank = sk_interp.skBank(obshome)

        # TODO: this value should be parameterized
        self.channels = [self.myname]

        # Default variables we will share with child tasks
        self.shares = ['logger', 'threadPool', 'alloc', 'shares', 'tagger',
                       'monitor', 'validator', 'channels', 'insconfig',]

        # Top level tag that all my tasks will appear underneath in the monitor
        self.tag = ('mon.tasks.%s' % self.myname)
        self.qtask = {}

        self.topTags = []
Exemple #11
0
    logger = ssdlog.make_logger(svcname, options)

    # Initialize remote objects subsystem.
    try:
        ro.init()

    except ro.remoteObjectError, e:
        logger.error("Error initializing remote objects subsystem: %s" % str(e))
        sys.exit(1)

    svc_started = False
    svr_started = False
    mon_started = False

    # Create mini monitor to reflect to main monitor
    minimon = Monitor.Minimon('%s.mon' % svcname, logger,
                              numthreads=options.numthreads)
    minimon.start()
    mon_started = True

    # publish our information to the specified monitor
    if options.monitor:
        channels = list(monchannels)
        minimon.publish_to(options.monitor, channels, {})

    # Configure logger for logging via our monitor
    if options.logmon:
        minimon.logmon(logger, options.logmon, ['logs'])

    try:
        minimon.start_server(port=options.monport, usethread=True)