/*
* Copyright (c) 2008-2014 MongoDB, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.mongodb;
import org.junit.Test;
import javax.net.ssl.SSLSocketFactory;
import java.net.UnknownHostException;
import java.util.concurrent.TimeUnit;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* The mongo options test.
*/
public class MongoOptionsTest {
@Test
@SuppressWarnings("deprecation")
public void testCopy() throws Exception {
MongoOptions options = new MongoOptions();
options.connectionsPerHost = 100;
options.threadsAllowedToBlockForConnectionMultiplier = 101;
options.maxWaitTime = 102;
options.connectTimeout = 103;
options.socketTimeout = 104;
options.socketKeepAlive = true;
options.safe = true;
options.w = 106;
options.wtimeout = 107;
options.fsync = true;
options.j = false;
options.dbDecoderFactory = null;
options.dbEncoderFactory = null;
options.description = "cool";
options.readPreference = ReadPreference.secondary();
options.cursorFinalizerEnabled = true;
options.socketFactory = SSLSocketFactory.getDefault();
options.alwaysUseMBeans = true;
options.requiredReplicaSetName = "set1";
MongoOptions copy = options.copy();
assertEquals(options.connectionsPerHost, copy.connectionsPerHost);
assertEquals(options.threadsAllowedToBlockForConnectionMultiplier, copy.threadsAllowedToBlockForConnectionMultiplier);
assertEquals(options.maxWaitTime, copy.maxWaitTime);
assertEquals(options.connectTimeout, copy.connectTimeout);
assertEquals(options.socketTimeout, copy.socketTimeout);
assertEquals(options.socketKeepAlive, copy.socketKeepAlive);
assertEquals(options.safe, copy.safe);
assertEquals(options.w, copy.w);
assertEquals(options.wtimeout, copy.wtimeout);
assertEquals(options.fsync, copy.fsync);
assertEquals(options.j, copy.j);
assertEquals(options.dbDecoderFactory, copy.dbDecoderFactory);
assertEquals(options.dbEncoderFactory, copy.dbEncoderFactory);
assertEquals(options.description, copy.description);
assertEquals(options.readPreference, copy.readPreference);
assertEquals(options.alwaysUseMBeans, copy.alwaysUseMBeans);
assertEquals(options.socketFactory, copy.socketFactory);
assertEquals(options.requiredReplicaSetName, copy.requiredReplicaSetName);
}
@Test
@SuppressWarnings("deprecation")
public void testGetterSetters() throws Exception {
MongoOptions options = new MongoOptions();
options.setConnectionsPerHost(100);
options.setThreadsAllowedToBlockForConnectionMultiplier(101);
options.setMaxWaitTime(102);
options.setConnectTimeout(103);
options.setSocketTimeout(104);
options.setSocketKeepAlive(true);
options.setSafe(true);
options.setW(106);
options.setWtimeout(107);
options.setFsync(true);
options.setJ(false);
options.setDbDecoderFactory(null);
options.setDbEncoderFactory(null);
options.setDescription("very cool");
options.setReadPreference(ReadPreference.secondary());
options.setSocketFactory(SSLSocketFactory.getDefault());
options.setAlwaysUseMBeans(true);
options.setCursorFinalizerEnabled(false);
options.requiredReplicaSetName = "set1";
assertEquals(options.getConnectionsPerHost(), 100);
assertEquals(options.getThreadsAllowedToBlockForConnectionMultiplier(), 101);
assertEquals(options.getMaxWaitTime(), 102);
assertEquals(options.getConnectTimeout(), 103);
assertEquals(options.getSocketTimeout(), 104);
assertEquals(options.isSocketKeepAlive(), true);
assertEquals(options.isSafe(), true);
assertEquals(options.getW(), 106);
assertEquals(options.getWtimeout(), 107);
assertEquals(options.isFsync(), true);
assertEquals(options.isJ(), false);
assertEquals(options.getDbDecoderFactory(), null);
assertEquals(options.getDbEncoderFactory(), null);
assertEquals(options.getDescription(), "very cool");
assertEquals(options.getReadPreference(), ReadPreference.secondary());
assertEquals(options.isAlwaysUseMBeans(), true);
assertEquals(options.getSocketFactory(), options.socketFactory);
assertEquals(options.isCursorFinalizerEnabled(), false);
assertEquals(options.getRequiredReplicaSetName(), "set1");
}
@Test
@SuppressWarnings("deprecation")
public void testGetWriteConcern() {
MongoOptions options = new MongoOptions();
assertEquals(WriteConcern.NORMAL, options.getWriteConcern());
options.reset();
options.safe = true;
assertEquals(WriteConcern.SAFE, options.getWriteConcern());
options.reset();
options.w = 3;
assertEquals(new WriteConcern(3), options.getWriteConcern());
options.reset();
options.wtimeout = 3000;
assertEquals(WriteConcern.ACKNOWLEDGED.withWTimeout(3000, TimeUnit.MILLISECONDS), options.getWriteConcern());
options.reset();
options.fsync = true;
assertEquals(WriteConcern.ACKNOWLEDGED.withFsync(true), options.getWriteConcern());
options.reset();
options.j = true;
assertEquals(WriteConcern.ACKNOWLEDGED.withJournal(true), options.getWriteConcern());
}
@Test
@SuppressWarnings("deprecation")
public void testToClientOptions() throws UnknownHostException {
MongoOptions options = new MongoOptions();
options.description = "my client";
options.fsync = true;
options.readPreference = ReadPreference.secondary();
options.requiredReplicaSetName = "test";
options.cursorFinalizerEnabled = false;
options.alwaysUseMBeans = true;
options.connectTimeout = 100;
options.maxWaitTime = 500;
options.socketKeepAlive = true;
options.threadsAllowedToBlockForConnectionMultiplier = 10;
MongoClientOptions clientOptions = options.toClientOptions();
assertEquals(options.requiredReplicaSetName, clientOptions.getRequiredReplicaSetName());
assertEquals(options.description, clientOptions.getDescription());
assertEquals(WriteConcern.ACKNOWLEDGED.withFsync(true), clientOptions.getWriteConcern());
assertEquals(0, clientOptions.getMinConnectionsPerHost());
assertEquals(10, clientOptions.getConnectionsPerHost());
assertEquals(100, clientOptions.getConnectTimeout());
assertEquals(500, clientOptions.getMaxWaitTime());
assertEquals(ReadPreference.secondary(), clientOptions.getReadPreference());
assertEquals(10, clientOptions.getThreadsAllowedToBlockForConnectionMultiplier());
assertTrue(clientOptions.isSocketKeepAlive());
assertFalse(clientOptions.isSslEnabled());
assertEquals(options.dbDecoderFactory, clientOptions.getDbDecoderFactory());
assertEquals(options.dbEncoderFactory, clientOptions.getDbEncoderFactory());
assertEquals(15, clientOptions.getLocalThreshold());
assertTrue(clientOptions.isAlwaysUseMBeans());
assertFalse(clientOptions.isCursorFinalizerEnabled());
}
}