Provide access to URL fields when jdbcUrl is provided in Cloud Foundry connector.

This commit is contained in:
Scott Frederick
2015-08-20 18:43:48 -05:00
parent 9c3da5b7ff
commit 6f1b17d12d
25 changed files with 222 additions and 154 deletions

View File

@@ -8,7 +8,7 @@ public class DB2ServiceInfoCreator extends RelationalServiceInfoCreator<DB2Servi
}
@Override
public DB2ServiceInfo createServiceInfo(String id, String url) {
return new DB2ServiceInfo(id, url);
public DB2ServiceInfo createServiceInfo(String id, String url, String jdbcUrl) {
return new DB2ServiceInfo(id, url, jdbcUrl);
}
}

View File

@@ -15,7 +15,7 @@ public class MysqlServiceInfoCreator extends RelationalServiceInfoCreator<MysqlS
}
@Override
public MysqlServiceInfo createServiceInfo(String id, String url) {
return new MysqlServiceInfo(id, url);
public MysqlServiceInfo createServiceInfo(String id, String url, String jdbcUrl) {
return new MysqlServiceInfo(id, url, jdbcUrl);
}
}

View File

@@ -8,7 +8,7 @@ public class OracleServiceInfoCreator extends RelationalServiceInfoCreator<Oracl
}
@Override
public OracleServiceInfo createServiceInfo(String id, String url) {
return new OracleServiceInfo(id, url);
public OracleServiceInfo createServiceInfo(String id, String url, String jdbcUrl) {
return new OracleServiceInfo(id, url, jdbcUrl);
}
}

View File

