Exemplo n.º 1
0
    def __init__(self, _strPluginName, _functXMLin, \
                  _functXMLout=None, _functXMLerr=None, \
                  _iNbThreads=None, _fDelay=1.0, _bVerbose=None, _bDebug=None):
        """
        This is the constructor of the edna plugin launcher.
        
        @param _strPluginName: the name of the ENDA plugin
        @type  _strPluginName: python string
        
        @param _functXMLin: a function taking a path in input and returning the XML string for input in the EDNA plugin. 
        @type  _functXMLin: python function
        
        @param _functXMLOut: a function to be called each time a plugin gas finished his job sucessfully, it should take two option: strXMLin an strXMLout
        @type  _functXMLOut: python function
         
        @param _functXMLErr: a function to be called each time a plugin gas finished his job and crashed, it should take ONE option: strXMLin
        @type  _functXMLErr: python function 
        
        @param _iNbThreads: The number of parallel threads to be used by EDNA, usually the number of Cores of the computer. If 0 or None, the number of cores  will be auto-detected. 
        @type  _iNbThreads: python integer
        
        @param _fDelay: The delay in seconds between two directories analysis 
        @type  _fDelay: python float
        
        @param _bVerbose:  Do you want the EDNA plugin execution to be verbose ?
        @type  _bVerbose: boolean

        @param _bDebug:  Do you want EDNA plugin execution debug output (OBS! very verbose) ?
        @type  _bDebug: boolean
        """

        self.__iNbThreads = EDUtilsParallel.detectNumberOfCPUs(_iNbThreads)
        EDUtilsParallel.initializeNbThread(self.__iNbThreads)
        self.__semaphoreOut = threading.Semaphore()
        self.__semaphoreErr = threading.Semaphore()
        self.__strPluginName = _strPluginName
        self.__functXMLin = _functXMLin
        self.__functXMLout = _functXMLout
        self.__functXMLerr = _functXMLerr
        self.__strCurrWorkDir = os.getcwd()
        self.__strTempDir = None
        self.__listInputPaths = []
        if _bVerbose is not None:
            if _bVerbose:
                EDVerbose.setVerboseDebugOn()
            else:
                EDVerbose.setVerboseOff()
        if _bDebug is not None:
            if _bDebug:
                EDVerbose.setVerboseDebugOn()
            else:
                EDVerbose.setVerboseDebugOff()
        self.__fDelay = _fDelay  #default delay between two directory checks.
        self.__bQuit = False  # To check if we should quit the application
        self.__bIsFirstExecute = True
        signal.signal(signal.SIGTERM, self.handleKill)
        signal.signal(signal.SIGINT, self.handleKill)
Exemplo n.º 2
0
    def __init__(self, _strPluginName, _functXMLin, \
                  _functXMLout=None, _functXMLerr=None, \
                  _iNbThreads=None, _fDelay=1.0, _bVerbose=None, _bDebug=None):
        """
        This is the constructor of the edna plugin launcher.
        
        @param _strPluginName: the name of the ENDA plugin
        @type  _strPluginName: python string
        
        @param _functXMLin: a function taking a path in input and returning the XML string for input in the EDNA plugin. 
        @type  _functXMLin: python function
        
        @param _functXMLOut: a function to be called each time a plugin gas finished his job sucessfully, it should take two option: strXMLin an strXMLout
        @type  _functXMLOut: python function
         
        @param _functXMLErr: a function to be called each time a plugin gas finished his job and crashed, it should take ONE option: strXMLin
        @type  _functXMLErr: python function 
        
        @param _iNbThreads: The number of parallel threads to be used by EDNA, usually the number of Cores of the computer. If 0 or None, the number of cores  will be auto-detected. 
        @type  _iNbThreads: python integer
        
        @param _fDelay: The delay in seconds between two directories analysis 
        @type  _fDelay: python float
        
        @param _bVerbose:  Do you want the EDNA plugin execution to be verbose ?
        @type  _bVerbose: boolean

        @param _bDebug:  Do you want EDNA plugin execution debug output (OBS! very verbose) ?
        @type  _bDebug: boolean
        """

        self.__iNbThreads = EDUtilsParallel.detectNumberOfCPUs(_iNbThreads)
        EDUtilsParallel.initializeNbThread(self.__iNbThreads)
        self.__semaphoreOut = threading.Semaphore()
        self.__semaphoreErr = threading.Semaphore()
        self.__strPluginName = _strPluginName
        self.__functXMLin = _functXMLin
        self.__functXMLout = _functXMLout
        self.__functXMLerr = _functXMLerr
        self.__strCurrWorkDir = os.getcwd()
        self.__strTempDir = None
        self.__listInputPaths = []
        if _bVerbose is not None:
            if _bVerbose:
                EDVerbose.setVerboseDebugOn()
            else:
                EDVerbose.setVerboseOff()
        if _bDebug is not None:
            if _bDebug:
                EDVerbose.setVerboseDebugOn()
            else:
                EDVerbose.setVerboseDebugOff()
        self.__fDelay = _fDelay #default delay between two directory checks.
        self.__bQuit = False    # To check if we should quit the application
        self.__bIsFirstExecute = True
        signal.signal(signal.SIGTERM, self.handleKill)
        signal.signal(signal.SIGINT, self.handleKill)
