package com.netflix.client.config; import static org.junit.Assert.*; import java.util.Date; import org.junit.Test; import com.netflix.config.ConfigurationManager; public class DefaultClientConfigImplTest { class NewConfigKey<T> extends CommonClientConfigKey<T> { protected NewConfigKey(String configKey) { super(configKey); } } @Test public void testTypedValue() { ConfigurationManager.getConfigInstance().setProperty("myclient.ribbon." + CommonClientConfigKey.ConnectTimeout, "1000"); DefaultClientConfigImpl config = new DefaultClientConfigImpl(); config.loadProperties("myclient"); assertEquals("1000", config.getProperty(CommonClientConfigKey.ConnectTimeout)); assertEquals(1000, config.get(CommonClientConfigKey.ConnectTimeout).intValue()); config.set(CommonClientConfigKey.ConnectTimeout, 2000); // The archaius property should override code override assertEquals(1000, config.get(CommonClientConfigKey.ConnectTimeout).intValue()); } @Test public void shouldThrowExceptionForIncorrectProperties() { ConfigurationManager.getConfigInstance().setProperty("myclient.ribbon", "bar"); DefaultClientConfigImpl config = new DefaultClientConfigImpl(); String message = ""; try { config.loadProperties("myclient"); } catch (RuntimeException ex) { message = ex.getMessage(); } assertEquals("Property ribbon is invalid", message); } @Test public void testNewType() { CommonClientConfigKey<Date> key = new CommonClientConfigKey<Date>("date") {}; assertEquals(Date.class, key.type()); } @Test public void testSubClass() { NewConfigKey<Date> key = new NewConfigKey<Date>("date") {}; assertEquals(Date.class, key.type()); } }