@@ -2,6 +2,9 @@ package org.springframework.cloud.cloudfoundry;
import org.springframework.cloud.service.common.PostgresqlServiceInfo;
import static org.springframework.cloud.service.common.PostgresqlServiceInfo.POSTGRES_JDBC_SCHEME;
import static org.springframework.cloud.service.common.PostgresqlServiceInfo.POSTGRES_SCHEME;
/**
*
* @author Ramnivas Laddad
@@ -10,11 +13,11 @@ import org.springframework.cloud.service.common.PostgresqlServiceInfo;
public class PostgresqlServiceInfoCreator extends RelationalServiceInfoCreator<PostgresqlServiceInfo> {
public PostgresqlServiceInfoCreator() {
super(new Tags("postgresql"), PostgresqlServiceInfo.POSTGRES_SCHEME);
super(new Tags("postgresql"), POSTGRES_SCHEME, POSTGRES_JDBC_SCHEME);
}
@Override
public PostgresqlServiceInfo createServiceInfo(String id, String url) {
return new PostgresqlServiceInfo(id, url);
public PostgresqlServiceInfo createServiceInfo(String id, String url, String jdbcUrl) {
return new PostgresqlServiceInfo(id, url, jdbcUrl);
}
}

View File

@@ -42,18 +42,16 @@ public abstract class RelationalServiceInfoCreator<SI extends RelationalServiceI
return false;
}
public abstract SI createServiceInfo(String id, String uri);
public abstract SI createServiceInfo(String id, String uri, String jdbcUrl);
public SI createServiceInfo(Map<String, Object> serviceData) {
String id = getId(serviceData);
Map<String,Object> credentials = getCredentials(serviceData);
String uri = getStringFromCredentials(credentials, "jdbcUrl");
String jdbcUrl = getStringFromCredentials(credentials, "jdbcUrl");
if (uri == null) {
uri = getUriFromCredentials(credentials);
}
String uri = getUriFromCredentials(credentials);
if (uri == null) {
String host = getStringFromCredentials(credentials, "hostname", "host");
@@ -63,10 +61,10 @@ public abstract class RelationalServiceInfoCreator<SI extends RelationalServiceI
String password = (String) credentials.get("password");
String database = (String) credentials.get("name");
uri = new UriInfo(getDefaultUriScheme(), host, port, username, password, database).toString();
}
return createServiceInfo(id, uri);
return createServiceInfo(id, uri, jdbcUrl);
}
}

View File

@@ -9,7 +9,7 @@ public class SqlServerServiceInfoCreator extends RelationalServiceInfoCreator<Sq
}
@Override
public SqlServerServiceInfo createServiceInfo(String id, String url) {
return new SqlServerServiceInfo(id, url);
public SqlServerServiceInfo createServiceInfo(String id, String url, String jdbcUrl) {
return new SqlServerServiceInfo(id, url, jdbcUrl);
}
}

View File

@@ -1,5 +1,12 @@
package org.springframework.cloud.cloudfoundry;
import org.mockito.internal.matchers.InstanceOf;
import org.springframework.cloud.service.ServiceInfo;
import org.springframework.cloud.service.common.RelationalServiceInfo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
/**
*
* @author Ramnivas Laddad
@@ -19,7 +26,12 @@ public abstract class AbstractCloudFoundryConnectorRelationalServiceTest extends
return payload;
}
protected static String getJdbcUrl(String databaseType, String name) {
protected void assertJdbcUrlEqual(ServiceInfo serviceInfo, String scheme, String name) {
assertThat(serviceInfo, new InstanceOf(RelationalServiceInfo.class));
assertEquals(getJdbcUrl(scheme, name), ((RelationalServiceInfo) serviceInfo).getJdbcUrl());
}
protected String getJdbcUrl(String databaseType, String name) {
// this should be cleaned up more broadly; pull into RelationalServiceInfo interface?
String jdbcUrlDatabaseType = databaseType;
if (databaseType.equals("postgres")) {
@@ -29,5 +41,4 @@ public abstract class AbstractCloudFoundryConnectorRelationalServiceTest extends
return "jdbc:" + jdbcUrlDatabaseType + "://" + hostname + ":" + port + "/" + name +
"?user=" + username + "&password=" + password;
}
}

View File

@@ -13,10 +13,12 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.internal.matchers.InstanceOf;
import org.springframework.cloud.service.ServiceInfo;
import org.springframework.cloud.service.UriBasedServiceInfo;
import org.springframework.cloud.util.EnvironmentAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
@@ -134,4 +136,19 @@ public abstract class AbstractCloudFoundryConnectorTest {
ServiceInfo serviceInfo = getServiceInfo(serviceInfos, serviceId);
assertServiceFoundOfType(serviceInfo, type);
}
protected static void assertUriBasedServiceInfoFields(ServiceInfo serviceInfo,
String scheme, String host, int port,
String username, String password, String path) {
assertThat(serviceInfo, new InstanceOf(UriBasedServiceInfo.class));
UriBasedServiceInfo info = (UriBasedServiceInfo) serviceInfo;
assertEquals(scheme, info.getScheme());
assertEquals(host, info.getHost());
assertEquals(port, info.getPort());
assertEquals(username, info.getUserName());
assertEquals(password, info.getPassword());
assertEquals(path, info.getPath());
}
}

View File

@@ -1,35 +1,34 @@
package org.springframework.cloud.cloudfoundry;
import org.junit.Test;
import org.springframework.cloud.service.BaseServiceInfo;
import org.springframework.cloud.service.ServiceInfo;
import org.springframework.cloud.service.common.MysqlServiceInfo;
import org.springframework.cloud.service.common.DB2ServiceInfo;
import org.springframework.cloud.service.common.RelationalServiceInfo;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.when;
import static org.springframework.cloud.service.common.DB2ServiceInfo.DB2_SCHEME;
import static org.springframework.cloud.service.common.RelationalServiceInfo.JDBC_PREFIX;
public class CloudFoundryConnectorDB2ServiceTest extends AbstractUserProvidedServiceInfoCreatorTest {
private static final String INSTANCE_NAME = "database";
private static final String DB2_SCHEME = "db2:";
private static final String SERVICE_NAME = "db2-ups";
@Test
public void db2ServiceCreation() {
when(mockEnvironment.getEnvValue("VCAP_SERVICES"))
.thenReturn(getServicesPayload(
getUserProvidedServicePayload(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, DB2_SCHEME)));
getUserProvidedServicePayload(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, DB2_SCHEME + ":")));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
DB2ServiceInfo info = (DB2ServiceInfo) getServiceInfo(serviceInfos, SERVICE_NAME);
ServiceInfo info = getServiceInfo(serviceInfos, SERVICE_NAME);
assertServiceFoundOfType(info, DB2ServiceInfo.class);
assertEquals(getDB2JdbcUrl(INSTANCE_NAME), info.getJdbcUrl());
assertJdbcUrlEqual(info, DB2_SCHEME, INSTANCE_NAME);
assertUriBasedServiceInfoFields(info, DB2_SCHEME, hostname, port, username, password, INSTANCE_NAME);
}
@Test
@@ -37,9 +36,10 @@ public class CloudFoundryConnectorDB2ServiceTest extends AbstractUserProvidedSer
when(mockEnvironment.getEnvValue("VCAP_SERVICES"))
.thenReturn(getServicesPayload(
getUserProvidedServicePayloadWithNoUri(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
BaseServiceInfo info = (BaseServiceInfo) getServiceInfo(serviceInfos, SERVICE_NAME);
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
ServiceInfo info = getServiceInfo(serviceInfos, SERVICE_NAME);
assertNotNull(info);
assertFalse(MysqlServiceInfo.class.isAssignableFrom(info.getClass())); // service was not detected as MySQL
assertNotNull(info);
}
@@ -48,12 +48,13 @@ public class CloudFoundryConnectorDB2ServiceTest extends AbstractUserProvidedSer
public void dServiceCreationWithJdbcUrl() {
when(mockEnvironment.getEnvValue("VCAP_SERVICES"))
.thenReturn(getServicesPayload(
getDB2ServicePayloadWithJdbcurl(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, DB2_SCHEME)));
getDB2ServicePayloadWithJdbcurl(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, DB2_SCHEME + ":")));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
DB2ServiceInfo info = (DB2ServiceInfo) getServiceInfo(serviceInfos, SERVICE_NAME);
ServiceInfo info = getServiceInfo(serviceInfos, SERVICE_NAME);
assertServiceFoundOfType(info, DB2ServiceInfo.class);
assertEquals(RelationalServiceInfo.JDBC_PREFIX + "db2:rawjdbcurl", info.getJdbcUrl());
assertJdbcUrlEqual(info, DB2_SCHEME, INSTANCE_NAME);
assertUriBasedServiceInfoFields(info, DB2_SCHEME, hostname, port, username, password, INSTANCE_NAME);
}
protected String getDB2ServicePayloadWithJdbcurl(String serviceName, String hostname, int port,
@@ -63,7 +64,7 @@ public class CloudFoundryConnectorDB2ServiceTest extends AbstractUserProvidedSer
return payload.replace("$scheme", scheme);
}
private String getDB2JdbcUrl(String name) {
return String.format("jdbc:db2://%s:%d/%s:user=%s;password=%s;", hostname, port, name, username, password);
protected String getJdbcUrl(String scheme, String name) {
return String.format("%s%s://%s:%d/%s:user=%s;password=%s;", JDBC_PREFIX, scheme, hostname, port, name, username, password);
}
}

View File

@@ -1,8 +1,7 @@
package org.springframework.cloud.cloudfoundry;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import static org.springframework.cloud.service.common.RelationalServiceInfo.JDBC_PREFIX;
import static org.springframework.cloud.service.common.MysqlServiceInfo.MYSQL_SCHEME;
import java.util.List;
@@ -25,14 +24,15 @@ public class CloudFoundryConnectorMysqlServiceTest extends AbstractCloudFoundryC
getMysqlServicePayload("mysql-1", hostname, port, username, password, name1),
getMysqlServicePayload("mysql-2", hostname, port, username, password, name2)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
MysqlServiceInfo info1 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-1");
MysqlServiceInfo info2 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-2");
ServiceInfo info1 = getServiceInfo(serviceInfos, "mysql-1");
ServiceInfo info2 = getServiceInfo(serviceInfos, "mysql-2");
assertServiceFoundOfType(info1, MysqlServiceInfo.class);
assertServiceFoundOfType(info2, MysqlServiceInfo.class);
assertEquals(getJdbcUrl("mysql", name1), info1.getJdbcUrl());
assertEquals(getJdbcUrl("mysql", name2), info2.getJdbcUrl());
assertJdbcUrlEqual(info1, MYSQL_SCHEME, name1);
assertJdbcUrlEqual(info2, MYSQL_SCHEME, name2);
}
@Test
@@ -44,13 +44,18 @@ public class CloudFoundryConnectorMysqlServiceTest extends AbstractCloudFoundryC
getMysqlServicePayloadWithLabelNoTags("mysql-1", hostname, port, username, password, name1),
getMysqlServicePayloadWithLabelNoTags("mysql-2", hostname, port, username, password, name2)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
MysqlServiceInfo info1 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-1");
MysqlServiceInfo info2 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-2");
ServiceInfo info1 = getServiceInfo(serviceInfos, "mysql-1");
ServiceInfo info2 = getServiceInfo(serviceInfos, "mysql-2");
assertServiceFoundOfType(info1, MysqlServiceInfo.class);
assertServiceFoundOfType(info2, MysqlServiceInfo.class);
assertEquals(getJdbcUrl("mysql", name1), info1.getJdbcUrl());
assertEquals(getJdbcUrl("mysql", name2), info2.getJdbcUrl());
assertJdbcUrlEqual(info1, MYSQL_SCHEME, name1);
assertJdbcUrlEqual(info2, MYSQL_SCHEME, name2);
assertUriBasedServiceInfoFields(info1, MYSQL_SCHEME, hostname, port, username, password, name1);
assertUriBasedServiceInfoFields(info2, MYSQL_SCHEME, hostname, port, username, password, name2);
}
@Test
@@ -63,12 +68,17 @@ public class CloudFoundryConnectorMysqlServiceTest extends AbstractCloudFoundryC
getMysqlServicePayloadNoLabelNoTags("mysql-2", hostname, port, username, password, name2)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
MysqlServiceInfo info1 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-1");
MysqlServiceInfo info2 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-2");
ServiceInfo info1 = getServiceInfo(serviceInfos, "mysql-1");
ServiceInfo info2 = getServiceInfo(serviceInfos, "mysql-2");
assertServiceFoundOfType(info1, MysqlServiceInfo.class);
assertServiceFoundOfType(info2, MysqlServiceInfo.class);
assertEquals(getJdbcUrl("mysql", name1), info1.getJdbcUrl());
assertEquals(getJdbcUrl("mysql", name2), info2.getJdbcUrl());
assertJdbcUrlEqual(info1, MYSQL_SCHEME, name1);
assertJdbcUrlEqual(info2, MYSQL_SCHEME, name2);
assertUriBasedServiceInfoFields(info1, MYSQL_SCHEME, hostname, port, username, password, name1);
assertUriBasedServiceInfoFields(info2, MYSQL_SCHEME, hostname, port, username, password, name2);
}
@Test
@@ -80,13 +90,18 @@ public class CloudFoundryConnectorMysqlServiceTest extends AbstractCloudFoundryC
getMysqlServicePayloadWithLabelNoUri("mysql-1", hostname, port, username, password, name1),
getMysqlServicePayloadWithLabelNoUri("mysql-2", hostname, port, username, password, name2)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
MysqlServiceInfo info1 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-1");
MysqlServiceInfo info2 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-2");
ServiceInfo info1 = getServiceInfo(serviceInfos, "mysql-1");
ServiceInfo info2 = getServiceInfo(serviceInfos, "mysql-2");
assertServiceFoundOfType(info1, MysqlServiceInfo.class);
assertServiceFoundOfType(info2, MysqlServiceInfo.class);
assertEquals(getJdbcUrl("mysql", name1), info1.getJdbcUrl());
assertEquals(getJdbcUrl("mysql", name2), info2.getJdbcUrl());
assertJdbcUrlEqual(info1, MYSQL_SCHEME, name1);
assertJdbcUrlEqual(info2, MYSQL_SCHEME, name2);
assertUriBasedServiceInfoFields(info1, MYSQL_SCHEME, hostname, port, username, password, name1);
assertUriBasedServiceInfoFields(info2, MYSQL_SCHEME, hostname, port, username, password, name2);
}
@Test
@@ -99,12 +114,17 @@ public class CloudFoundryConnectorMysqlServiceTest extends AbstractCloudFoundryC
getMysqlServicePayloadWithJdbcUrl("mysql-2", hostname, port, username, password, name2)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
MysqlServiceInfo info1 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-1");
MysqlServiceInfo info2 = (MysqlServiceInfo) getServiceInfo(serviceInfos, "mysql-2");
ServiceInfo info1 = getServiceInfo(serviceInfos, "mysql-1");
ServiceInfo info2 = getServiceInfo(serviceInfos, "mysql-2");
assertServiceFoundOfType(info1, MysqlServiceInfo.class);
assertServiceFoundOfType(info2, MysqlServiceInfo.class);
assertEquals(JDBC_PREFIX + "mysql://rawjdbcurl", info1.getJdbcUrl());
assertEquals(JDBC_PREFIX + "mysql://rawjdbcurl", info2.getJdbcUrl());
assertJdbcUrlEqual(info1, MYSQL_SCHEME, name1);
assertJdbcUrlEqual(info2, MYSQL_SCHEME, name2);
assertUriBasedServiceInfoFields(info1, MYSQL_SCHEME, hostname, port, username, password, name1);
assertUriBasedServiceInfoFields(info2, MYSQL_SCHEME, hostname, port, username, password, name2);
}
private String getMysqlServicePayload(String serviceName,

View File

@@ -1,35 +1,34 @@
package org.springframework.cloud.cloudfoundry;
import org.junit.Test;
import org.springframework.cloud.service.BaseServiceInfo;
import org.springframework.cloud.service.ServiceInfo;
import org.springframework.cloud.service.common.MysqlServiceInfo;
import org.springframework.cloud.service.common.OracleServiceInfo;
import org.springframework.cloud.service.common.RelationalServiceInfo;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.when;
import static org.springframework.cloud.service.common.OracleServiceInfo.ORACLE_SCHEME;
import static org.springframework.cloud.service.common.RelationalServiceInfo.JDBC_PREFIX;
public class CloudFoundryConnectorOracleServiceTest extends AbstractUserProvidedServiceInfoCreatorTest {
private static final String INSTANCE_NAME = "database";
private static final String ORACLE_SCHEME = "oracle:";
private static final String SERVICE_NAME = "oracle-ups";
@Test
public void oracleServiceCreation() {
when(mockEnvironment.getEnvValue("VCAP_SERVICES"))
.thenReturn(getServicesPayload(
getUserProvidedServicePayload(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, ORACLE_SCHEME)));
getUserProvidedServicePayload(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, ORACLE_SCHEME + ":")));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
OracleServiceInfo info = (OracleServiceInfo) getServiceInfo(serviceInfos, SERVICE_NAME);
ServiceInfo info = getServiceInfo(serviceInfos, SERVICE_NAME);
assertServiceFoundOfType(info, OracleServiceInfo.class);
assertEquals(getOracleJdbcUrl(INSTANCE_NAME), info.getJdbcUrl());
assertJdbcUrlEqual(info, ORACLE_SCHEME, INSTANCE_NAME);
assertUriBasedServiceInfoFields(info, ORACLE_SCHEME, hostname, port, username, password, INSTANCE_NAME);
}
@Test
@@ -39,7 +38,8 @@ public class CloudFoundryConnectorOracleServiceTest extends AbstractUserProvided
getUserProvidedServicePayloadWithNoUri(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
BaseServiceInfo info = (BaseServiceInfo) getServiceInfo(serviceInfos, SERVICE_NAME);
ServiceInfo info = getServiceInfo(serviceInfos, SERVICE_NAME);
assertNotNull(info);
assertFalse(MysqlServiceInfo.class.isAssignableFrom(info.getClass())); // service was not detected as MySQL
assertNotNull(info);
}
@@ -48,12 +48,13 @@ public class CloudFoundryConnectorOracleServiceTest extends AbstractUserProvided
public void oracleServiceCreationWithJdbcUrl() {
when(mockEnvironment.getEnvValue("VCAP_SERVICES"))
.thenReturn(getServicesPayload(
getOracleServicePayloadWithJdbcurl(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, ORACLE_SCHEME)));
getOracleServicePayloadWithJdbcurl(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, ORACLE_SCHEME + ":")));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
OracleServiceInfo info = (OracleServiceInfo) getServiceInfo(serviceInfos, SERVICE_NAME);
ServiceInfo info = getServiceInfo(serviceInfos, SERVICE_NAME);
assertServiceFoundOfType(info, OracleServiceInfo.class);
assertEquals(RelationalServiceInfo.JDBC_PREFIX + "oracle:rawjdbcurl", info.getJdbcUrl());
assertJdbcUrlEqual(info, ORACLE_SCHEME, INSTANCE_NAME);
assertUriBasedServiceInfoFields(info, ORACLE_SCHEME, hostname, port, username, password, INSTANCE_NAME);
}
protected String getOracleServicePayloadWithJdbcurl(String serviceName, String hostname, int port,
@@ -63,7 +64,7 @@ public class CloudFoundryConnectorOracleServiceTest extends AbstractUserProvided
return payload.replace("$scheme", scheme);
}
private String getOracleJdbcUrl(String name) {
return "jdbc:oracle:thin:" + username + "/" + password + "@" + hostname + ":" + port + "/" + name;
protected String getJdbcUrl(String scheme, String name) {
return String.format("%s%s:thin:%s/%s@%s:%d/%s", JDBC_PREFIX, scheme, username, password, hostname, port, name);
}
}

View File

@@ -1,8 +1,7 @@
package org.springframework.cloud.cloudfoundry;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import static org.springframework.cloud.service.common.RelationalServiceInfo.JDBC_PREFIX;
import static org.springframework.cloud.service.common.PostgresqlServiceInfo.POSTGRES_SCHEME;
import java.util.List;
@@ -25,13 +24,17 @@ public class CloudFoundryConnectorPostgresqlServiceTest extends AbstractCloudFou
getPostgresqlServicePayload("postgresql-2", hostname, port, username, password, name2)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
PostgresqlServiceInfo info1 = (PostgresqlServiceInfo) getServiceInfo(serviceInfos, "postgresql-1");
PostgresqlServiceInfo info2 = (PostgresqlServiceInfo) getServiceInfo(serviceInfos, "postgresql-2");
ServiceInfo info1 = getServiceInfo(serviceInfos, "postgresql-1");
ServiceInfo info2 = getServiceInfo(serviceInfos, "postgresql-2");
assertServiceFoundOfType(info1, PostgresqlServiceInfo.class);
assertServiceFoundOfType(info2, PostgresqlServiceInfo.class);
assertEquals(getJdbcUrl("postgres", name1), info1.getJdbcUrl());
assertEquals(getJdbcUrl("postgres", name2), info2.getJdbcUrl());
assertJdbcUrlEqual(info1, POSTGRES_SCHEME, name1);
assertJdbcUrlEqual(info2, POSTGRES_SCHEME, name2);
assertUriBasedServiceInfoFields(info1, POSTGRES_SCHEME, hostname, port, username, password, name1);
assertUriBasedServiceInfoFields(info2, POSTGRES_SCHEME, hostname, port, username, password, name2);
}
@Test
@@ -44,13 +47,17 @@ public class CloudFoundryConnectorPostgresqlServiceTest extends AbstractCloudFou
getPostgresqlServicePayloadNoLabelNoTags("postgresql-2", hostname, port, username, password, name2)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
PostgresqlServiceInfo info1 = (PostgresqlServiceInfo) getServiceInfo(serviceInfos, "postgresql-1");
PostgresqlServiceInfo info2 = (PostgresqlServiceInfo) getServiceInfo(serviceInfos, "postgresql-2");
ServiceInfo info1 = getServiceInfo(serviceInfos, "postgresql-1");
ServiceInfo info2 = getServiceInfo(serviceInfos, "postgresql-2");
assertServiceFoundOfType(info1, PostgresqlServiceInfo.class);
assertServiceFoundOfType(info2, PostgresqlServiceInfo.class);
assertEquals(getJdbcUrl("postgres", name1), info1.getJdbcUrl());
assertEquals(getJdbcUrl("postgres", name2), info2.getJdbcUrl());
assertJdbcUrlEqual(info1, POSTGRES_SCHEME, name1);
assertJdbcUrlEqual(info2, POSTGRES_SCHEME, name2);
assertUriBasedServiceInfoFields(info1, POSTGRES_SCHEME, hostname, port, username, password, name1);
assertUriBasedServiceInfoFields(info2, POSTGRES_SCHEME, hostname, port, username, password, name2);
}
@Test
@@ -63,13 +70,17 @@ public class CloudFoundryConnectorPostgresqlServiceTest extends AbstractCloudFou
getPostgresqlServicePayloadWithJdbcUrl("postgresql-2", hostname, port, username, password, name2)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
PostgresqlServiceInfo info1 = (PostgresqlServiceInfo) getServiceInfo(serviceInfos, "postgresql-1");
PostgresqlServiceInfo info2 = (PostgresqlServiceInfo) getServiceInfo(serviceInfos, "postgresql-2");
ServiceInfo info1 = getServiceInfo(serviceInfos, "postgresql-1");
ServiceInfo info2 = getServiceInfo(serviceInfos, "postgresql-2");
assertServiceFoundOfType(info1, PostgresqlServiceInfo.class);
assertServiceFoundOfType(info2, PostgresqlServiceInfo.class);
assertEquals(JDBC_PREFIX + "postgres://rawjdbcurl", info1.getJdbcUrl());
assertEquals(JDBC_PREFIX + "postgres://rawjdbcurl", info2.getJdbcUrl());
assertJdbcUrlEqual(info1, POSTGRES_SCHEME, name1);
assertJdbcUrlEqual(info2, POSTGRES_SCHEME, name2);
assertUriBasedServiceInfoFields(info1, POSTGRES_SCHEME, hostname, port, username, password, name1);
assertUriBasedServiceInfoFields(info2, POSTGRES_SCHEME, hostname, port, username, password, name2);
}
private String getPostgresqlServicePayload(String serviceName,

View File

@@ -1,34 +1,33 @@
package org.springframework.cloud.cloudfoundry;
import org.junit.Test;
import org.springframework.cloud.service.BaseServiceInfo;
import org.springframework.cloud.service.ServiceInfo;
import org.springframework.cloud.service.common.RelationalServiceInfo;
import org.springframework.cloud.service.common.SqlServerServiceInfo;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.when;
import static org.springframework.cloud.service.common.RelationalServiceInfo.JDBC_PREFIX;
import static org.springframework.cloud.service.common.SqlServerServiceInfo.SQLSERVER_SCHEME;
public class CloudFoundryConnectorSqlServerServiceTest extends AbstractUserProvidedServiceInfoCreatorTest {
private static final String INSTANCE_NAME = "database";
private static final String SQLSERVER_SCHEME = "sqlserver:";
private static final String SERVICE_NAME = "sqlserver-ups";
@Test
public void sqlServerServiceCreation() {
when(mockEnvironment.getEnvValue("VCAP_SERVICES"))
.thenReturn(getServicesPayload(
getUserProvidedServicePayload(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, SQLSERVER_SCHEME)));
getUserProvidedServicePayload(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, SQLSERVER_SCHEME + ":")));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
SqlServerServiceInfo info = (SqlServerServiceInfo) getServiceInfo(serviceInfos, SERVICE_NAME);
ServiceInfo info = getServiceInfo(serviceInfos, SERVICE_NAME);
assertServiceFoundOfType(info, SqlServerServiceInfo.class);
assertEquals(getSqlServerJdbcUrl(INSTANCE_NAME), info.getJdbcUrl());
assertJdbcUrlEqual(info, SQLSERVER_SCHEME, INSTANCE_NAME);
assertUriBasedServiceInfoFields(info, SQLSERVER_SCHEME, hostname, port, username, password, INSTANCE_NAME);
}
@Test
@@ -38,21 +37,22 @@ public class CloudFoundryConnectorSqlServerServiceTest extends AbstractUserProvi
getUserProvidedServicePayloadWithNoUri(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME)));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
BaseServiceInfo info = (BaseServiceInfo) getServiceInfo(serviceInfos, SERVICE_NAME);
assertFalse(SqlServerServiceInfo.class.isAssignableFrom(info.getClass())); // service was not detected as SQL-Server
ServiceInfo info = getServiceInfo(serviceInfos, SERVICE_NAME);
assertNotNull(info);
assertFalse(SqlServerServiceInfo.class.isAssignableFrom(info.getClass())); // service was not detected as SQL-Server
}
@Test
public void sqlServerServiceCreationWithJdbcUrl() {
when(mockEnvironment.getEnvValue("VCAP_SERVICES"))
.thenReturn(getServicesPayload(
getSqlServerServicePayloadWithJdbcurl(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, SQLSERVER_SCHEME)));
getSqlServerServicePayloadWithJdbcurl(SERVICE_NAME, hostname, port, username, password, INSTANCE_NAME, SQLSERVER_SCHEME + ":")));
List<ServiceInfo> serviceInfos = testCloudConnector.getServiceInfos();
SqlServerServiceInfo info = (SqlServerServiceInfo) getServiceInfo(serviceInfos, SERVICE_NAME);
ServiceInfo info = getServiceInfo(serviceInfos, SERVICE_NAME);
assertServiceFoundOfType(info, SqlServerServiceInfo.class);
assertEquals(RelationalServiceInfo.JDBC_PREFIX + "sqlserver:rawjdbcurl", info.getJdbcUrl());
assertJdbcUrlEqual(info, SQLSERVER_SCHEME, INSTANCE_NAME);
assertUriBasedServiceInfoFields(info, SQLSERVER_SCHEME, hostname, port, username, password, INSTANCE_NAME);
}
protected String getSqlServerServicePayloadWithJdbcurl(String serviceName, String hostname, int port,
@@ -62,7 +62,7 @@ public class CloudFoundryConnectorSqlServerServiceTest extends AbstractUserProvi
return payload.replace("$scheme", scheme);
}
private String getSqlServerJdbcUrl(String name) {
return "jdbc:sqlserver://" + hostname + ":" + port + ";database=" + name + ";user=" + username + ";password=" + password;
protected String getJdbcUrl(String scheme, String name) {
return String.format("%s%s://%s:%d;database=%s;user=%s;password=%s", JDBC_PREFIX, scheme, hostname, port, name, username, password);
}
}

View File

@@ -1,7 +1,7 @@
{
"name": "$serviceName",
"credentials": {
"jdbcUrl": "jdbc:db2:rawjdbcurl",
"jdbcUrl": "jdbc:db2://$hostname:$port/$name:user=$user;password=$password;",
"uri": "db2://$user:$password@$hostname:$port/$name"
}
}

View File

@@ -1,7 +1,7 @@
{
"name": "$serviceName",
"credentials": {
"jdbcUrl": "jdbc:mysql://rawjdbcurl",
"jdbcUrl": "jdbc:mysql://$hostname:$port/$name?user=$user&password=$password",
"uri": "mysql://$user:$password@$hostname:$port/$name"
}
}

View File

@@ -1,7 +1,7 @@
{
"name": "$serviceName",
"credentials": {
"jdbcUrl": "jdbc:oracle:rawjdbcurl",
"jdbcUrl": "jdbc:oracle:thin:$user/$password@$hostname:$port/$name",
"uri": "oracle://$user:$password@$hostname:$port/$name"
}
}

View File

@@ -1,7 +1,7 @@
{
"name": "$serviceName",
"credentials": {
"jdbcUrl": "jdbc:postgres://rawjdbcurl",
"jdbcUrl": "jdbc:postgresql://$hostname:$port/$name?user=$user&password=$password",
"uri": "postgres://$user:$password@$hostname:$port/$name"
}
}

View File

@@ -1,7 +1,7 @@
{
"name": "$serviceName",
"credentials": {
"jdbcUrl": "jdbc:sqlserver:rawjdbcurl",
"jdbcUrl": "jdbc:sqlserver://$hostname:$port;database=$name;user=$user;password=$password",
"uri": "sqlserver://$user:$password@$hostname:$port/$name"
}
}