package org.springframework.cloud.config.java;
import org.junit.Test;
import org.springframework.cloud.config.MongoDbFactoryCloudConfigTestHelper;
import org.springframework.cloud.service.ServiceInfo;
import org.springframework.cloud.service.document.MongoDbFactoryConfig;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.data.mongodb.MongoDbFactory;
/**
*
* @author Ramnivas Laddad
*
*/
public class MongoDbFactoryJavaConfigTest extends AbstractServiceJavaConfigTest<MongoDbFactory> {
public MongoDbFactoryJavaConfigTest() {
super(MongoDbFactoryConfigWithId.class, MongoDbFactoryConfigWithoutId.class);
}
protected ServiceInfo createService(String id) {
return createMongoService(id);
}
protected Class<MongoDbFactory> getConnectorType() {
return MongoDbFactory.class;
}
@Test
public void withConfigAllOptionsSpecifiedWriteConcernNone() {
ApplicationContext testContext =
getTestApplicationContext(MongoDbFactoryConfigWithServiceConfig.class, createService("my-service"));
MongoDbFactory connector = testContext.getBean("connectionPerHost50_MaxWait200_WriteConcernNone", getConnectorType());
MongoDbFactoryCloudConfigTestHelper.assertConfigProperties(connector, "none", 50, 200);
}
@Test
public void withConfigAllOptionsSpecifiedWriteConcernSafe() {
ApplicationContext testContext =
getTestApplicationContext(MongoDbFactoryConfigWithServiceConfig.class, createService("my-service"));
MongoDbFactory connector = testContext.getBean("connectionPerHost50_MaxWait200_WriteConcernSafe", getConnectorType());
MongoDbFactoryCloudConfigTestHelper.assertConfigProperties(connector, "safe", 50, 200);
}
@Test
public void withConfigAllOptionsSpecifiedWriteConcernUnspecified() {
ApplicationContext testContext =
getTestApplicationContext(MongoDbFactoryConfigWithServiceConfig.class, createService("my-service"));
MongoDbFactory connector = testContext.getBean("connectionPerHost50_MaxWait200_WriteConcernUnspecified", getConnectorType());
MongoDbFactoryCloudConfigTestHelper.assertConfigProperties(connector, null, 50, 200);
}
@Test
public void withConfigOnlyConnectionPerHostSpecified() {
ApplicationContext testContext =
getTestApplicationContext(MongoDbFactoryConfigWithServiceConfig.class, createService("my-service"));
MongoDbFactory connector = testContext.getBean("connectionPerHost50_MaxWaitUnspecified_WriteConcernUnspecified", getConnectorType());
MongoDbFactoryCloudConfigTestHelper.assertConfigProperties(connector, null, 50, 120000);
}
@Test
public void withConfigOnlyMaxWaitSpecified() {
ApplicationContext testContext =
getTestApplicationContext(MongoDbFactoryConfigWithServiceConfig.class, createService("my-service"));
MongoDbFactory connector = testContext.getBean("connectionPerHostUnspecified_MaxWait200_WriteConcernUnspecified", getConnectorType());
MongoDbFactoryCloudConfigTestHelper.assertConfigProperties(connector, null, 100 /* default*/, 200);
}
}
class MongoDbFactoryConfigWithId extends AbstractCloudConfig {
@Bean(name="my-service")
public MongoDbFactory testMongoDbFactory() {
return connectionFactory().mongoDbFactory("my-service");
}
}
class MongoDbFactoryConfigWithoutId extends AbstractCloudConfig {
@Bean(name="my-service")
public MongoDbFactory testMongoDbFactory() {
return connectionFactory().mongoDbFactory();
}
}
class MongoDbFactoryConfigWithServiceConfig extends AbstractCloudConfig {
@Bean
public MongoDbFactory connectionPerHost50_MaxWait200_WriteConcernNone() {
MongoDbFactoryConfig serviceConfig = new MongoDbFactoryConfig("NONE", 50, 200);
return connectionFactory().mongoDbFactory("my-service", serviceConfig);
}
@Bean
public MongoDbFactory connectionPerHost50_MaxWait200_WriteConcernSafe() {
MongoDbFactoryConfig serviceConfig = new MongoDbFactoryConfig("SAFE", 50, 200);
return connectionFactory().mongoDbFactory("my-service", serviceConfig);
}
@Bean
public MongoDbFactory connectionPerHost50_MaxWait200_WriteConcernUnspecified() {
MongoDbFactoryConfig serviceConfig = new MongoDbFactoryConfig(null, 50, 200);
return connectionFactory().mongoDbFactory("my-service", serviceConfig);
}
@Bean
public MongoDbFactory connectionPerHost50_MaxWaitUnspecified_WriteConcernUnspecified() {
MongoDbFactoryConfig serviceConfig = new MongoDbFactoryConfig(null, 50, null);
return connectionFactory().mongoDbFactory("my-service", serviceConfig);
}
@Bean
public MongoDbFactory connectionPerHostUnspecified_MaxWait200_WriteConcernUnspecified() {
MongoDbFactoryConfig serviceConfig = new MongoDbFactoryConfig(null, null, 200);
return connectionFactory().mongoDbFactory("my-service", serviceConfig);
}
}