PageRenderTime 45ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/src/MongoDB.Driver.Core.Tests/Core/Configuration/ClusterSettingsTests.cs

http://github.com/mongodb/mongo-csharp-driver
C# | 217 lines | 163 code | 40 blank | 14 comment | 0 complexity | 0240498952d1f030c321174a9178cee1 MD5 | raw file
Possible License(s): Apache-2.0
  1. /* Copyright 2013-2014 MongoDB Inc.
  2. *
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS,
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License.
  14. */
  15. using System;
  16. using System.Net;
  17. using FluentAssertions;
  18. using MongoDB.Bson.TestHelpers.EqualityComparers;
  19. using MongoDB.Driver.Core.Clusters;
  20. using MongoDB.Driver.Core.Misc;
  21. using NUnit.Framework;
  22. namespace MongoDB.Driver.Core.Configuration
  23. {
  24. [TestFixture]
  25. public class ClusterSettingsTests
  26. {
  27. private static readonly ClusterSettings __defaults = new ClusterSettings();
  28. [Test]
  29. public void constructor_should_initialize_instance()
  30. {
  31. var subject = new ClusterSettings();
  32. subject.ConnectionMode.Should().Be(ClusterConnectionMode.Automatic);
  33. subject.EndPoints.Should().EqualUsing(new[] { new DnsEndPoint("localhost", 27017) }, EndPointHelper.EndPointEqualityComparer);
  34. subject.MaxServerSelectionWaitQueueSize.Should().Be(500);
  35. subject.ReplicaSetName.Should().Be(null);
  36. subject.ServerSelectionTimeout.Should().Be(TimeSpan.FromSeconds(30));
  37. }
  38. [Test]
  39. public void constructor_should_throw_when_endPoints_is_null()
  40. {
  41. Action action = () => new ClusterSettings(endPoints: null);
  42. action.ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("endPoints");
  43. }
  44. [Test]
  45. public void constructor_should_throw_when_serverSelectionTimeout_is_negative()
  46. {
  47. Action action = () => new ClusterSettings(serverSelectionTimeout: TimeSpan.FromSeconds(-1));
  48. action.ShouldThrow<ArgumentException>().And.ParamName.Should().Be("serverSelectionTimeout");
  49. }
  50. [Test]
  51. public void constructor_should_throw_when_maxServerSelectionWaitQueueSize_is_negative()
  52. {
  53. Action action = () => new ClusterSettings(maxServerSelectionWaitQueueSize: -1);
  54. action.ShouldThrow<ArgumentException>().And.ParamName.Should().Be("maxServerSelectionWaitQueueSize");
  55. }
  56. [Test]
  57. public void constructor_with_connectionMode_should_initialize_instance()
  58. {
  59. var connectionMode = ClusterConnectionMode.ReplicaSet;
  60. var subject = new ClusterSettings(connectionMode: connectionMode);
  61. subject.ConnectionMode.Should().Be(connectionMode);
  62. subject.EndPoints.Should().EqualUsing(__defaults.EndPoints, EndPointHelper.EndPointEqualityComparer);
  63. subject.MaxServerSelectionWaitQueueSize.Should().Be(__defaults.MaxServerSelectionWaitQueueSize);
  64. subject.ReplicaSetName.Should().Be(__defaults.ReplicaSetName);
  65. subject.ServerSelectionTimeout.Should().Be(__defaults.ServerSelectionTimeout);
  66. }
  67. [Test]
  68. public void constructor_with_endPoints_should_initialize_instance()
  69. {
  70. var endPoints = new[] { new DnsEndPoint("remotehost", 27123) };
  71. var subject = new ClusterSettings(endPoints: endPoints);
  72. subject.ConnectionMode.Should().Be(__defaults.ConnectionMode);
  73. subject.EndPoints.Should().EqualUsing(endPoints, EndPointHelper.EndPointEqualityComparer);
  74. subject.MaxServerSelectionWaitQueueSize.Should().Be(__defaults.MaxServerSelectionWaitQueueSize);
  75. subject.ReplicaSetName.Should().Be(__defaults.ReplicaSetName);
  76. subject.ServerSelectionTimeout.Should().Be(__defaults.ServerSelectionTimeout);
  77. }
  78. [Test]
  79. public void constructor_with_maxServerSelectionWaitQueueSize_should_initialize_instance()
  80. {
  81. var maxServerSelectionWaitQueueSize = 123;
  82. var subject = new ClusterSettings(maxServerSelectionWaitQueueSize: maxServerSelectionWaitQueueSize);
  83. subject.ConnectionMode.Should().Be(__defaults.ConnectionMode);
  84. subject.EndPoints.Should().EqualUsing(__defaults.EndPoints, EndPointHelper.EndPointEqualityComparer);
  85. subject.MaxServerSelectionWaitQueueSize.Should().Be(maxServerSelectionWaitQueueSize);
  86. subject.ReplicaSetName.Should().Be(__defaults.ReplicaSetName);
  87. subject.ServerSelectionTimeout.Should().Be(__defaults.ServerSelectionTimeout);
  88. }
  89. [Test]
  90. public void constructor_with_replicaSetName_should_initialize_instance()
  91. {
  92. var replicaSetName = "abc";
  93. var subject = new ClusterSettings(replicaSetName: replicaSetName);
  94. subject.ConnectionMode.Should().Be(__defaults.ConnectionMode);
  95. subject.EndPoints.Should().EqualUsing(__defaults.EndPoints, EndPointHelper.EndPointEqualityComparer);
  96. subject.MaxServerSelectionWaitQueueSize.Should().Be(__defaults.MaxServerSelectionWaitQueueSize);
  97. subject.ReplicaSetName.Should().Be(replicaSetName);
  98. subject.ServerSelectionTimeout.Should().Be(__defaults.ServerSelectionTimeout);
  99. }
  100. [Test]
  101. public void constructor_with_serverSelectionTimeout_should_initialize_instance()
  102. {
  103. var serverSelectionTimeout = TimeSpan.FromSeconds(123);
  104. var subject = new ClusterSettings(serverSelectionTimeout: serverSelectionTimeout);
  105. subject.ConnectionMode.Should().Be(__defaults.ConnectionMode);
  106. subject.EndPoints.Should().EqualUsing(__defaults.EndPoints, EndPointHelper.EndPointEqualityComparer);
  107. subject.MaxServerSelectionWaitQueueSize.Should().Be(__defaults.MaxServerSelectionWaitQueueSize);
  108. subject.ReplicaSetName.Should().Be(__defaults.ReplicaSetName);
  109. subject.ServerSelectionTimeout.Should().Be(serverSelectionTimeout);
  110. }
  111. [Test]
  112. public void With_connectionMode_should_return_expected_result()
  113. {
  114. var oldConnectionMode = ClusterConnectionMode.Automatic;
  115. var newConnectionMode = ClusterConnectionMode.ReplicaSet;
  116. var subject = new ClusterSettings(connectionMode: oldConnectionMode);
  117. var result = subject.With(connectionMode: newConnectionMode);
  118. result.ConnectionMode.Should().Be(newConnectionMode);
  119. result.EndPoints.Should().EqualUsing(subject.EndPoints, EndPointHelper.EndPointEqualityComparer);
  120. result.MaxServerSelectionWaitQueueSize.Should().Be(subject.MaxServerSelectionWaitQueueSize);
  121. result.ReplicaSetName.Should().Be(subject.ReplicaSetName);
  122. result.ServerSelectionTimeout.Should().Be(subject.ServerSelectionTimeout);
  123. }
  124. [Test]
  125. public void With_endPoints_should_return_expected_result()
  126. {
  127. var oldEndPoints = new[] { new DnsEndPoint("remotehost1", 27123) };
  128. var newEndPoints = new[] { new DnsEndPoint("remotehost2", 27123) };
  129. var subject = new ClusterSettings(endPoints: oldEndPoints);
  130. var result = subject.With(endPoints: newEndPoints);
  131. result.ConnectionMode.Should().Be(subject.ConnectionMode);
  132. result.EndPoints.Should().EqualUsing(newEndPoints, EndPointHelper.EndPointEqualityComparer);
  133. result.MaxServerSelectionWaitQueueSize.Should().Be(subject.MaxServerSelectionWaitQueueSize);
  134. result.ReplicaSetName.Should().Be(subject.ReplicaSetName);
  135. result.ServerSelectionTimeout.Should().Be(subject.ServerSelectionTimeout);
  136. }
  137. [Test]
  138. public void With_maxServerSelectionWaitQueueSize_should_return_expected_result()
  139. {
  140. var oldMaxServerSelectionWaitQueueSize = 1;
  141. var newMaxServerSelectionWaitQueueSize = 2;
  142. var subject = new ClusterSettings(maxServerSelectionWaitQueueSize: oldMaxServerSelectionWaitQueueSize);
  143. var result = subject.With(maxServerSelectionWaitQueueSize: newMaxServerSelectionWaitQueueSize);
  144. result.ConnectionMode.Should().Be(subject.ConnectionMode);
  145. result.EndPoints.Should().EqualUsing(subject.EndPoints, EndPointHelper.EndPointEqualityComparer);
  146. result.MaxServerSelectionWaitQueueSize.Should().Be(newMaxServerSelectionWaitQueueSize);
  147. result.ReplicaSetName.Should().Be(subject.ReplicaSetName);
  148. result.ServerSelectionTimeout.Should().Be(subject.ServerSelectionTimeout);
  149. }
  150. [Test]
  151. public void With_replicaSetName_should_return_expected_result()
  152. {
  153. var oldReplicaSetName = "abc";
  154. var newReplicaSetName = "def";
  155. var subject = new ClusterSettings(replicaSetName: oldReplicaSetName);
  156. var result = subject.With(replicaSetName: newReplicaSetName);
  157. result.ConnectionMode.Should().Be(subject.ConnectionMode);
  158. result.EndPoints.Should().EqualUsing(subject.EndPoints, EndPointHelper.EndPointEqualityComparer);
  159. result.MaxServerSelectionWaitQueueSize.Should().Be(subject.MaxServerSelectionWaitQueueSize);
  160. result.ReplicaSetName.Should().Be(newReplicaSetName);
  161. result.ServerSelectionTimeout.Should().Be(subject.ServerSelectionTimeout);
  162. }
  163. [Test]
  164. public void With_serverSelectionTimeout_should_return_expected_result()
  165. {
  166. var oldServerSelectionTimeout = TimeSpan.FromSeconds(1);
  167. var newServerSelectionTimeout = TimeSpan.FromSeconds(2);
  168. var subject = new ClusterSettings(serverSelectionTimeout: oldServerSelectionTimeout);
  169. var result = subject.With(serverSelectionTimeout: newServerSelectionTimeout);
  170. result.ConnectionMode.Should().Be(subject.ConnectionMode);
  171. result.EndPoints.Should().EqualUsing(subject.EndPoints, EndPointHelper.EndPointEqualityComparer);
  172. result.MaxServerSelectionWaitQueueSize.Should().Be(subject.MaxServerSelectionWaitQueueSize);
  173. result.ReplicaSetName.Should().Be(subject.ReplicaSetName);
  174. result.ServerSelectionTimeout.Should().Be(newServerSelectionTimeout);
  175. }
  176. }
  177. }