private Object getFeatureResource(String resourceName, Iterable<Object> handlerInstances) { Object o = null; if (ChorusResource.featureFile.equals(resourceName)) { o = feature.getFeatureFile(); } else if (ChorusResource.featureDir.equals(resourceName)) { o = feature.getFeatureFile().getParentFile(); } else if (ChorusResource.featureToken.equals(resourceName)) { o = feature; } else if (ChorusResource.profile.equals(resourceName)) { o = profile; } else if (resourceName.matches("subsystem.+")) { o = getSubsystemResource(resourceName); } else if ( resourceName.startsWith(ChorusResource.handlerPrefix)) { o = getHandlerResource(resourceName, handlerInstances); } return o; }
private boolean replaceWithChorusProperty(String fullPropertyName, String variable, StringBuilder sb, String property) { boolean replaced = false; int start = sb.indexOf(variable); if ( CHORUS_FEATURE_DIR_VARIABLE.equals(property)) { sb.replace(start, start + variable.length(), featureToken.getFeatureDir().getPath()); log.debug("Replaced variable " + variable + " with value " + featureToken.getFeatureDir().getPath() + " for property " + fullPropertyName); replaced = true; } else if ( CHORUS_FEATURE_FILE_VARIABLE.equals(property)) { sb.replace(start, start + variable.length(), featureToken.getFeatureFile().getPath()); log.debug("Replaced variable " + variable + " with value " + featureToken.getFeatureFile().getPath() + " for property " + fullPropertyName); replaced = true; } else if ( CHORUS_FEATURE_CONFIGURATION_VARIABLE.equals(property)) { sb.replace(start, start + variable.length(), featureToken.getConfigurationName()); log.debug("Replaced variable " + variable + " with value " + featureToken.getConfigurationName() + " for property " + fullPropertyName); replaced = true; } else if ( CHORUS_FEATURE_NAME_VARIABLE.equals(property)) { sb.replace(start, start + variable.length(), featureToken.getName()); log.debug("Replaced variable " + variable + " with value " + featureToken.getConfigurationName() + " for property " + fullPropertyName); replaced = true; } return replaced; }
public void featureStarted(ExecutionToken testExecutionToken, FeatureToken featureToken) { try { writeOsSpecificProperties(featureToken.getFeatureFile().getParentFile()); } catch (IOException e) { e.printStackTrace(); } }
private PropertyOperations mergeLoadersForDirectory(PropertyOperations props, File dir, FeatureToken featureToken) { props = props.merge(getPropertyLoader(dir, "chorus.properties")); String featureNameBase = featureToken.getFeatureFile().getName().replace(".feature", ""); props = props.merge(getPropertyLoader(dir, featureNameBase + ".properties")); props = props.merge(getPropertyLoader(dir, featureNameBase + "-" + featureToken.getConfigurationName() + ".properties")); return props; }
public ProcessOutputConfiguration(FeatureToken featureToken, NamedProcess processesConfig) { this.featureDir = featureToken.getFeatureDir(); this.logFileBaseName = calculateLogFileBaseName(featureToken, featureToken.getFeatureFile(), processesConfig.getProcessName()); this.processesConfig = processesConfig; this.isAppendToLogs = processesConfig.isAppendToLogs(); this.featureToken = featureToken; logDirectory = calculateLogDirectory(); stdOutFileAndMode = new LogFileAndMode( new File(logDirectory, String.format("%s-out.log", logFileBaseName)), processesConfig.getStdOutMode(), "stdOut", false ); stdErrFileAndMode = new LogFileAndMode( new File(logDirectory, String.format("%s-err.log", logFileBaseName)), processesConfig.getStdErrMode(), "stdErr", true ); //let's fail the feature if we cannot create the log directory //alternative would be to log inline but this might swamp interpreter output if ( OutputMode.isWriteToLogFile(stdOutFileAndMode.getMode()) || OutputMode.isWriteToLogFile(stdErrFileAndMode.getMode()) ) { getOrCreateLogDirectory(logDirectory); ChorusAssert.assertTrue("Cannot write to the logs directory at " + logDirectory, logDirectory.canWrite()); } }
log.info("Running feature from file: " + feature.getFeatureFile() + (feature.isConfiguration() ? " in config " + feature.getConfigurationName() : ""));