Exemplo n.º 3
0
 def processCommandLineDebugVerboseLogFile(self):
     EDVerbose.DEBUG("EDApplication.processCommandLineDebugVerboseLogFile")
     EDVerbose.setVerboseOff()
     # Check if no log file
     if (self.__edCommandLine.existCommand(EDApplication.NO_LOG_LABEL)):
         EDVerbose.setLogFileOff()
         EDVerbose.DEBUG("Log file output switched off")
     # Check if debug mode
     if (self.__edCommandLine.existCommand(EDApplication.DEBUG_PARAM_LABEL_1) or
         self.__edCommandLine.existCommand(EDApplication.DEBUG_PARAM_LABEL_2)):
         EDVerbose.setVerboseDebugOn()
         EDVerbose.DEBUG("Debug Mode [ON]")
     # Check if verbose
     if (self.__edCommandLine.existCommand(EDApplication.VERBOSE_MODE_LABEL)):
         EDVerbose.setVerboseOn()
Exemplo n.º 4
0
 def preProcess(self):
     """
     Scans the command line.
     """
     EDVerbose.DEBUG("EDTestLauncher.preProcess")
     edCommandLine = EDCommandLine(sys.argv)
     EDVerbose.log(self.getEdCommandLine().getCommandLine())
     self.processCommandLineDebugVerboseLogFile()
     bContinue = True
     strTestName = edCommandLine.getArgument(EDTestLauncher.TEST_LABEL)
     EDVerbose.DEBUG("EDTestLauncher.preProcess: test name = %r" % strTestName)
     if (strTestName is None):
         EDVerbose.screen("ERROR - no --test argument found")
         bContinue = False
     else:
         self.__edTestCase = EDUtilsTest.getFactoryPluginTest().loadPlugin(strTestName)
     if (bContinue):
         # Determine the base directory
         if(self.getBaseDir() is None):
             self.processCommandLineBaseDirectory()
         # Create the application working directory  
         strApplicationInstanceName = strTestName + "_" + time.strftime("%Y%m%d-%H%M%S", time.localtime())
         if(self.getWorkingDir() is None):
             self.setWorkingDir(strApplicationInstanceName)
         self.createApplicationWorkingDirectory()
         # Set the name of the log file
         EDVerbose.setLogFileName(os.path.join(self.getBaseDir(), strApplicationInstanceName + ".log"))
         # The check for --quiet and --DEBUG should ideally be placed elsewhere,
         # for example in EDApplication.
         if (edCommandLine.existCommand(EDTestLauncher.QUIET_LABEL)):
             EDVerbose.setVerboseOff()
             EDVerbose.setTestOff()
         if (edCommandLine.existCommand(EDApplication.DEBUG_PARAM_LABEL_1) or \
             edCommandLine.existCommand(EDApplication.DEBUG_PARAM_LABEL_2)):
             EDVerbose.setVerboseDebugOn()
             EDVerbose.DEBUG("EDTestLauncher.preProcess: Debug mode")