private String calculateName(FeatureToken featureToken, ScenarioToken scenarioToken, Set<String> scenarioNames) { String conf = featureToken.getConfigurationName().equals(FeatureToken.BASE_CONFIGURATION) ? "" : " [" + featureToken.getConfigurationName() + "]"; String name = scenarioToken.getName() + conf; int instance = 2; while ( ! scenarioNames.add(name)) { name = scenarioToken.getName() + " (" + instance++ + ")"; } return name; }
private String calculateLogFileBaseName(FeatureToken featureToken, File featureFile, String processAlias) { String featureFileBaseName = getFeatureName(featureFile); //log file base name including both feature name and process alias ( + feature config ) String processFileNameBase; if (! featureToken.isConfiguration()) { processFileNameBase = String.format("%s-%s", featureFileBaseName, processAlias); } else { processFileNameBase = String.format("%s-%s-%s", featureFileBaseName, featureToken.getConfigurationName(), processAlias); } return processFileNameBase; }
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 injectSpringContext(Object handler, FeatureToken featureToken, String contextFileName) { Class handlerClass = handler.getClass(); //check for a 'Configuration:' specific Spring context if (featureToken.isConfiguration()) { if (contextFileName.endsWith(".xml")) { String tmp = String.format("%s-%s.xml", contextFileName.substring(0, contextFileName.length() - 4), featureToken.getConfigurationName()); URL url = handlerClass.getResource(tmp); if (url != null) { contextFileName = tmp; } } else { log.warn("Unexpected suffix for Spring config file (should end with .xml) : " + contextFileName); } } URL url = handlerClass.getResource(contextFileName); //this spring context may have been already loaded for another handler instance - if so, reuse it AbstractApplicationContext springContext = getExistingContextByUrl(url); //not already created, new one up if ( springContext == null) { springContext = createNewContext(handler, contextFileName, handlerClass, url); } //FileSystemXmlApplicationContext springContext = new FileSystemXmlApplicationContext(url.toExternalForm()); injectResourceFields(springContext, handler); }
private PropertyOperations mergeConfigurationProperties(PropertyOperations sessionProps) { PropertyOperations sessionPropsForProfile = sessionProps.filterByAndRemoveKeyPrefix("configurations." + currentFeature.getConfigurationName() + "."); return sessionProps.merge(sessionPropsForProfile).filterKeysNotStartingWith("configurations."); }
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; }
@Step(".*the injected variable contains the name of the run configuration$") public void checkInjectedValue() { String expected = currentFeatureToken.getConfigurationName(); assertEquals(expected, injectedString); } }
log.info("Running feature from file: " + feature.getFeatureFile() + (feature.isConfiguration() ? " in config " + feature.getConfigurationName() : ""));
@Override public FeatureTokenBean marshal(FeatureToken f) throws Exception { FeatureTokenBean result = new FeatureTokenBean(); result.setTokenId(f.getTokenId()); result.setName(f.getName()); if (f.getUsesHandlers()!=null && f.getUsesHandlers().length>0) { String handlerCsv = FormattingUtils.getAsCsv(f.getUsesHandlers()); result.setUsesHandlers(handlerCsv); } result.setConfigurationName(f.getConfigurationName()); result.setDescription(f.getDescription()); result.setScenarios(f.getScenarios()); result.setEndState(f.getEndState()); return result; }