Exemplo n.º 1
0
ResultProcessor::ResultProcessor(std::string path , int pprocNum) {
    oneclickLogger << FileLogger::LOG_INFO << "started processing results\n\n";

    initPProcessor(pprocNum);

    std::string algName;
    std::vector<std::string> configPaths;
    std::vector<std::string> logPaths;
    std::vector<std::string> dirPaths;
    
    getDirectoryPaths(path , dirPaths);

    for (unsigned i = 0 ; i < dirPaths.size() ; i++) {
        //Creates directory logger. All directory specific info are logged here also.
        FileLogger * dirLogger = new FileLogger(dirPaths[i] + "/experiment.log");
        oneclickLogger << FileLogger::LOG_INFO << "processing experiment: " << Utils::getLastItemInPath(dirPaths[i]) << "\n";
        *dirLogger << FileLogger::LOG_INFO << "processing experiment: " << Utils::getLastItemInPath(dirPaths[i]) << "\n";

        //Getting paths to all logs and configs in subdirectories
        getFilePaths(dirPaths[i], configPaths, INDEX_CONFIG);
        sortStrings(configPaths);
        getFilePaths(dirPaths[i], logPaths, INDEX_EACIRC);
        sortStrings(logPaths);

        oneclickLogger << FileLogger::LOG_INFO << Utils::itostr(configPaths.size()) << " configs and " << Utils::itostr(logPaths.size()) << " logs in experiment\n";
        *dirLogger << FileLogger::LOG_INFO << Utils::itostr(configPaths.size()) << " configs and " << Utils::itostr(logPaths.size()) << " logs in experiment\n";

        //Check for config consistency, won't procceed otherwise
        oneclickLogger << FileLogger::LOG_INFO << "checking differences in configuration files\n";
        *dirLogger << FileLogger::LOG_INFO << "checking differences in configuration files\n";

        if(checkConfigs(configPaths , algName , dirLogger)) {
            //Checks errors and warnings, if okay run PostProcessor
            oneclickLogger << FileLogger::LOG_INFO << "processing results, checking errors/warnings in logs\n";
            *dirLogger << FileLogger::LOG_INFO << "processing results, checking errors/warnings in logs\n";
                
            if (algName.length() == 0) algName = Utils::getLastItemInPath(dirPaths[i]);
            pprocessor->setBatchDirectoryPath(dirPaths[i] + "/");
            pprocessor->setBatchName(algName);
            checkErrorsProcess(logPaths , dirLogger);
            pprocessor->calculateBatchResults();

            oneclickLogger << FileLogger::LOG_INFO << "experiment result: " << pprocessor->getLastScore().valToString() << "\n";
            *dirLogger << FileLogger::LOG_INFO << "experiment result: " << pprocessor->getLastScore().valToString() << "\n";
            oneclickLogger << FileLogger::LOG_INFO << "experiment processed\n\n";
            *dirLogger << FileLogger::LOG_INFO << "experiment processed\n\n";
        } else {
            oneclickLogger << FileLogger::LOG_WARNING << "experiment won't be processed. Remove invalid runs before processing!\n\n";
            *dirLogger << FileLogger::LOG_WARNING << "experiment won't be processed. Remove invalid runs before processing!\n\n";
        }

        configPaths.clear();
        logPaths.clear();
        algName.clear();
        delete dirLogger;
    }
    pprocessor->saveResults();
    delete pprocessor;
    oneclickLogger << FileLogger::LOG_INFO << "finished processing results\n";
}
Exemplo n.º 2
0
void parse() {
  yydebug = debugParserLevel;

  if (countTokens == true) {
    countTokensInCmdLineFiles();
  }

  parseInternalModules();

  parseCommandLineFiles();

  checkConfigs();

  finishCountingTokens();

  parsed = true;
}