private String buildTestRunProperties(ScriptLocation script, AbstractLanguageHandler handler, Properties systemProperty,
	                                      GrinderProperties properties) {
		PropertyBuilder builder = new PropertyBuilder(properties, script.getDirectory(), isSecurityEnabled(properties), properties.getProperty(GRINDER_PROP_SECURITY_LEVEL, GRINDER_SECURITY_LEVEL_NORMAL), properties.getProperty(GRINDER_PROP_ETC_HOSTS),
				NetworkUtils.getLocalHostName(), m_agentConfig.getAgentProperties().getPropertyBoolean(PROP_AGENT_SERVER_MODE),
				m_agentConfig.getAgentProperties().getPropertyBoolean(PROP_AGENT_LIMIT_XMX),
				m_agentConfig.getAgentProperties().getPropertyBoolean(PROP_AGENT_ENABLE_LOCAL_DNS),
				m_agentConfig.getAgentProperties().getProperty(PROP_AGENT_JAVA_OPT));

		String jvmArguments = builder.buildJVMArgument();
		properties.setProperty(GRINDER_PROP_JVM_CLASSPATH, buildClassPath(systemProperty, properties, handler, builder));

		m_logger.info("grinder properties {}", properties);
		m_logger.info("jvm arguments {}", jvmArguments);

		// To be safe...
		if (properties.containsKey("grinder.duration") && !properties.containsKey("grinder.runs")) {
			properties.setInt("grinder.runs", 0);
		}
		return jvmArguments;
	}
Run the Grinder agent process.

@param grinderProperties {@link GrinderProperties} which contains grinder agent base configuration.
@throws GrinderException If an error occurs.
ngrinder-core/src/main/java/net/grinder/engine/agent/AgentImplementationEx.java