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)
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)
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()
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")