in src/core/src/main/java/org/apache/jmeter/JMeter.java [734:900]
private void initializeProperties(CLArgsParser parser) {
if (parser.getArgumentById(PROPFILE_OPT) != null) {
JMeterUtils.loadJMeterProperties(parser.getArgumentById(PROPFILE_OPT).getArgument());
} else {
JMeterUtils.loadJMeterProperties(NewDriver.getJMeterDir() + File.separator
+ "bin" + File.separator // $NON-NLS-1$
+ "jmeter.properties");// $NON-NLS-1$
}
JMeterUtils.initLocale();
// Bug 33845 - allow direct override of Home dir
if (parser.getArgumentById(JMETER_HOME_OPT) == null) {
JMeterUtils.setJMeterHome(NewDriver.getJMeterDir());
} else {
JMeterUtils.setJMeterHome(parser.getArgumentById(JMETER_HOME_OPT).getArgument());
}
Properties jmeterProps = JMeterUtils.getJMeterProperties();
remoteProps = new Properties();
// Add local JMeter properties, if the file is found
String userProp = JMeterUtils.getPropDefault("user.properties",""); //$NON-NLS-1$
if (userProp.length() > 0){ //$NON-NLS-1$
File file = JMeterUtils.findFile(userProp);
if (file.canRead()){
try (FileInputStream fis = new FileInputStream(file)){
log.info("Loading user properties from: {}", file);
Properties tmp = new Properties();
tmp.load(fis);
jmeterProps.putAll(tmp);
} catch (IOException e) {
log.warn("Error loading user property file: {}", userProp, e);
}
}
}
// Add local system properties, if the file is found
String sysProp = JMeterUtils.getPropDefault("system.properties",""); //$NON-NLS-1$
if (sysProp.length() > 0){
File file = JMeterUtils.findFile(sysProp);
if (file.canRead()) {
try (FileInputStream fis = new FileInputStream(file)){
log.info("Loading system properties from: {}", file);
System.getProperties().load(fis);
} catch (IOException e) {
log.warn("Error loading system property file: {}", sysProp, e);
}
}
}
// Process command line property definitions
// These can potentially occur multiple times
List<CLOption> clOptions = parser.getArguments();
for (CLOption option : clOptions) {
String name = option.getArgument(0);
String value = option.getArgument(1);
switch (option.getDescriptor().getId()) {
// Should not have any text arguments
case CLOption.TEXT_ARGUMENT:
throw new IllegalArgumentException("Unknown arg: " + option.getArgument());
case PROPFILE2_OPT: // Bug 33920 - allow multiple props
log.info("Loading additional properties from: {}", name);
try (FileInputStream fis = new FileInputStream(new File(name))){
Properties tmp = new Properties();
tmp.load(fis);
jmeterProps.putAll(tmp);
} catch (FileNotFoundException e) { // NOSONAR
log.warn("Can't find additional property file: {}", name, e);
} catch (IOException e) { // NOSONAR
log.warn("Error loading additional property file: {}", name, e);
}
break;
case SYSTEM_PROPFILE:
log.info("Setting System properties from file: {}", name);
try (FileInputStream fis = new FileInputStream(new File(name))){
System.getProperties().load(fis);
} catch (IOException e) { // NOSONAR
if (log.isWarnEnabled()) {
log.warn("Cannot find system property file. {}", e.getLocalizedMessage());
}
}
break;
case SYSTEM_PROPERTY:
if (value.length() > 0) { // Set it
log.info("Setting System property: {}={}", name, value);
System.getProperties().setProperty(name, value);
} else { // Reset it
log.warn("Removing System property: {}", name);
System.getProperties().remove(name);
}
break;
case JMETER_PROPERTY:
if (value.length() > 0) { // Set it
log.info("Setting JMeter property: {}={}", name, value);
jmeterProps.setProperty(name, value);
} else { // Reset it
log.warn("Removing JMeter property: {}", name);
jmeterProps.remove(name);
}
break;
case JMETER_GLOBAL_PROP:
if (value.length() > 0) { // Set it
log.info("Setting Global property: {}={}", name, value);
remoteProps.setProperty(name, value);
} else {
File propFile = new File(name);
if (propFile.canRead()) {
log.info("Setting Global properties from the file {}", name);
try (FileInputStream fis = new FileInputStream(propFile)){
remoteProps.load(fis);
} catch (FileNotFoundException e) { // NOSONAR
if (log.isWarnEnabled()) {
log.warn("Could not find properties file: {}", e.getLocalizedMessage());
}
} catch (IOException e) { // NOSONAR
if (log.isWarnEnabled()) {
log.warn("Could not load properties file: {}", e.getLocalizedMessage());
}
}
}
}
break;
case LOGLEVEL:
if (value.length() > 0) { // Set category
log.info("LogLevel: {}={}", name, value);
final Level logLevel = Level.getLevel(value);
if (logLevel != null) {
String loggerName = name;
if (name.startsWith("jmeter") || name.startsWith("jorphan")) {
loggerName = PACKAGE_PREFIX + name;
}
Configurator.setAllLevels(loggerName, logLevel);
} else {
log.warn("Invalid log level, '{}' for '{}'.", value, name);
}
} else { // Set root level
log.warn("LogLevel: {}", name);
final Level logLevel = Level.getLevel(name);
if (logLevel != null) {
Configurator.setRootLevel(logLevel);
} else {
log.warn("Invalid log level, '{}', for the root logger.", name);
}
}
break;
case REMOTE_STOP:
remoteStop = true;
break;
case FORCE_DELETE_RESULT_FILE:
deleteResultFile = true;
break;
default:
// ignored
break;
}
}
String sampleVariables = (String) jmeterProps.get(SampleEvent.SAMPLE_VARIABLES);
if (sampleVariables != null){
remoteProps.put(SampleEvent.SAMPLE_VARIABLES, sampleVariables);
}
jmeterProps.put("jmeter.version", JMeterUtils.getJMeterVersion());
}