public void TestDefaults() { var builder = new MongoUrlBuilder(); Assert.AreEqual(MongoDefaults.ComputedWaitQueueSize, builder.ComputedWaitQueueSize); Assert.AreEqual(ConnectionMode.Direct, builder.ConnectionMode); Assert.AreEqual(MongoDefaults.ConnectTimeout, builder.ConnectTimeout); Assert.AreEqual(null, builder.DatabaseName); Assert.AreEqual(null, builder.DefaultCredentials); Assert.AreEqual(false, builder.IPv6); Assert.AreEqual(MongoDefaults.MaxConnectionIdleTime, builder.MaxConnectionIdleTime); Assert.AreEqual(MongoDefaults.MaxConnectionLifeTime, builder.MaxConnectionLifeTime); Assert.AreEqual(MongoDefaults.MaxConnectionPoolSize, builder.MaxConnectionPoolSize); Assert.AreEqual(MongoDefaults.MinConnectionPoolSize, builder.MinConnectionPoolSize); Assert.AreEqual(null, builder.ReplicaSetName); Assert.AreEqual(null, builder.SafeMode); Assert.AreEqual(null, builder.Server); Assert.AreEqual(null, builder.Servers); Assert.AreEqual(false, builder.SlaveOk); Assert.AreEqual(MongoDefaults.SocketTimeout, builder.SocketTimeout); Assert.AreEqual(MongoDefaults.WaitQueueMultiple, builder.WaitQueueMultiple); Assert.AreEqual(MongoDefaults.WaitQueueSize, builder.WaitQueueSize); Assert.AreEqual(MongoDefaults.WaitQueueTimeout, builder.WaitQueueTimeout); var connectionString = "mongodb://"; Assert.AreEqual(connectionString, builder.ToString()); }
public void TestConnectTimeout() { var connectionString = "mongodb://localhost/?connectTimeout=123ms"; var builder = new MongoUrlBuilder("mongodb://localhost") { ConnectTimeout = TimeSpan.FromMilliseconds(123) }; Assert.AreEqual(TimeSpan.FromMilliseconds(123), builder.ConnectTimeout); Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); connectionString = "mongodb://localhost/?connectTimeout=123s"; builder = new MongoUrlBuilder("mongodb://localhost") { ConnectTimeout = TimeSpan.FromSeconds(123) }; Assert.AreEqual(TimeSpan.FromSeconds(123), builder.ConnectTimeout); Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); connectionString = "mongodb://localhost/?connectTimeout=123m"; builder = new MongoUrlBuilder("mongodb://localhost") { ConnectTimeout = TimeSpan.FromMinutes(123) }; Assert.AreEqual(TimeSpan.FromMinutes(123), builder.ConnectTimeout); Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); connectionString = "mongodb://localhost/?connectTimeout=123h"; builder = new MongoUrlBuilder("mongodb://localhost") { ConnectTimeout = TimeSpan.FromHours(123) }; Assert.AreEqual(TimeSpan.FromHours(123), builder.ConnectTimeout); Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public MongoDBDatabase() { Name = "MongoDB"; CollectionName = "collection"; Category = "NoSQL\\Document Store"; Description = "MongoDB C# Driver 2.0.0beta"; Website = "http://www.mongodb.org/"; Color = Color.FromArgb(235, 215, 151); Requirements = new string[] { "MongoDB.Bson.dll", "MongoDB.Driver.dll", "MongoDB.Driver.Core.dll", "MongoDB.Driver.Legacy.dll" }; MongoUrlBuilder builder = new MongoUrlBuilder(); builder.MaxConnectionIdleTime = TimeSpan.FromHours(1); builder.MaxConnectionLifeTime = TimeSpan.FromHours(1); builder.Server = new MongoServerAddress("localhost"); builder.W = 1; ConnectionString = builder.ToString(); InsertsPerQuery = 5000; }
public void TestDefaults() { var builder = new MongoUrlBuilder(); Assert.AreEqual(null, builder.DefaultCredentials); Assert.AreEqual(null, builder.Server); Assert.AreEqual(null, builder.Servers); Assert.AreEqual(null, builder.DatabaseName); Assert.AreEqual(ConnectionMode.Automatic, builder.ConnectionMode); Assert.AreEqual(MongoDefaults.ConnectTimeout, builder.ConnectTimeout); Assert.AreEqual(MongoDefaults.GuidRepresentation, builder.GuidRepresentation); Assert.AreEqual(false, builder.IPv6); Assert.AreEqual(MongoDefaults.MaxConnectionIdleTime, builder.MaxConnectionIdleTime); Assert.AreEqual(MongoDefaults.MaxConnectionLifeTime, builder.MaxConnectionLifeTime); Assert.AreEqual(MongoDefaults.MaxConnectionPoolSize, builder.MaxConnectionPoolSize); Assert.AreEqual(MongoDefaults.MinConnectionPoolSize, builder.MinConnectionPoolSize); Assert.AreEqual(null, builder.ReadPreference); Assert.AreEqual(null, builder.ReplicaSetName); Assert.AreEqual(null, builder.SafeMode); #pragma warning disable 618 Assert.AreEqual(false, builder.SlaveOk); #pragma warning restore Assert.AreEqual(MongoDefaults.SocketTimeout, builder.SocketTimeout); Assert.AreEqual(MongoDefaults.WaitQueueMultiple, builder.WaitQueueMultiple); Assert.AreEqual(MongoDefaults.WaitQueueSize, builder.WaitQueueSize); Assert.AreEqual(MongoDefaults.WaitQueueTimeout, builder.WaitQueueTimeout); Assert.AreEqual(MongoDefaults.ComputedWaitQueueSize, builder.ComputedWaitQueueSize); var connectionString = "mongodb://"; // not actually a valid connection string because it's missing the host Assert.AreEqual(connectionString, builder.ToString()); }
public TokuMXDatabase() { Name = "TokuMX"; CollectionName = "collection"; Category = "NoSQL\\Document Store"; Description = "TokuMX v2.0"; Website = "http://www.tokutek.com/tokumx-for-mongodb/"; Color = Color.Chartreuse; Requirements = new string[] { "MongoDB.Bson.dll", "MongoDB.Driver.dll", "MongoDB.Driver.Core.dll", "MongoDB.Driver.Legacy.dll" }; MongoUrlBuilder builder = new MongoUrlBuilder(); builder.MaxConnectionIdleTime = TimeSpan.FromHours(1); builder.MaxConnectionLifeTime = TimeSpan.FromHours(1); builder.Server = new MongoServerAddress("localhost"); builder.W = 1; ConnectionString = builder.ToString(); InsertsPerQuery = 5000; }
/// <summary> /// Gets the database connection string. /// </summary> /// <param name="config">The config.</param> /// <returns></returns> internal static string GetDatabaseConnectionString(NameValueCollection config) { string connectionString = GetConnectionString(config); var builder = new MongoUrlBuilder(connectionString); builder.DatabaseName = GetDatabaseName(connectionString, config); return builder.ToString(); }
private static string MangoDBSetDatabaseNameRandom(string connectionString) { var urlBuilder = new MongoUrlBuilder(connectionString) { DatabaseName = "brCounterTest_" + Guid.NewGuid().ToString("N") }; return urlBuilder.ToString(); }
/// <summary> /// Creates a new instance of MongoUrl. /// </summary> /// <param name="url">The URL containing the settings.</param> public MongoUrl( string url ) { var builder = new MongoUrlBuilder(url); // parses url serverSettings = builder.ToServerSettings().FrozenCopy(); this.waitQueueMultiple = builder.WaitQueueMultiple; this.waitQueueSize = builder.WaitQueueSize; this.databaseName = builder.DatabaseName; this.url = builder.ToString(); // keep canonical form }
/// <summary> /// Creates a new instance of MongoUrl. /// </summary> /// <param name="url">The URL containing the settings.</param> public MongoUrl( string url ) { var builder = new MongoUrlBuilder(url); // parses url serverSettings = builder.ToServerSettings().FrozenCopy(); this.waitQueueMultiple = builder.WaitQueueMultiple; this.waitQueueSize = builder.WaitQueueSize; this.databaseName = builder.DatabaseName; this.url = builder.ToString(); // keep canonical form }
public void TestHostWithPort() { var builder = new MongoUrlBuilder() { Server = new MongoServerAddress("mongo.xyz.com", 12345) }; Assert.AreEqual(1, builder.Servers.Count()); Assert.AreEqual("mongo.xyz.com", builder.Server.Host); Assert.AreEqual(12345, builder.Server.Port); Assert.AreEqual(ConnectionMode.Direct, builder.ConnectionMode); Assert.AreEqual(null, builder.ReplicaSetName); var connectionString = "mongodb://mongo.xyz.com:12345"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public void TestConnectionMode() { var connectionString = "mongodb://localhost"; var builder = new MongoUrlBuilder("mongodb://localhost") { ConnectionMode = ConnectionMode.Direct }; Assert.AreEqual(ConnectionMode.Direct, builder.ConnectionMode); Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); connectionString = "mongodb://localhost/?connect=replicaSet"; builder = new MongoUrlBuilder("mongodb://localhost") { ConnectionMode = ConnectionMode.ReplicaSet }; Assert.AreEqual(ConnectionMode.ReplicaSet, builder.ConnectionMode); Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public void TestHost() { var builder = new MongoUrlBuilder() { Server = new MongoServerAddress("mongo.xyz.com") }; Assert.AreEqual(null, builder.DefaultCredentials); Assert.AreEqual(1, builder.Servers.Count()); Assert.AreEqual("mongo.xyz.com", builder.Server.Host); Assert.AreEqual(27017, builder.Server.Port); Assert.AreEqual(null, builder.DatabaseName); Assert.AreEqual(ConnectionMode.Automatic, builder.ConnectionMode); var connectionString = "mongodb://mongo.xyz.com"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public MongoUrl( string url ) { var builder = new MongoUrlBuilder(url); this.url = builder.ToString(); // keep canonical form this.credentials = builder.Credentials; this.servers = builder.Servers; this.databaseName = builder.DatabaseName; this.connectionMode = builder.ConnectionMode; this.replicaSetName = builder.ReplicaSetName; this.safeMode = builder.SafeMode ?? SafeMode.False; // never null this.slaveOk = builder.SlaveOk; }
// constructors /// <summary> /// Creates a new instance of MongoUrl. /// </summary> /// <param name="url">The URL containing the settings.</param> public MongoUrl(string url) { _originalUrl = url; var builder = new MongoUrlBuilder(url); // parses url _allowInsecureTls = builder.AllowInsecureTls; _applicationName = builder.ApplicationName; _authenticationMechanism = builder.AuthenticationMechanism; _authenticationMechanismProperties = builder.AuthenticationMechanismProperties; _authenticationSource = builder.AuthenticationSource; _compressors = builder.Compressors; _connectionMode = builder.ConnectionMode; _connectTimeout = builder.ConnectTimeout; _databaseName = builder.DatabaseName; _fsync = builder.FSync; _guidRepresentation = builder.GuidRepresentation; _heartbeatInterval = builder.HeartbeatInterval; _heartbeatTimeout = builder.HeartbeatTimeout; _ipv6 = builder.IPv6; _isResolved = builder.Scheme != ConnectionStringScheme.MongoDBPlusSrv; _journal = builder.Journal; _localThreshold = builder.LocalThreshold; _maxConnectionIdleTime = builder.MaxConnectionIdleTime; _maxConnectionLifeTime = builder.MaxConnectionLifeTime; _maxConnectionPoolSize = builder.MaxConnectionPoolSize; _minConnectionPoolSize = builder.MinConnectionPoolSize; _password = builder.Password; _readConcernLevel = builder.ReadConcernLevel; _readPreference = builder.ReadPreference; _replicaSetName = builder.ReplicaSetName; _retryReads = builder.RetryReads; _retryWrites = builder.RetryWrites; _scheme = builder.Scheme; _servers = builder.Servers; _serverSelectionTimeout = builder.ServerSelectionTimeout; _socketTimeout = builder.SocketTimeout; _username = builder.Username; _useTls = builder.UseTls; _w = builder.W; #pragma warning disable 618 _waitQueueMultiple = builder.WaitQueueMultiple; _waitQueueSize = builder.WaitQueueSize; #pragma warning restore 618 _waitQueueTimeout = builder.WaitQueueTimeout; _wTimeout = builder.WTimeout; _url = builder.ToString(); // keep canonical form }
// constructors /// <summary> /// Creates a new instance of MongoUrl. /// </summary> /// <param name="url">The URL containing the settings.</param> public MongoUrl(string url) { _originalUrl = url; var builder = new MongoUrlBuilder(url); // parses url _applicationName = builder.ApplicationName; _authenticationMechanism = builder.AuthenticationMechanism; _authenticationMechanismProperties = builder.AuthenticationMechanismProperties; _authenticationSource = builder.AuthenticationSource; _connectionMode = builder.ConnectionMode; _connectTimeout = builder.ConnectTimeout; _databaseName = builder.DatabaseName; _fsync = builder.FSync; _guidRepresentation = builder.GuidRepresentation; _heartbeatInterval = builder.HeartbeatInterval; _heartbeatTimeout = builder.HeartbeatTimeout; _ipv6 = builder.IPv6; _journal = builder.Journal; _localThreshold = builder.LocalThreshold; _maxConnectionIdleTime = builder.MaxConnectionIdleTime; _maxConnectionLifeTime = builder.MaxConnectionLifeTime; _maxConnectionPoolSize = builder.MaxConnectionPoolSize; _minConnectionPoolSize = builder.MinConnectionPoolSize; _password = builder.Password; _readConcernLevel = builder.ReadConcernLevel; _readPreference = builder.ReadPreference; _replicaSetName = builder.ReplicaSetName; _retryWrites = builder.RetryWrites; _scheme = builder.Scheme; _servers = builder.Servers; _serverSelectionTimeout = builder.ServerSelectionTimeout; _socketTimeout = builder.SocketTimeout; _username = builder.Username; _useSsl = builder.UseSsl; _verifySslCertificate = builder.VerifySslCertificate; _w = builder.W; _waitQueueMultiple = builder.WaitQueueMultiple; _waitQueueSize = builder.WaitQueueSize; _waitQueueTimeout = builder.WaitQueueTimeout; _wTimeout = builder.WTimeout; _url = builder.ToString(); // keep canonical form }
private IContainer BootstrapContainer() { var container = new Container(); container.Configure(cfg => { cfg.Scan(scanner => { scanner.WithDefaultConventions(); scanner.AssemblyContainingType<IScript>(); }); var mongoUrlBuilder = new MongoUrlBuilder(Properties.Settings.Default.TestDatabaseConnectionString); cfg.For<MongoUrlBuilder>() .Singleton() .Use(new MongoUrlBuilder(Properties.Settings.Default.TestDatabaseConnectionString)); cfg.For<MongoDatabase>() .Transient() .Use(ctx => { var client = new MongoClient(mongoUrlBuilder.ToString()); client.GetServer().Connect(); return client.GetServer().GetDatabase(mongoUrlBuilder.DatabaseName); }); cfg.For<MongoDbScriptEnumerator>() .Transient() .Use<MongoDbScriptEnumerator>() .Ctor<string>().Is(Properties.Settings.Default.LogCollectionName); cfg.For<MongoScriptRunner>() .Transient() .Use(() => new MongoScriptRunner(Properties.Settings.Default.MongoClientPath, mongoUrlBuilder.ToMongoUrl())); }); return container; }
// constructors /// <summary> /// Creates a new instance of MongoUrl. /// </summary> /// <param name="url">The URL containing the settings.</param> public MongoUrl(string url) { var builder = new MongoUrlBuilder(url); // parses url _authenticationMechanism = builder.AuthenticationMechanism; _authenticationSource = builder.AuthenticationSource; _connectionMode = builder.ConnectionMode; _connectTimeout = builder.ConnectTimeout; _databaseName = builder.DatabaseName; _fsync = builder.FSync; _gssapiServiceName = builder.GssapiServiceName; _guidRepresentation = builder.GuidRepresentation; _ipv6 = builder.IPv6; _journal = builder.Journal; _maxConnectionIdleTime = builder.MaxConnectionIdleTime; _maxConnectionLifeTime = builder.MaxConnectionLifeTime; _maxConnectionPoolSize = builder.MaxConnectionPoolSize; _minConnectionPoolSize = builder.MinConnectionPoolSize; _password = builder.Password; _readPreference = builder.ReadPreference; _replicaSetName = builder.ReplicaSetName; _secondaryAcceptableLatency = builder.SecondaryAcceptableLatency; _servers = builder.Servers; #pragma warning disable 618 _slaveOk = builder.SlaveOk; #pragma warning restore _socketTimeout = builder.SocketTimeout; _username = builder.Username; _useSsl = builder.UseSsl; _verifySslCertificate = builder.VerifySslCertificate; _w = builder.W; _waitQueueMultiple = builder.WaitQueueMultiple; _waitQueueSize = builder.WaitQueueSize; _waitQueueTimeout = builder.WaitQueueTimeout; _wTimeout = builder.WTimeout; _url = builder.ToString(); // keep canonical form }
/// <summary> /// Builds the connection string for MongoDB. /// </summary> /// <param name="login">The login.</param> /// <param name="password">The password.</param> /// <param name="safeMode">The safe mode. True to receive write confirmation from mongo.</param> /// <param name="readOnSecondary">The read on secondary. True to direct read operations to cluster secondary nodes (secondaryPreferred), else try to read from primary (primaryPreferred).</param> /// <param name="addresses">List of addresses. Format: host1[:port1][,host2[:port2],...[,hostN[:portN]]]</param> /// <param name="connectionTimeoutMilliseconds">The time to attempt a connection before timing out.</param> /// <param name="socketTimeoutMilliseconds">The time to attempt a send or receive on a socket before the attempt times out.</param> /// <param name="databaseName">Database name required to authenticate against a specific database [optional].</param> /// <param name="readPreferenceTags">The read preference tags. List of a comma-separated list of colon-separated key-value pairs. Ex.: { {dc:ny,rack:1}, { dc:ny } } </param> public static string BuildConnectionString(string login, string password, bool safeMode, bool readOnSecondary, string addresses, int connectionTimeoutMilliseconds, int socketTimeoutMilliseconds, string databaseName = null, IEnumerable <string> readPreferenceTags = null) { var cb = new MongoDB.Driver.MongoUrlBuilder("mongodb://" + addresses.Replace("mongodb://", "")); cb.Username = login; cb.Password = password; cb.ConnectionMode = MongoDB.Driver.ConnectionMode.Automatic; cb.DatabaseName = databaseName; cb.W = safeMode ? WriteConcern.W1.W : WriteConcern.Unacknowledged.W; if (connectionTimeoutMilliseconds < 15000) { connectionTimeoutMilliseconds = 15000; } if (socketTimeoutMilliseconds < 15000) { socketTimeoutMilliseconds = 15000; } cb.ConnectTimeout = TimeSpan.FromMilliseconds(connectionTimeoutMilliseconds); cb.SocketTimeout = TimeSpan.FromMilliseconds(socketTimeoutMilliseconds); cb.MaxConnectionIdleTime = TimeSpan.FromSeconds(30); cb.ReadPreference = new ReadPreference(); cb.ReadPreference.ReadPreferenceMode = readOnSecondary ? ReadPreferenceMode.SecondaryPreferred : ReadPreferenceMode.PrimaryPreferred; if (readPreferenceTags != null) { foreach (var tag in readPreferenceTags.Where(i => i != null && i.IndexOf(':') > 0).Select(i => i.Split(':')).Select(i => new ReplicaSetTag(i[0], i[1]))) { cb.ReadPreference.AddTagSet(new ReplicaSetTagSet().Add(tag)); } } // generate final connection string return(cb.ToString()); }
public void TestSafeModeTrueFSyncTrueW2WTimeout() { var builder = new MongoUrlBuilder("mongodb://localhost") { SafeMode = new SafeMode(false) { FSync = true, W = 2, WTimeout = TimeSpan.FromMilliseconds(500) } }; Assert.AreEqual(true, builder.SafeMode.Enabled); Assert.AreEqual(true, builder.SafeMode.FSync); Assert.AreEqual(2, builder.SafeMode.W); Assert.AreEqual(TimeSpan.FromMilliseconds(500), builder.SafeMode.WTimeout); var connectionString = "mongodb://localhost/?safe=true;fsync=true;w=2;wtimeout=500ms"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=500ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=0.5").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=0.5s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=00:00:00.500").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeoutMS=500").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { SafeMode = new SafeMode(false) { FSync = true, W = 2, WTimeout = TimeSpan.FromSeconds(30) } }; Assert.AreEqual(true, builder.SafeMode.Enabled); Assert.AreEqual(true, builder.SafeMode.FSync); Assert.AreEqual(2, builder.SafeMode.W); Assert.AreEqual(TimeSpan.FromSeconds(30), builder.SafeMode.WTimeout); connectionString = "mongodb://localhost/?safe=true;fsync=true;w=2;wtimeout=30s"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=30000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=30").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=30s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=0.5m").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=00:00:30").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeoutMS=30000").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { SafeMode = new SafeMode(false) { FSync = true, W = 2, WTimeout = TimeSpan.FromMinutes(30) } }; Assert.AreEqual(true, builder.SafeMode.Enabled); Assert.AreEqual(true, builder.SafeMode.FSync); Assert.AreEqual(2, builder.SafeMode.W); Assert.AreEqual(TimeSpan.FromMinutes(30), builder.SafeMode.WTimeout); connectionString = "mongodb://localhost/?safe=true;fsync=true;w=2;wtimeout=30m"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=1800000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=1800").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=1800s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=30m").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=0.5h").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=00:30:00").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeoutMS=1800000").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { SafeMode = new SafeMode(false) { FSync = true, W = 2, WTimeout = TimeSpan.FromHours(1) } }; Assert.AreEqual(true, builder.SafeMode.Enabled); Assert.AreEqual(true, builder.SafeMode.FSync); Assert.AreEqual(2, builder.SafeMode.W); Assert.AreEqual(TimeSpan.FromHours(1), builder.SafeMode.WTimeout); connectionString = "mongodb://localhost/?safe=true;fsync=true;w=2;wtimeout=1h"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=3600000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=3600").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=3600s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=60m").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=1h").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=01:00:00").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeoutMS=3600000").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { SafeMode = new SafeMode(false) { FSync = true, W = 2, WTimeout = new TimeSpan(1, 2, 3) } }; Assert.AreEqual(true, builder.SafeMode.Enabled); Assert.AreEqual(true, builder.SafeMode.FSync); Assert.AreEqual(new TimeSpan(1, 2, 3), builder.SafeMode.WTimeout); connectionString = "mongodb://localhost/?safe=true;fsync=true;w=2;wtimeout=01:02:03"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=3723000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=3723").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=3723s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeout=01:02:03").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2;wtimeoutMS=3723000").ToString()); }
public void TestSafeModeTrueFSyncTrueW2() { var builder = new MongoUrlBuilder("mongodb://localhost") { SafeMode = new SafeMode(false) { FSync = true, W = 2 } }; Assert.AreEqual(true, builder.SafeMode.Enabled); Assert.AreEqual(true, builder.SafeMode.FSync); Assert.AreEqual(2, builder.SafeMode.W); var connectionString = "mongodb://localhost/?safe=true;fsync=true;w=2"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=true;w=2").ToString()); }
public void TestSafeModeWMajority() { var builder = new MongoUrlBuilder("mongodb://localhost") { SafeMode = new SafeMode(false) { WMode = "majority" } }; Assert.AreEqual(true, builder.SafeMode.Enabled); Assert.AreEqual("majority", builder.SafeMode.WMode); var connectionString = "mongodb://localhost/?safe=true;w=majority"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?w=majority").ToString()); }
public void TestSafeModeJTrue() { var builder = new MongoUrlBuilder("mongodb://localhost") { SafeMode = new SafeMode(false) { Journal = true } }; Assert.AreEqual(true, builder.SafeMode.Enabled); Assert.AreEqual(true, builder.SafeMode.Journal); var connectionString = "mongodb://localhost/?safe=true;journal=true"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?safe=true;j=true").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?journal=true").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?j=true").ToString()); }
public void TestSafeModeFSyncFalse() { var builder = new MongoUrlBuilder("mongodb://localhost") { SafeMode = new SafeMode(false) { FSync = false } }; Assert.AreEqual(false, builder.SafeMode.Enabled); Assert.AreEqual(false, builder.SafeMode.FSync); var connectionString = "mongodb://localhost"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?safe=false;fsync=false").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?fsync=false").ToString()); }
public void TestGuidRepresentationJavaLegacy() { var builder = new MongoUrlBuilder("mongodb://localhost") { GuidRepresentation = GuidRepresentation.JavaLegacy }; Assert.AreEqual(GuidRepresentation.JavaLegacy, builder.GuidRepresentation); var connectionString = "mongodb://localhost/?uuidRepresentation=JavaLegacy"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?guids=JavaLegacy").ToString()); }
internal MongoUrl(MongoUrlBuilder builder) { _allowInsecureTls = builder.AllowInsecureTls; _applicationName = builder.ApplicationName; _authenticationMechanism = builder.AuthenticationMechanism; _authenticationMechanismProperties = builder.AuthenticationMechanismProperties; _authenticationSource = builder.AuthenticationSource; _compressors = builder.Compressors; #pragma warning disable CS0618 // Type or member is obsolete if (builder.ConnectionModeSwitch == ConnectionModeSwitch.UseConnectionMode) { _connectionMode = builder.ConnectionMode; } _connectionModeSwitch = builder.ConnectionModeSwitch; #pragma warning restore CS0618 // Type or member is obsolete _connectTimeout = builder.ConnectTimeout; _databaseName = builder.DatabaseName; #pragma warning disable CS0618 // Type or member is obsolete if (builder.ConnectionModeSwitch == ConnectionModeSwitch.UseDirectConnection) { _directConnection = builder.DirectConnection; } #pragma warning restore CS0618 // Type or member is obsolete _fsync = builder.FSync; #pragma warning disable 618 if (BsonDefaults.GuidRepresentationMode == GuidRepresentationMode.V2) { _guidRepresentation = builder.GuidRepresentation; } #pragma warning restore 618 _heartbeatInterval = builder.HeartbeatInterval; _heartbeatTimeout = builder.HeartbeatTimeout; _ipv6 = builder.IPv6; _isResolved = builder.Scheme != ConnectionStringScheme.MongoDBPlusSrv; _journal = builder.Journal; _loadBalanced = builder.LoadBalanced; _localThreshold = builder.LocalThreshold; _maxConnecting = builder.MaxConnecting; _maxConnectionIdleTime = builder.MaxConnectionIdleTime; _maxConnectionLifeTime = builder.MaxConnectionLifeTime; _maxConnectionPoolSize = builder.MaxConnectionPoolSize; _minConnectionPoolSize = builder.MinConnectionPoolSize; _password = builder.Password; _readConcernLevel = builder.ReadConcernLevel; _readPreference = builder.ReadPreference; _replicaSetName = builder.ReplicaSetName; _retryReads = builder.RetryReads; _retryWrites = builder.RetryWrites; _scheme = builder.Scheme; _servers = builder.Servers; _serverSelectionTimeout = builder.ServerSelectionTimeout; _socketTimeout = builder.SocketTimeout; _srvMaxHosts = builder.SrvMaxHosts; _tlsDisableCertificateRevocationCheck = builder.TlsDisableCertificateRevocationCheck; _username = builder.Username; _useTls = builder.UseTls; _w = builder.W; #pragma warning disable 618 _waitQueueMultiple = builder.WaitQueueMultiple; _waitQueueSize = builder.WaitQueueSize; #pragma warning restore 618 _waitQueueTimeout = builder.WaitQueueTimeout; _wTimeout = builder.WTimeout; _url = builder.ToString(); // keep canonical form }
public void TestReadPreferenceSecondaryWithTwoTagSets() { var tagSets = new ReplicaSetTagSet[] { new ReplicaSetTagSet { { "dc", "ny" }, { "rack", "1" } }, new ReplicaSetTagSet { { "dc", "sf" } } }; var readPreference = new ReadPreference { ReadPreferenceMode = ReadPreferenceMode.Secondary, TagSets = tagSets }; var builder = new MongoUrlBuilder("mongodb://localhost") { ReadPreference = readPreference }; Assert.AreEqual(ReadPreferenceMode.Secondary, builder.ReadPreference.ReadPreferenceMode); var builderTagSets = builder.ReadPreference.TagSets.ToArray(); Assert.AreEqual(2, builderTagSets.Length); var builderTagSet1Tags = builderTagSets[0].Tags.ToArray(); var builderTagSet2Tags = builderTagSets[1].Tags.ToArray(); Assert.AreEqual(2, builderTagSet1Tags.Length); Assert.AreEqual(new ReplicaSetTag("dc", "ny"), builderTagSet1Tags[0]); Assert.AreEqual(new ReplicaSetTag("rack", "1"), builderTagSet1Tags[1]); Assert.AreEqual(1, builderTagSet2Tags.Length); Assert.AreEqual(new ReplicaSetTag("dc", "sf"), builderTagSet2Tags[0]); var connectionString = "mongodb://localhost/?readPreference=secondary;readPreferenceTags=dc:ny,rack:1;readPreferenceTags=dc:sf"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public void TestReplicaSetName() { var builder = new MongoUrlBuilder("mongodb://localhost") { ReplicaSetName = "name" }; Assert.AreEqual(ConnectionMode.Automatic, builder.ConnectionMode); Assert.AreEqual("name", builder.ReplicaSetName); var connectionString = "mongodb://localhost/?replicaSet=name"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public void TestMinConnectionPoolSize() { var builder = new MongoUrlBuilder("mongodb://localhost") { MinConnectionPoolSize = 123 }; Assert.AreEqual(123, builder.MinConnectionPoolSize); var connectionString = "mongodb://localhost/?minPoolSize=123"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public void TestMaxConnectionLifeTime() { var builder = new MongoUrlBuilder("mongodb://localhost") { MaxConnectionLifeTime = TimeSpan.FromMilliseconds(500) }; Assert.AreEqual(TimeSpan.FromMilliseconds(500), builder.MaxConnectionLifeTime); var connectionString = "mongodb://localhost/?maxLifeTime=500ms"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=500ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=0.5").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=0.5s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=00:00:00.500").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTimeMS=500").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { MaxConnectionLifeTime = TimeSpan.FromSeconds(30) }; Assert.AreEqual(TimeSpan.FromSeconds(30), builder.MaxConnectionLifeTime); connectionString = "mongodb://localhost/?maxLifeTime=30s"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=30000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=30").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=30s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=0.5m").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=00:00:30").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTimeMS=30000").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { MaxConnectionLifeTime = TimeSpan.FromMinutes(30) }; Assert.AreEqual(TimeSpan.FromMinutes(30), builder.MaxConnectionLifeTime); connectionString = "mongodb://localhost"; // the default maxLifeTime is 30 minutes Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=1800000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=1800").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=1800s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=30m").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=0.5h").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=00:30:00").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTimeMS=1800000").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { MaxConnectionLifeTime = TimeSpan.FromHours(1) }; Assert.AreEqual(TimeSpan.FromHours(1), builder.MaxConnectionLifeTime); connectionString = "mongodb://localhost/?maxLifeTime=1h"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=3600000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=3600").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=3600s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=60m").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=1h").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=01:00:00").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTimeMS=3600000").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { MaxConnectionLifeTime = new TimeSpan(1, 2, 3) }; Assert.AreEqual(new TimeSpan(1, 2, 3), builder.MaxConnectionLifeTime); connectionString = "mongodb://localhost/?maxLifeTime=01:02:03"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=3723000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=3723").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=3723s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTime=01:02:03").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?maxLifeTimeMS=3723000").ToString()); }
public void TestIpV6True() { var builder = new MongoUrlBuilder("mongodb://localhost") { IPv6 = true }; Assert.AreEqual(true, builder.IPv6); var connectionString = "mongodb://localhost/?ipv6=true"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public void TestTwoHosts() { var builder = new MongoUrlBuilder() { Servers = new MongoServerAddress[] { new MongoServerAddress("mongo1.xyz.com"), new MongoServerAddress("mongo2.xyz.com") } }; var servers = builder.Servers.ToArray(); Assert.AreEqual(null, builder.DefaultCredentials); Assert.AreEqual(2, servers.Length); Assert.AreEqual("mongo1.xyz.com", servers[0].Host); Assert.AreEqual(27017, servers[0].Port); Assert.AreEqual("mongo2.xyz.com", servers[1].Host); Assert.AreEqual(27017, servers[1].Port); Assert.AreEqual(null, builder.DatabaseName); Assert.AreEqual(ConnectionMode.Automatic, builder.ConnectionMode); Assert.AreEqual(null, builder.ReplicaSetName); var connectionString = "mongodb://mongo1.xyz.com,mongo2.xyz.com"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public void TestReadPreferenceNearest() { var builder = new MongoUrlBuilder("mongodb://localhost") { ReadPreference = ReadPreference.Nearest }; Assert.AreEqual(ReadPreferenceMode.Nearest, builder.ReadPreference.ReadPreferenceMode); Assert.AreEqual(null, builder.ReadPreference.TagSets); var connectionString = "mongodb://localhost/?readPreference=nearest"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public void TestSlaveOkTrue() { #pragma warning disable 618 var builder = new MongoUrlBuilder("mongodb://localhost") { SlaveOk = true }; Assert.AreEqual(true, builder.SlaveOk); #pragma warning restore var connectionString = "mongodb://localhost/?slaveOk=true"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public void TestSafeModeTrue() { var builder = new MongoUrlBuilder("mongodb://localhost") { SafeMode = new SafeMode(true) }; Assert.AreEqual(true, builder.SafeMode.Enabled); var connectionString = "mongodb://localhost/?safe=true"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); }
public void TestGuidRepresentationStandard() { var builder = new MongoUrlBuilder("mongodb://localhost") { GuidRepresentation = GuidRepresentation.Standard }; Assert.AreEqual(GuidRepresentation.Standard, builder.GuidRepresentation); var connectionString = "mongodb://localhost/?uuidRepresentation=Standard"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder(connectionString).ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?guids=Standard").ToString()); }
public void TestConnectTimeout() { var builder = new MongoUrlBuilder("mongodb://localhost") { ConnectTimeout = TimeSpan.FromMilliseconds(500) }; Assert.AreEqual(TimeSpan.FromMilliseconds(500), builder.ConnectTimeout); var connectionString = "mongodb://localhost/?connectTimeout=500ms"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=500ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=0.5").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=0.5s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=00:00:00.500").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeoutMS=500").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { ConnectTimeout = TimeSpan.FromSeconds(30) }; Assert.AreEqual(TimeSpan.FromSeconds(30), builder.ConnectTimeout); connectionString = "mongodb://localhost"; // the default connectTimeout is 30 seconds Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=30000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=30").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=30s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=0.5m").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=00:00:30").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeoutMS=30000").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { ConnectTimeout = TimeSpan.FromMinutes(30) }; Assert.AreEqual(TimeSpan.FromMinutes(30), builder.ConnectTimeout); connectionString = "mongodb://localhost/?connectTimeout=30m"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=1800000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=1800").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=1800s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=30m").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=0.5h").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=00:30:00").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeoutMS=1800000").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { ConnectTimeout = TimeSpan.FromHours(1) }; Assert.AreEqual(TimeSpan.FromHours(1), builder.ConnectTimeout); connectionString = "mongodb://localhost/?connectTimeout=1h"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=3600000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=3600").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=3600s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=60m").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=1h").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=01:00:00").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeoutMS=3600000").ToString()); builder = new MongoUrlBuilder("mongodb://localhost") { ConnectTimeout = new TimeSpan(1, 2, 3) }; Assert.AreEqual(new TimeSpan(1, 2, 3), builder.ConnectTimeout); connectionString = "mongodb://localhost/?connectTimeout=01:02:03"; Assert.AreEqual(connectionString, builder.ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=3723000ms").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=3723").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=3723s").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeout=01:02:03").ToString()); Assert.AreEqual(connectionString, new MongoUrlBuilder("mongodb://localhost/?connectTimeoutMS=3723000").ToString()); }