public static void setupDiscoveryClientConfig(int serverPort, String path) { ConfigurationManager.getConfigInstance().setProperty("eureka.shouldFetchRegistry", "true"); ConfigurationManager.getConfigInstance().setProperty("eureka.responseCacheAutoExpirationInSeconds", "10"); ConfigurationManager.getConfigInstance().setProperty("eureka.client.refresh.interval", CLIENT_REFRESH_RATE); ConfigurationManager.getConfigInstance().setProperty("eureka.registration.enabled", "false"); ConfigurationManager.getConfigInstance().setProperty("eureka.fetchRemoteRegionsRegistry", REMOTE_REGION); ConfigurationManager.getConfigInstance().setProperty("eureka.myregion.availabilityZones", REMOTE_ZONE); ConfigurationManager.getConfigInstance().setProperty("eureka.serviceUrl.default", "http://localhost:" + serverPort + path); }
private static void bindProperty(String propertyName, String value) { SYSTEM_PROPERTY_TRACKER.add(propertyName); ConfigurationManager.getConfigInstance().setProperty(propertyName, value); }
@BeforeClass public static void before() { AbstractConfiguration configuration = ConfigurationManager.getConfigInstance(); configuration.setProperty("zuul.filters.locations", "inbound,outbound,endpoint"); configuration.setProperty("zuul.filters.packages", "com.netflix.zuul.init,com.netflix.zuul.init2"); }
@Override protected void setupProperties() { super.setupProperties(); ConfigurationManager.getConfigInstance().setProperty("eureka.registration.enabled", "true"); // as the tests in this class triggers the instanceInfoReplicator explicitly, set the below config // so that it does not run as a background task ConfigurationManager.getConfigInstance().setProperty("eureka.appinfo.initial.replicate.time", Integer.MAX_VALUE); ConfigurationManager.getConfigInstance().setProperty("eureka.appinfo.replicate.interval", Integer.MAX_VALUE); }
private void testURLSeparator(String separator) { ConfigurationManager.getConfigInstance().setProperty(CommonConstants.DEFAULT_CONFIG_NAMESPACE + ".serviceUrl.default", SERVICE_URI + separator + SERVICE_URI); DefaultEurekaClientConfig clientConfig = new DefaultEurekaClientConfig(); List<String> serviceUrls = clientConfig.getEurekaServerServiceUrls("default"); assertThat(serviceUrls.get(0), is(equalTo(SERVICE_URI))); assertThat(serviceUrls.get(1), is(equalTo(SERVICE_URI))); } }
@Before public void setUp() throws Exception { RateLimitingFilter.reset(); ConfigurationManager.getConfigInstance().setProperty("eureka.rateLimiter.privilegedClients", PYTHON_CLIENT); ConfigurationManager.getConfigInstance().setProperty("eureka.rateLimiter.enabled", true); ConfigurationManager.getConfigInstance().setProperty("eureka.rateLimiter.burstSize", 2); ConfigurationManager.getConfigInstance().setProperty("eureka.rateLimiter.registryFetchAverageRate", 1); ConfigurationManager.getConfigInstance().setProperty("eureka.rateLimiter.fullFetchAverageRate", 1); ConfigurationManager.getConfigInstance().setProperty("eureka.rateLimiter.throttleStandardClients", false); ApplicationInfoManager applicationInfoManager = new ApplicationInfoManager(new MyDataCenterInstanceConfig()); DefaultEurekaServerConfig config = new DefaultEurekaServerConfig(); EurekaServerContext mockServer = mock(EurekaServerContext.class); when(mockServer.getServerConfig()).thenReturn(config); filter = new RateLimitingFilter(mockServer); }
@Test public void testGetRegionAppWhiteList() throws Exception { String globalWhiteListApp = "myapp"; String regionWhiteListApp = "myapp"; ConfigurationManager.getConfigInstance().setProperty("eureka.remoteRegion.global.appWhiteList", globalWhiteListApp); ConfigurationManager.getConfigInstance().setProperty("eureka.remoteRegion.region1.appWhiteList", regionWhiteListApp); DefaultEurekaServerConfig config = new DefaultEurekaServerConfig(); Set<String> regionList = config.getRemoteRegionAppWhitelist(null); Assert.assertNotNull("Region whitelist is null.", regionList); Assert.assertEquals("Region whitelist not as expected.", 1, regionList.size()); Assert.assertEquals("Region whitelist not as expected.", regionWhiteListApp, regionList.iterator().next()); } }
@Test public void testStandardClientsThrottlingEnforceable() throws Exception { ConfigurationManager.getConfigInstance().setProperty("eureka.rateLimiter.throttleStandardClients", true); // Custom clients will go up to the window limit whenRequest(FULL_FETCH, EurekaClientIdentity.DEFAULT_CLIENT_NAME); filter.doFilter(request, response, filterChain); filter.doFilter(request, response, filterChain); verify(filterChain, times(2)).doFilter(request, response); // Now we hit the limit long rateLimiterCounter = EurekaMonitors.RATE_LIMITED.getCount(); filter.doFilter(request, response, filterChain); assertEquals("Expected rate limiter counter increase", rateLimiterCounter + 1, EurekaMonitors.RATE_LIMITED.getCount()); verify(response, times(1)).setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE); }
@Test public void testCustomClientThrottlingCandidatesCounter() throws Exception { ConfigurationManager.getConfigInstance().setProperty("eureka.rateLimiter.enabled", false); // Custom clients will go up to the window limit whenRequest(FULL_FETCH, CUSTOM_CLIENT); filter.doFilter(request, response, filterChain); filter.doFilter(request, response, filterChain); verify(filterChain, times(2)).doFilter(request, response); // Now we hit the limit long rateLimiterCounter = EurekaMonitors.RATE_LIMITED_CANDIDATES.getCount(); filter.doFilter(request, response, filterChain); assertEquals("Expected rate limiter counter increase", rateLimiterCounter + 1, EurekaMonitors.RATE_LIMITED_CANDIDATES.getCount()); // We just test the counter verify(response, times(0)).setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE); }
@Test public void testGetGlobalAppWhiteList() throws Exception { String whitelistApp = "myapp"; ConfigurationManager.getConfigInstance().setProperty("eureka.remoteRegion.global.appWhiteList", whitelistApp); DefaultEurekaServerConfig config = new DefaultEurekaServerConfig(); Set<String> globalList = config.getRemoteRegionAppWhitelist(null); Assert.assertNotNull("Global whitelist is null.", globalList); Assert.assertEquals("Global whitelist not as expected.", 1, globalList.size()); Assert.assertEquals("Global whitelist not as expected.", whitelistApp, globalList.iterator().next()); }
@Test public void testRemoteRegionUrlsWithName1Region() throws Exception { String region1 = "myregion1"; String region1url = "http://local:888/eee"; ConfigurationManager.getConfigInstance().setProperty("eureka.remoteRegionUrlsWithName", region1 + ';' + region1url); DefaultEurekaServerConfig config = new DefaultEurekaServerConfig(); Map<String, String> remoteRegionUrlsWithName = config.getRemoteRegionUrlsWithName(); Assert.assertEquals("Unexpected remote region url count.", 1, remoteRegionUrlsWithName.size()); Assert.assertTrue("Remote region 1 not found.", remoteRegionUrlsWithName.containsKey(region1)); Assert.assertEquals("Unexpected remote region 1 url.", region1url, remoteRegionUrlsWithName.get(region1)); }
@Test public void testDoNotUnregisterOnShutdown() throws Exception { client.shutdown(); // shutdown the default @Before client first ConfigurationManager.getConfigInstance().setProperty("eureka.shouldUnregisterOnShutdown", "false"); client = Mockito.spy(new TestClient(applicationInfoManager, new DefaultEurekaClientConfig())); client.shutdown(); Mockito.verify(client, Mockito.never()).unregister(); }
@Test public void testRegistrationDisabled() throws Exception { client.shutdown(); // shutdown the default @Before client first ConfigurationManager.getConfigInstance().setProperty("eureka.registration.enabled", "false"); client = new TestClient(applicationInfoManager, new DefaultEurekaClientConfig()); Assert.assertEquals(0, applicationInfoManager.getStatusChangeListeners().size()); applicationInfoManager.setInstanceStatus(InstanceInfo.InstanceStatus.DOWN); applicationInfoManager.setInstanceStatus(InstanceInfo.InstanceStatus.UP); Thread.sleep(400); client.shutdown(); Assert.assertEquals(0, applicationInfoManager.getStatusChangeListeners().size()); }
@Test public void testNoRequestContextOnSimpleConcurencyStrategyWithoutException() throws Exception { shutdownContextIfExists(); ConfigurationManager.getConfigInstance().setProperty("hystrix.command.default.requestLog.enabled", "false"); new SimpleCommand().execute(); assertTrue("We are able to run the simple command without a context initialization error.", true); }
@Test public void testIntegerInstanceBuilderOverrideOfGlobalDynamicOverride() throws Exception { HystrixCommandProperties properties = new TestPropertiesCommand(TestKey.TEST, new HystrixCommandProperties.Setter().withMetricsRollingStatisticalWindowInMilliseconds(5000), "unitTestPrefix"); ConfigurationManager.getConfigInstance().setProperty("unitTestPrefix.command.default.rollingStats.timeInMilliseconds", 3456); // the builder injected should take precedence over the global dynamic property assertEquals(5000, properties.metricsRollingStatisticalWindowInMilliseconds().get().intValue()); // cleanup ConfigurationManager.getConfigInstance().clearProperty("unitTestPrefix.command.default.rollingStats.timeInMilliseconds"); }
@Test public void testBooleanInstanceBuilderOverrideOfGlobalDynamicOverride1() throws Exception { HystrixCommandProperties properties = new TestPropertiesCommand(TestKey.TEST, new HystrixCommandProperties.Setter().withCircuitBreakerForceClosed(true), "unitTestPrefix"); ConfigurationManager.getConfigInstance().setProperty("unitTestPrefix.command.default.circuitBreaker.forceClosed", false); // the builder injected should take precedence over the global dynamic property assertEquals(true, properties.circuitBreakerForceClosed().get()); // cleanup ConfigurationManager.getConfigInstance().clearProperty("unitTestPrefix.command.default.circuitBreaker.forceClosed"); }
@Test public void testNotMappedAZ() throws Exception { ConfigurationManager.getConfigInstance().setProperty("eureka.us-east-1.availabilityZones", "abc,def"); PropertyBasedAzToRegionMapper azToRegionMapper = new PropertyBasedAzToRegionMapper(new DefaultEurekaClientConfig()); InstanceRegionChecker checker = new InstanceRegionChecker(azToRegionMapper, "us-east-1"); azToRegionMapper.setRegionsToFetch(new String[]{"us-east-1"}); AmazonInfo dcInfo = AmazonInfo.Builder.newBuilder().addMetadata(AmazonInfo.MetaDataKey.availabilityZone, "us-east-1x").build(); InstanceInfo instanceInfo = InstanceInfo.Builder.newBuilder().setAppName("abc").setDataCenterInfo(dcInfo).build(); String instanceRegion = checker.getInstanceRegion(instanceInfo); Assert.assertEquals("Invalid instance region.", "us-east-1", instanceRegion); }
@Test public void testInstanceWithNoAZ() throws Exception { ConfigurationManager.getConfigInstance().setProperty("eureka.us-east-1.availabilityZones", "abc,def"); PropertyBasedAzToRegionMapper azToRegionMapper = new PropertyBasedAzToRegionMapper(new DefaultEurekaClientConfig()); InstanceRegionChecker checker = new InstanceRegionChecker(azToRegionMapper, "us-east-1"); azToRegionMapper.setRegionsToFetch(new String[]{"us-east-1"}); AmazonInfo dcInfo = AmazonInfo.Builder.newBuilder().addMetadata(AmazonInfo.MetaDataKey.availabilityZone, "").build(); InstanceInfo instanceInfo = InstanceInfo.Builder.newBuilder().setAppName("app").setDataCenterInfo( dcInfo).build(); String instanceRegion = checker.getInstanceRegion(instanceInfo); Assert.assertNull("Invalid instance region.", instanceRegion); }
@Test public void testDefaultOverride() throws Exception { ConfigurationManager.getConfigInstance().setProperty("eureka.us-east-1.availabilityZones", "abc,def"); PropertyBasedAzToRegionMapper azToRegionMapper = new PropertyBasedAzToRegionMapper(new DefaultEurekaClientConfig()); InstanceRegionChecker checker = new InstanceRegionChecker(azToRegionMapper, "us-east-1"); azToRegionMapper.setRegionsToFetch(new String[]{"us-east-1"}); AmazonInfo dcInfo = AmazonInfo.Builder.newBuilder().addMetadata(AmazonInfo.MetaDataKey.availabilityZone, "def").build(); InstanceInfo instanceInfo = InstanceInfo.Builder.newBuilder().setAppName("app").setDataCenterInfo( dcInfo).build(); String instanceRegion = checker.getInstanceRegion(instanceInfo); Assert.assertEquals("Invalid instance region.", "us-east-1", instanceRegion); }
@Test public void testNotMappedAZNotFollowingFormat() throws Exception { ConfigurationManager.getConfigInstance().setProperty("eureka.us-east-1.availabilityZones", "abc,def"); PropertyBasedAzToRegionMapper azToRegionMapper = new PropertyBasedAzToRegionMapper(new DefaultEurekaClientConfig()); InstanceRegionChecker checker = new InstanceRegionChecker(azToRegionMapper, "us-east-1"); azToRegionMapper.setRegionsToFetch(new String[]{"us-east-1"}); AmazonInfo dcInfo = AmazonInfo.Builder.newBuilder().addMetadata(AmazonInfo.MetaDataKey.availabilityZone, "us-east-x").build(); InstanceInfo instanceInfo = InstanceInfo.Builder.newBuilder().setAppName("abc").setDataCenterInfo(dcInfo).build(); String instanceRegion = checker.getInstanceRegion(instanceInfo); Assert.assertNull("Invalid instance region.", instanceRegion); } }