public void TestAll()
{
var readPreference = new ReadPreference
{
ReadPreferenceMode = ReadPreferenceMode.Secondary,
TagSets = new[] { new ReplicaSetTagSet { { "dc", "1" } } }
};
var built = new MongoConnectionStringBuilder()
{
ConnectionMode = ConnectionMode.ReplicaSet,
ConnectTimeout = TimeSpan.FromSeconds(1),
DatabaseName = "database",
FSync = true,
GuidRepresentation = GuidRepresentation.PythonLegacy,
IPv6 = true,
Journal = true,
MaxConnectionIdleTime = TimeSpan.FromSeconds(2),
MaxConnectionLifeTime = TimeSpan.FromSeconds(3),
MaxConnectionPoolSize = 4,
MinConnectionPoolSize = 5,
Password = "password",
ReadPreference = readPreference,
ReplicaSetName = "name",
SecondaryAcceptableLatency = TimeSpan.FromSeconds(6),
Server = new MongoServerAddress("host"),
SocketTimeout = TimeSpan.FromSeconds(7),
Username = "username",
UseSsl = true,
VerifySslCertificate = false,
W = 2,
WaitQueueSize = 123,
WaitQueueTimeout = TimeSpan.FromSeconds(8),
WTimeout = TimeSpan.FromSeconds(9)
};
var connectionString = string.Join(";", new[] {
"connect=replicaSet",
"connectTimeout=1s",
"database=database",
"fsync=true",
"uuidRepresentation=pythonLegacy",
"ipv6=true",
"journal=true",
"maxIdleTime=2s",
"maxLifeTime=3s",
"maxPoolSize=4",
"minPoolSize=5",
"password=password",
"readPreference=secondary;readPreferenceTags=dc:1",
"replicaSet=name",
"secondaryAcceptableLatency=6s",
"server=host",
"socketTimeout=7s",
"username=username",
"ssl=true", // UseSsl
"sslVerifyCertificate=false", // VerifySslCertificate
"w=2",
"waitQueueSize=123",
"waitQueueTimeout=8s",
"wtimeout=9s"
});
foreach (var builder in EnumerateBuiltAndParsedBuilders(built, connectionString))
{
Assert.AreEqual(123, builder.ComputedWaitQueueSize);
Assert.AreEqual(ConnectionMode.ReplicaSet, builder.ConnectionMode);
Assert.AreEqual(TimeSpan.FromSeconds(1), builder.ConnectTimeout);
Assert.AreEqual("database", builder.DatabaseName);
Assert.AreEqual(true, builder.FSync);
Assert.AreEqual(GuidRepresentation.PythonLegacy, builder.GuidRepresentation);
Assert.AreEqual(true, builder.IPv6);
Assert.AreEqual(true, builder.Journal);
Assert.AreEqual(TimeSpan.FromSeconds(2), builder.MaxConnectionIdleTime);
Assert.AreEqual(TimeSpan.FromSeconds(3), builder.MaxConnectionLifeTime);
Assert.AreEqual(4, builder.MaxConnectionPoolSize);
Assert.AreEqual(5, builder.MinConnectionPoolSize);
Assert.AreEqual("password", builder.Password);
Assert.AreEqual(readPreference, builder.ReadPreference);
Assert.AreEqual("name", builder.ReplicaSetName);
#pragma warning disable 618
Assert.AreEqual(new SafeMode(false) { FSync = true, Journal = true, W = 2, WTimeout = TimeSpan.FromSeconds(9) }, builder.SafeMode);
#pragma warning restore
Assert.AreEqual(TimeSpan.FromSeconds(6), builder.SecondaryAcceptableLatency);
Assert.AreEqual(new MongoServerAddress("host", 27017), builder.Server);
#pragma warning disable 618
Assert.AreEqual(true, builder.SlaveOk);
#pragma warning restore
Assert.AreEqual(TimeSpan.FromSeconds(7), builder.SocketTimeout);
Assert.AreEqual("username", builder.Username);
Assert.AreEqual(true, builder.UseSsl);
Assert.AreEqual(false, builder.VerifySslCertificate);
Assert.AreEqual(2, ((WriteConcern.WCount)builder.W).Value);
Assert.AreEqual(0.0, builder.WaitQueueMultiple);
Assert.AreEqual(123, builder.WaitQueueSize);
Assert.AreEqual(TimeSpan.FromSeconds(8), builder.WaitQueueTimeout);
Assert.AreEqual(TimeSpan.FromSeconds(9), builder.WTimeout);
Assert.AreEqual(connectionString, builder.ToString());
}
}