/*
* Copyright (c) 2015 AsyncHttpClient Project. All rights reserved.
*
* This program is licensed to you under the Apache License Version 2.0,
* and you may not use this file except in compliance with the Apache License Version 2.0.
* You may obtain a copy of the Apache License Version 2.0 at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the Apache License Version 2.0 is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
*/
package org.asynchttpclient;
import static org.asynchttpclient.config.AsyncHttpClientConfigDefaults.ASYNC_CLIENT_CONFIG_ROOT;
import org.asynchttpclient.config.AsyncHttpClientConfigDefaults;
import org.asynchttpclient.config.AsyncHttpClientConfigHelper;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
@Test
public class AsyncHttpClientDefaultsTest {
public void testDefaultMaxTotalConnections() {
Assert.assertEquals(AsyncHttpClientConfigDefaults.defaultMaxConnections(), -1);
testIntegerSystemProperty("maxConnections", "defaultMaxConnections", "100");
}
public void testDefaultMaxConnectionPerHost() {
Assert.assertEquals(AsyncHttpClientConfigDefaults.defaultMaxConnectionsPerHost(), -1);
testIntegerSystemProperty("maxConnectionsPerHost", "defaultMaxConnectionsPerHost", "100");
}
public void testDefaultConnectTimeOut() {
Assert.assertEquals(AsyncHttpClientConfigDefaults.defaultConnectTimeout(), 5 * 1000);
testIntegerSystemProperty("connectTimeout", "defaultConnectTimeout", "100");
}
public void testDefaultPooledConnectionIdleTimeout() {
Assert.assertEquals(AsyncHttpClientConfigDefaults.defaultPooledConnectionIdleTimeout(), 60 * 1000);
testIntegerSystemProperty("pooledConnectionIdleTimeout", "defaultPooledConnectionIdleTimeout", "100");
}
public void testDefaultReadTimeout() {
Assert.assertEquals(AsyncHttpClientConfigDefaults.defaultReadTimeout(), 60 * 1000);
testIntegerSystemProperty("readTimeout", "defaultReadTimeout", "100");
}
public void testDefaultRequestTimeout() {
Assert.assertEquals(AsyncHttpClientConfigDefaults.defaultRequestTimeout(), 60 * 1000);
testIntegerSystemProperty("requestTimeout", "defaultRequestTimeout", "100");
}
public void testDefaultConnectionTtl() {
Assert.assertEquals(AsyncHttpClientConfigDefaults.defaultConnectionTtl(), -1);
testIntegerSystemProperty("connectionTtl", "defaultConnectionTtl", "100");
}
public void testDefaultFollowRedirect() {
Assert.assertFalse(AsyncHttpClientConfigDefaults.defaultFollowRedirect());
testBooleanSystemProperty("followRedirect", "defaultFollowRedirect", "true");
}
public void testDefaultMaxRedirects() {
Assert.assertEquals(AsyncHttpClientConfigDefaults.defaultMaxRedirects(), 5);
testIntegerSystemProperty("maxRedirects", "defaultMaxRedirects", "100");
}
public void testDefaultCompressionEnforced() {
Assert.assertFalse(AsyncHttpClientConfigDefaults.defaultCompressionEnforced());
testBooleanSystemProperty("compressionEnforced", "defaultCompressionEnforced", "true");
}
public void testDefaultUserAgent() {
Assert.assertEquals(AsyncHttpClientConfigDefaults.defaultUserAgent(), "AHC/2.1");
testStringSystemProperty("userAgent", "defaultUserAgent", "MyAHC");
}
public void testDefaultUseProxySelector() {
Assert.assertFalse(AsyncHttpClientConfigDefaults.defaultUseProxySelector());
testBooleanSystemProperty("useProxySelector", "defaultUseProxySelector", "true");
}
public void testDefaultUseProxyProperties() {
Assert.assertFalse(AsyncHttpClientConfigDefaults.defaultUseProxyProperties());
testBooleanSystemProperty("useProxyProperties", "defaultUseProxyProperties", "true");
}
public void testDefaultStrict302Handling() {
Assert.assertFalse(AsyncHttpClientConfigDefaults.defaultStrict302Handling());
testBooleanSystemProperty("strict302Handling", "defaultStrict302Handling", "true");
}
public void testDefaultAllowPoolingConnection() {
Assert.assertTrue(AsyncHttpClientConfigDefaults.defaultKeepAlive());
testBooleanSystemProperty("keepAlive", "defaultKeepAlive", "false");
}
public void testDefaultMaxRequestRetry() {
Assert.assertEquals(AsyncHttpClientConfigDefaults.defaultMaxRequestRetry(), 5);
testIntegerSystemProperty("maxRequestRetry", "defaultMaxRequestRetry", "100");
}
public void testDefaultDisableUrlEncodingForBoundRequests() {
Assert.assertFalse(AsyncHttpClientConfigDefaults.defaultDisableUrlEncodingForBoundRequests());
testBooleanSystemProperty("disableUrlEncodingForBoundRequests", "defaultDisableUrlEncodingForBoundRequests", "true");
}
public void testDefaultUseInsecureTrustManager() {
Assert.assertFalse(AsyncHttpClientConfigDefaults.defaultUseInsecureTrustManager());
testBooleanSystemProperty("useInsecureTrustManager", "defaultUseInsecureTrustManager", "false");
}
private void testIntegerSystemProperty(String propertyName, String methodName, String value) {
String previous = System.getProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName);
System.setProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName, value);
AsyncHttpClientConfigHelper.reloadProperties();
try {
Method method = AsyncHttpClientConfigDefaults.class.getMethod(methodName, new Class[] {});
Assert.assertEquals(method.invoke(null, new Object[] {}), Integer.parseInt(value));
} catch (Exception e) {
Assert.fail("Couldn't find or execute method : " + methodName, e);
}
if (previous != null)
System.setProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName, previous);
else
System.clearProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName);
}
private void testBooleanSystemProperty(String propertyName, String methodName, String value) {
String previous = System.getProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName);
System.setProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName, value);
AsyncHttpClientConfigHelper.reloadProperties();
try {
Method method = AsyncHttpClientConfigDefaults.class.getMethod(methodName, new Class[] {});
Assert.assertEquals(method.invoke(null, new Object[] {}), Boolean.parseBoolean(value));
} catch (Exception e) {
Assert.fail("Couldn't find or execute method : " + methodName, e);
}
if (previous != null)
System.setProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName, previous);
else
System.clearProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName);
}
private void testStringSystemProperty(String propertyName, String methodName, String value) {
String previous = System.getProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName);
System.setProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName, value);
AsyncHttpClientConfigHelper.reloadProperties();
try {
Method method = AsyncHttpClientConfigDefaults.class.getMethod(methodName, new Class[] {});
Assert.assertEquals(method.invoke(null, new Object[] {}), value);
} catch (Exception e) {
Assert.fail("Couldn't find or execute method : " + methodName, e);
}
if (previous != null)
System.setProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName, previous);
else
System.clearProperty(ASYNC_CLIENT_CONFIG_ROOT + propertyName);
}
}