/* * Hibernate OGM, Domain model persistence for NoSQL datastores * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.ogm.datastore.mongodb.configuration.impl; import java.util.HashMap; import java.util.Map; import com.mongodb.MongoClientOptions; import com.mongodb.WriteConcern; import org.junit.Before; import org.junit.Test; import org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl; import org.hibernate.ogm.cfg.OgmProperties; import org.hibernate.ogm.options.navigation.impl.OptionsContextImpl; import org.hibernate.ogm.options.navigation.source.impl.OptionValueSources; import org.hibernate.ogm.options.spi.OptionsContext; import org.hibernate.ogm.util.configurationreader.spi.ConfigurationPropertyReader; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; /** * @author Hardy Ferentschik */ public class MongoDBConfigurationTest { private Map<String, String> configProperties; private ConfigurationPropertyReader propertyReader; private OptionsContext globalOptions; @Before public void setUp() { configProperties = new HashMap<>(); configProperties.put( OgmProperties.DATABASE, "foo" ); propertyReader = new ConfigurationPropertyReader( configProperties, new ClassLoaderServiceImpl() ); globalOptions = OptionsContextImpl.forGlobal( OptionValueSources.getDefaultSources( propertyReader ) ); } @Test public void testDefaultWriteConcernGetsApplied() { MongoClientOptions clientOptions = createMongoClientOptions(); assertEquals( "Unexpected write concern", WriteConcern.ACKNOWLEDGED, clientOptions.getWriteConcern() ); } @Test public void testDefaultServerSelectionTimeoutIsApplied() { MongoClientOptions clientOptions = createMongoClientOptions(); assertEquals( "Unexpected server selection timeout", MongoClientOptions.builder().build().getServerSelectionTimeout(), clientOptions.getServerSelectionTimeout() ); } @Test public void testCustomServerSelectionTimeoutIsApplied() { int expectedTimeout = 1000; configProperties.put( "hibernate.ogm.mongodb.driver.serverSelectionTimeout", String.valueOf( expectedTimeout ) ); MongoClientOptions clientOptions = createMongoClientOptions(); assertEquals( "Unexpected server selection timeout", expectedTimeout, clientOptions.getServerSelectionTimeout() ); } private MongoClientOptions createMongoClientOptions() { MongoDBConfiguration mongoConfig = new MongoDBConfiguration( propertyReader, globalOptions ); assertNotNull( mongoConfig ); MongoClientOptions clientOptions = mongoConfig.buildOptions(); assertNotNull( clientOptions ); return clientOptions; } }