From 14272c8b104eb757d50a6a7fa0b3bfa71bf6334a Mon Sep 17 00:00:00 2001 From: Christopher Smith Date: Fri, 11 Jul 2014 16:28:09 -0500 Subject: [PATCH] tests for all ServiceInfoCreators --- .../localconfig/LocalConfigConnector.java | 3 ++ .../cloud/localconfig/LocalConfigUtil.java | 6 ++- .../AbstractLocalConfigConnectorTest.java | 54 +++++++++++++++++++ .../LocalConfigConnectorAmqpServiceTest.java | 23 ++++++++ .../LocalConfigConnectorMongoServiceTest.java | 23 ++++++++ .../LocalConfigConnectorMysqlServiceTest.java | 23 ++++++++ ...lConfigConnectorPostgresqlServiceTest.java | 23 ++++++++ .../LocalConfigConnectorRedisServiceTest.java | 23 ++++++++ .../src/test/resources/localconfig.properties | 3 -- .../resources/localconfig.testuris.properties | 6 +++ 10 files changed, 183 insertions(+), 4 deletions(-) create mode 100644 spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/AbstractLocalConfigConnectorTest.java create mode 100644 spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorAmqpServiceTest.java create mode 100644 spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorMongoServiceTest.java create mode 100644 spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorMysqlServiceTest.java create mode 100644 spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorPostgresqlServiceTest.java create mode 100644 spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorRedisServiceTest.java delete mode 100644 spring-cloud-localconfig-connector/src/test/resources/localconfig.properties create mode 100644 spring-cloud-localconfig-connector/src/test/resources/localconfig.testuris.properties diff --git a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigConnector.java b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigConnector.java index 93bb25f..babc2c0 100644 --- a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigConnector.java +++ b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigConnector.java @@ -79,6 +79,9 @@ public class LocalConfigConnector extends AbstractCloudConnector { @Override protected List getServicesData() { + if(fileProperties == null) + throw new IllegalStateException("isInMatchingCloud() must be called first to initialize connector"); + LinkedHashMap propertySources = new LinkedHashMap(); propertySources.put("programmatic properties", programmaticProperties); diff --git a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigUtil.java b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigUtil.java index bd4d9f3..c2a4e82 100644 --- a/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigUtil.java +++ b/spring-cloud-localconfig-connector/src/main/java/org/springframework/cloud/localconfig/LocalConfigUtil.java @@ -23,7 +23,11 @@ public final class LocalConfigUtil { // iterate over the property sources in order, extracting matching properties for (Map.Entry propertySource : propertySources.entrySet()) { - logger.info("reading services from " + propertySource.getValue()); + if(propertySource.getValue().isEmpty()) { + logger.info("no " + propertySource.getKey()); + continue; + } + logger.info("reading services from " + propertySource.getKey()); Map services = readServices(propertySource.getValue()); // add each of the found services to the list, warning about duplicates diff --git a/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/AbstractLocalConfigConnectorTest.java b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/AbstractLocalConfigConnectorTest.java new file mode 100644 index 0000000..9313717 --- /dev/null +++ b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/AbstractLocalConfigConnectorTest.java @@ -0,0 +1,54 @@ +package org.springframework.cloud.localconfig; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.Properties; + +import org.junit.After; +import org.junit.Before; +import org.springframework.cloud.service.ServiceInfo; +import org.springframework.cloud.service.UriBasedServiceInfo; + +public class AbstractLocalConfigConnectorTest { + + public static final String PROPERTIES_FILE = "localconfig.testuris.properties"; + + protected LocalConfigConnector connector = new LocalConfigConnector(); + + protected static final String HOSTNAME = "10.20.30.40"; + protected static final int PORT = 1234; + protected static final String USERNAME = "myuser"; + protected static final String PASSWORD = "mypass"; + + @Before + public void init() throws IOException { + InputStream propertiesFile = getClass().getClassLoader().getResourceAsStream(PROPERTIES_FILE); + LocalConfigConnector.supplyProperties(propertiesFile); + assertTrue(connector.isInMatchingCloud()); + } + + @After + public void clearProperties() { + LocalConfigConnector.programmaticProperties = new Properties(); + } + + protected static ServiceInfo getServiceInfo(List serviceInfos, String serviceId) { + for (ServiceInfo serviceInfo : serviceInfos) { + if (serviceInfo.getId().equals(serviceId)) { + return serviceInfo; + } + } + return null; + } + + protected static void assertUriParameters(UriBasedServiceInfo serviceInfo) { + assertEquals(HOSTNAME, serviceInfo.getHost()); + assertEquals(PORT, serviceInfo.getPort()); + assertEquals(USERNAME, serviceInfo.getUserName()); + assertEquals(PASSWORD, serviceInfo.getPassword()); + } +} diff --git a/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorAmqpServiceTest.java b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorAmqpServiceTest.java new file mode 100644 index 0000000..a515741 --- /dev/null +++ b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorAmqpServiceTest.java @@ -0,0 +1,23 @@ +package org.springframework.cloud.localconfig; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.junit.Test; +import org.springframework.cloud.service.ServiceInfo; +import org.springframework.cloud.service.common.AmqpServiceInfo; + +public class LocalConfigConnectorAmqpServiceTest extends AbstractLocalConfigConnectorTest { + + @Test + public void serviceCreation() { + List services = connector.getServiceInfos(); + ServiceInfo service = getServiceInfo(services, "rabbit"); + assertNotNull(service); + assertTrue(service instanceof AmqpServiceInfo); + assertUriParameters((AmqpServiceInfo) service); + } + +} diff --git a/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorMongoServiceTest.java b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorMongoServiceTest.java new file mode 100644 index 0000000..5fec86f --- /dev/null +++ b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorMongoServiceTest.java @@ -0,0 +1,23 @@ +package org.springframework.cloud.localconfig; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.junit.Test; +import org.springframework.cloud.service.ServiceInfo; +import org.springframework.cloud.service.common.MongoServiceInfo; + +public class LocalConfigConnectorMongoServiceTest extends AbstractLocalConfigConnectorTest { + + @Test + public void serviceCreation() { + List services = connector.getServiceInfos(); + ServiceInfo service = getServiceInfo(services, "candygram"); + assertNotNull(service); + assertTrue(service instanceof MongoServiceInfo); + assertUriParameters((MongoServiceInfo) service); + } + +} diff --git a/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorMysqlServiceTest.java b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorMysqlServiceTest.java new file mode 100644 index 0000000..4e305dd --- /dev/null +++ b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorMysqlServiceTest.java @@ -0,0 +1,23 @@ +package org.springframework.cloud.localconfig; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.junit.Test; +import org.springframework.cloud.service.ServiceInfo; +import org.springframework.cloud.service.common.MysqlServiceInfo; + +public class LocalConfigConnectorMysqlServiceTest extends AbstractLocalConfigConnectorTest { + + @Test + public void serviceCreation() { + List services = connector.getServiceInfos(); + ServiceInfo service = getServiceInfo(services, "maria"); + assertNotNull(service); + assertTrue(service instanceof MysqlServiceInfo); + assertUriParameters((MysqlServiceInfo) service); + } + +} diff --git a/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorPostgresqlServiceTest.java b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorPostgresqlServiceTest.java new file mode 100644 index 0000000..13123a5 --- /dev/null +++ b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorPostgresqlServiceTest.java @@ -0,0 +1,23 @@ +package org.springframework.cloud.localconfig; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.junit.Test; +import org.springframework.cloud.service.ServiceInfo; +import org.springframework.cloud.service.common.PostgresqlServiceInfo; + +public class LocalConfigConnectorPostgresqlServiceTest extends AbstractLocalConfigConnectorTest { + + @Test + public void serviceCreation() { + List services = connector.getServiceInfos(); + ServiceInfo service = getServiceInfo(services, "ingres"); + assertNotNull(service); + assertTrue(service instanceof PostgresqlServiceInfo); + assertUriParameters((PostgresqlServiceInfo) service); + } + +} diff --git a/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorRedisServiceTest.java b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorRedisServiceTest.java new file mode 100644 index 0000000..29dd550 --- /dev/null +++ b/spring-cloud-localconfig-connector/src/test/java/org/springframework/cloud/localconfig/LocalConfigConnectorRedisServiceTest.java @@ -0,0 +1,23 @@ +package org.springframework.cloud.localconfig; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.junit.Test; +import org.springframework.cloud.service.ServiceInfo; +import org.springframework.cloud.service.common.RedisServiceInfo; + +public class LocalConfigConnectorRedisServiceTest extends AbstractLocalConfigConnectorTest { + + @Test + public void serviceCreation() { + List services = connector.getServiceInfos(); + ServiceInfo service = getServiceInfo(services, "blue"); + assertNotNull(service); + assertTrue(service instanceof RedisServiceInfo); + assertUriParameters((RedisServiceInfo) service); + } + +} diff --git a/spring-cloud-localconfig-connector/src/test/resources/localconfig.properties b/spring-cloud-localconfig-connector/src/test/resources/localconfig.properties deleted file mode 100644 index bcc84c3..0000000 --- a/spring-cloud-localconfig-connector/src/test/resources/localconfig.properties +++ /dev/null @@ -1,3 +0,0 @@ -spring.cloud.appId: testApp -spring.cloud.foo: bar -spring.cloud.baz: quux \ No newline at end of file diff --git a/spring-cloud-localconfig-connector/src/test/resources/localconfig.testuris.properties b/spring-cloud-localconfig-connector/src/test/resources/localconfig.testuris.properties new file mode 100644 index 0000000..94bb5d9 --- /dev/null +++ b/spring-cloud-localconfig-connector/src/test/resources/localconfig.testuris.properties @@ -0,0 +1,6 @@ +spring.cloud.appId: testAppWithUris +spring.cloud.rabbit: amqp://myuser:mypass@10.20.30.40:1234/queue +spring.cloud.maria: mysql://myuser:mypass@10.20.30.40:1234/dbname +spring.cloud.candygram: mongodb://myuser:mypass@10.20.30.40:1234/dbname +spring.cloud.ingres: postgres://myuser:mypass@10.20.30.40:1234/dbname +spring.cloud.blue: redis://myuser:mypass@10.20.30.40:1234/dbname \ No newline at end of file