package com.netflix.discovery.shared.resolver.aws; import com.netflix.appinfo.DataCenterInfo; import com.netflix.appinfo.InstanceInfo; import com.netflix.appinfo.MyDataCenterInfo; import com.netflix.discovery.EurekaClientConfig; import com.netflix.discovery.util.InstanceInfoGenerator; import org.junit.Before; import org.junit.Test; import java.util.Arrays; import java.util.List; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * @author David Liu */ public class ConfigClusterResolverTest { private final EurekaClientConfig clientConfig = mock(EurekaClientConfig.class); private final List<String> endpointsC = Arrays.asList( "http://1.1.1.1:8000/eureka/v2/", "http://1.1.1.2:8000/eureka/v2/", "http://1.1.1.3:8000/eureka/v2/" ); private final List<String> endpointsD = Arrays.asList( "http://1.1.2.1:8000/eureka/v2/", "http://1.1.2.2:8000/eureka/v2/" ); private final List<String> endpointsWithBasicAuth = Arrays.asList( "https://myuser:mypassword@1.1.3.1/eureka/v2/" ); private ConfigClusterResolver resolver; @Before public void setUp() { when(clientConfig.shouldUseDnsForFetchingServiceUrls()).thenReturn(false); when(clientConfig.getRegion()).thenReturn("us-east-1"); when(clientConfig.getAvailabilityZones("us-east-1")).thenReturn(new String[]{"us-east-1c", "us-east-1d", "us-east-1e"}); when(clientConfig.getEurekaServerServiceUrls("us-east-1c")).thenReturn(endpointsC); when(clientConfig.getEurekaServerServiceUrls("us-east-1d")).thenReturn(endpointsD); when(clientConfig.getEurekaServerServiceUrls("us-east-1e")).thenReturn(endpointsWithBasicAuth); InstanceInfo instanceInfo = new InstanceInfo.Builder(InstanceInfoGenerator.takeOne()) .setDataCenterInfo(new MyDataCenterInfo(DataCenterInfo.Name.MyOwn)) .build(); resolver = new ConfigClusterResolver(clientConfig, instanceInfo); } @Test public void testReadFromConfig() { List<AwsEndpoint> endpoints = resolver.getClusterEndpoints(); assertThat(endpoints.size(), equalTo(6)); for (AwsEndpoint endpoint : endpoints) { if (endpoint.getZone().equals("us-east-1e")) { assertThat("secure was wrong", endpoint.isSecure(), is(true)); assertThat("serviceUrl contains -1", endpoint.getServiceUrl().contains("-1"), is(false)); assertThat("BASIC auth credentials expected", endpoint.getServiceUrl().contains("myuser:mypassword"), is(true)); } } } }