ToString() публичный Метод

Returns the canonical URL based on the settings in this MongoUrlBuilder.
public ToString ( ) : string
Результат string
        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;
        }
Пример #6
0
        /// <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();
        }
Пример #7
0
 private static string MangoDBSetDatabaseNameRandom(string connectionString)
 {
     var urlBuilder = new MongoUrlBuilder(connectionString)
                          {
                              DatabaseName = "brCounterTest_" + Guid.NewGuid().ToString("N")
                          };
     return urlBuilder.ToString();
 }
Пример #8
0
 /// <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
 }
Пример #9
0
        /// <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());
        }
Пример #13
0
 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;
 }
Пример #14
0
        // 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
        }
Пример #15
0
        // 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
        }
Пример #16
0
        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;
        }
Пример #17
0
        // 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
        }
Пример #18
0
        /// <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());
        }
Пример #25
0
        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());
        }