/// <summary> /// Retrieve a MongoClient with a preferred write region set. /// When connected to a multi-master enabled Cosmos DB database account, /// the preferred write region will be considered when determining which /// region to report to the client as the PRIMARY. /// </summary> /// <param name="mongoClientSettings">The MongoClientSettings used to instantiate the client.</param> /// <param name="preferredWriteRegion">The preferred write region</param> /// <returns>A MongoClient with the preferred write region set</returns> public static MongoClient GetMongoClientWithPreferredWriteRegion(MongoClientSettings mongoClientSettings, string preferredWriteRegion) { mongoClientSettings = mongoClientSettings.Clone(); if (mongoClientSettings.Servers.Any(x => x.Port != 10255)) { throw new ArgumentException("For geo-replication scenarios, the initial port in connection string should be 10255."); } if (!string.IsNullOrEmpty(preferredWriteRegion)) { // Setting the preferred write region is done by appending it to the application name // The server will attempt to parse the string after the last '@' as an Azure region // If the parse is successful, the writeable region geographically closest to the // preferred write region will be presented to the MongoClient as the PRIMARY mongoClientSettings.ApplicationName = mongoClientSettings.ApplicationName + $"@{preferredWriteRegion}"; } return(new MongoClient(mongoClientSettings)); }
public void TestEquals() { var settings = new MongoClientSettings(); var clone = settings.Clone(); Assert.IsTrue(clone.Equals(settings)); clone = settings.Clone(); clone.ConnectionMode = ConnectionMode.Direct; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.ConnectTimeout = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.Credentials = new[] { MongoCredential.CreateMongoCRCredential("db2", "user2", "password2") }; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.Credentials = new[] { MongoCredential.CreateMongoCRCredential("db", "user2", "password2") }; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.GuidRepresentation = GuidRepresentation.PythonLegacy; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.IPv6 = !settings.IPv6; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionIdleTime = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionLifeTime = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionPoolSize = settings.MaxConnectionPoolSize + 1; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.MinConnectionPoolSize = settings.MinConnectionPoolSize + 1; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.ReadPreference = ReadPreference.Secondary; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.ReplicaSetName = "abc"; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.LocalThreshold = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.Server = new MongoServerAddress("someotherhost"); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.ServerSelectionTimeout = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.SocketTimeout = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.SslSettings = new SslSettings { CheckCertificateRevocation = false }; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.UseSsl = !settings.UseSsl; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.VerifySslCertificate = !settings.VerifySslCertificate; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.WaitQueueSize = settings.WaitQueueSize + 1; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.WaitQueueTimeout = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.WriteConcern = WriteConcern.W2; Assert.IsFalse(clone.Equals(settings)); }
public void TestEquals() { var settings = new MongoClientSettings(); var clone = settings.Clone(); Assert.True(clone.Equals(settings)); clone = settings.Clone(); clone.ApplicationName = "app2"; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ConnectionMode = ConnectionMode.Direct; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ConnectTimeout = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.Credential = MongoCredential.CreateMongoCRCredential("db2", "user2", "password2"); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.Credential = MongoCredential.CreateMongoCRCredential("db", "user2", "password2"); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.GuidRepresentation = GuidRepresentation.PythonLegacy; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.HeartbeatInterval = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.HeartbeatTimeout = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.IPv6 = !settings.IPv6; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionIdleTime = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionLifeTime = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionPoolSize = settings.MaxConnectionPoolSize + 1; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ReadConcern = ReadConcern.Majority; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.MinConnectionPoolSize = settings.MinConnectionPoolSize + 1; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ReadPreference = ReadPreference.Secondary; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ReplicaSetName = "abc"; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.RetryWrites = true; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.LocalThreshold = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.Server = new MongoServerAddress("someotherhost"); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ServerSelectionTimeout = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.SocketTimeout = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.SslSettings = new SslSettings { CheckCertificateRevocation = false }; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.UseSsl = !settings.UseSsl; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.VerifySslCertificate = !settings.VerifySslCertificate; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.WaitQueueSize = settings.WaitQueueSize + 1; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.WaitQueueTimeout = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.WriteConcern = WriteConcern.W2; Assert.False(clone.Equals(settings)); }
public void TestEquals() { var settings = new MongoClientSettings(); var clone = settings.Clone(); Assert.True(clone.Equals(settings)); clone = settings.Clone(); clone.AllowInsecureTls = !settings.AllowInsecureTls; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ApplicationName = "app2"; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.Compressors = new[] { new CompressorConfiguration(CompressorType.Zlib) }; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ConnectionMode = ConnectionMode.Direct; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ConnectTimeout = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); #pragma warning disable 618 clone.Credential = MongoCredential.CreateMongoCRCredential("db2", "user2", "password2"); #pragma warning restore 618 Assert.False(clone.Equals(settings)); clone = settings.Clone(); #pragma warning disable 618 clone.Credential = MongoCredential.CreateMongoCRCredential("db", "user2", "password2"); #pragma warning restore 618 Assert.False(clone.Equals(settings)); #pragma warning disable 618 if (BsonDefaults.GuidRepresentationMode == GuidRepresentationMode.V2) { clone = settings.Clone(); var unequalGuidRepresentation = clone.GuidRepresentation != GuidRepresentation.PythonLegacy ? GuidRepresentation.PythonLegacy : GuidRepresentation.CSharpLegacy; clone.GuidRepresentation = unequalGuidRepresentation; Assert.False(clone.Equals(settings)); } #pragma warning restore 618 clone = settings.Clone(); clone.HeartbeatInterval = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.HeartbeatTimeout = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.IPv6 = !settings.IPv6; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.LocalThreshold = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionIdleTime = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionLifeTime = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionPoolSize = settings.MaxConnectionPoolSize + 1; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ReadConcern = ReadConcern.Majority; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.MinConnectionPoolSize = settings.MinConnectionPoolSize + 1; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ReadPreference = ReadPreference.Secondary; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ReplicaSetName = "abc"; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.RetryReads = false; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.RetryWrites = false; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.Scheme = ConnectionStringScheme.MongoDBPlusSrv; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.Server = new MongoServerAddress("someotherhost"); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.ServerSelectionTimeout = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.SocketTimeout = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.SslSettings = new SslSettings { CheckCertificateRevocation = false }; Assert.False(clone.Equals(settings)); clone = settings.Clone(); #pragma warning disable 618 clone.UseSsl = !settings.UseSsl; #pragma warning restore 618 Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.UseTls = !settings.UseTls; Assert.False(clone.Equals(settings)); clone = settings.Clone(); #pragma warning disable 618 clone.VerifySslCertificate = !settings.VerifySslCertificate; #pragma warning restore 618 Assert.False(clone.Equals(settings)); clone = settings.Clone(); #pragma warning disable 618 clone.WaitQueueSize = settings.WaitQueueSize + 1; #pragma warning restore 618 Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.WaitQueueTimeout = new TimeSpan(1, 2, 3); Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.WriteConcern = WriteConcern.W2; Assert.False(clone.Equals(settings)); clone = settings.Clone(); clone.SdamLogFilename = "garbage"; Assert.False(clone.Equals(settings)); }
public void TestEquals() { var settings = new MongoClientSettings(); var clone = settings.Clone(); Assert.IsTrue(clone.Equals(settings)); clone = settings.Clone(); clone.ConnectionMode = ConnectionMode.Direct; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.ConnectTimeout = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.Credentials = new[] { MongoCredential.CreateMongoCRCredential("db2", "user2", "password2") }; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.Credentials = new[] { MongoCredential.CreateMongoCRCredential("db", "user2", "password2") }; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.GuidRepresentation = GuidRepresentation.PythonLegacy; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.IPv6 = !settings.IPv6; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionIdleTime = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionLifeTime = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.MaxConnectionPoolSize = settings.MaxConnectionPoolSize + 1; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.MinConnectionPoolSize = settings.MinConnectionPoolSize + 1; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.OperationTimeout = TimeSpan.FromMilliseconds(20); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.ReadPreference = ReadPreference.Secondary; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.ReplicaSetName = "abc"; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.SecondaryAcceptableLatency = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.Server = new MongoServerAddress("someotherhost"); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.SocketTimeout = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.SslSettings = new SslSettings { CheckCertificateRevocation = false }; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.UseSsl = !settings.UseSsl; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.VerifySslCertificate = !settings.VerifySslCertificate; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.WaitQueueSize = settings.WaitQueueSize + 1; Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.WaitQueueTimeout = new TimeSpan(1, 2, 3); Assert.IsFalse(clone.Equals(settings)); clone = settings.Clone(); clone.WriteConcern = WriteConcern.W2; Assert.IsFalse(clone.Equals(settings)); }