PageRenderTime 31ms CodeModel.GetById 9ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/MongoDB.Driver.Core.Tests/Core/Configuration/ConnectionPoolSettingsTests.cs

http://github.com/mongodb/mongo-csharp-driver
C# | 272 lines | 211 code | 47 blank | 14 comment | 0 complexity | 77f2715864290fca06dc51a71c129f75 MD5 | raw file
Possible License(s): Apache-2.0
  1. /* Copyright 2013-present 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 FluentAssertions;
  17. using MongoDB.Bson.TestHelpers.XunitExtensions;
  18. using Xunit;
  19. namespace MongoDB.Driver.Core.Configuration
  20. {
  21. public class ConnectionPoolSettingsTests
  22. {
  23. private static readonly ConnectionPoolSettings __defaults = new ConnectionPoolSettings();
  24. [Fact]
  25. public void constructor_should_initialize_instance()
  26. {
  27. var subject = new ConnectionPoolSettings();
  28. subject.MaintenanceInterval.Should().Be(TimeSpan.FromMinutes(1));
  29. subject.MaxConnections.Should().Be(100);
  30. subject.MinConnections.Should().Be(0);
  31. #pragma warning disable 618
  32. subject.WaitQueueSize.Should().Be(500);
  33. #pragma warning restore 618
  34. subject.WaitQueueTimeout.Should().Be(TimeSpan.FromMinutes(2));
  35. }
  36. [Fact]
  37. public void constructor_should_throw_when_maintenanceInterval_is_negative()
  38. {
  39. Action action = () => new ConnectionPoolSettings(maintenanceInterval: TimeSpan.FromSeconds(-1));
  40. action.ShouldThrow<ArgumentException>().And.ParamName.Should().Be("maintenanceInterval");
  41. }
  42. [Theory]
  43. [ParameterAttributeData]
  44. public void constructor_should_throw_when_maxConnections_is_negative_or_zero(
  45. [Values(-1, 0)]
  46. int maxConnections)
  47. {
  48. Action action = () => new ConnectionPoolSettings(maxConnections: maxConnections);
  49. action.ShouldThrow<ArgumentException>().And.ParamName.Should().Be("maxConnections");
  50. }
  51. [Fact]
  52. public void constructor_should_throw_when_minConnections_is_negative()
  53. {
  54. Action action = () => new ConnectionPoolSettings(minConnections: -1);
  55. action.ShouldThrow<ArgumentException>().And.ParamName.Should().Be("minConnections");
  56. }
  57. [Fact]
  58. public void constructor_should_throw_when_waitQueueSize_is_negative()
  59. {
  60. Action action = () => new ConnectionPoolSettings(waitQueueSize: -1);
  61. action.ShouldThrow<ArgumentException>().And.ParamName.Should().Be("waitQueueSize");
  62. }
  63. [Fact]
  64. public void constructor_should_throw_when_waitQueueTimeout_is_negative()
  65. {
  66. Action action = () => new ConnectionPoolSettings(waitQueueTimeout: TimeSpan.FromSeconds(-1));
  67. action.ShouldThrow<ArgumentException>().And.ParamName.Should().Be("waitQueueTimeout");
  68. }
  69. [Fact]
  70. public void constructor_with_maintenanceInterval_should_initialize_instance()
  71. {
  72. var maintenanceInterval = TimeSpan.FromSeconds(123);
  73. var subject = new ConnectionPoolSettings(maintenanceInterval: maintenanceInterval);
  74. subject.MaintenanceInterval.Should().Be(maintenanceInterval);
  75. subject.MaxConnections.Should().Be(__defaults.MaxConnections);
  76. subject.MinConnections.Should().Be(__defaults.MinConnections);
  77. #pragma warning disable 618
  78. subject.WaitQueueSize.Should().Be(__defaults.WaitQueueSize);
  79. #pragma warning restore 618
  80. subject.WaitQueueTimeout.Should().Be(__defaults.WaitQueueTimeout);
  81. }
  82. [Fact]
  83. public void constructor_with_maxConnections_should_initialize_instance()
  84. {
  85. var maxConnections = 1;
  86. var waitQueueSize = maxConnections * 5;
  87. var subject = new ConnectionPoolSettings(maxConnections: maxConnections);
  88. subject.MaintenanceInterval.Should().Be(__defaults.MaintenanceInterval);
  89. subject.MaxConnections.Should().Be(maxConnections);
  90. subject.MinConnections.Should().Be(__defaults.MinConnections);
  91. #pragma warning disable 618
  92. subject.WaitQueueSize.Should().Be(waitQueueSize);
  93. #pragma warning restore 618
  94. subject.WaitQueueTimeout.Should().Be(__defaults.WaitQueueTimeout);
  95. }
  96. [Fact]
  97. public void constructor_with_maxConnections_and_waitQueueSize_should_initialize_instance()
  98. {
  99. var maxConnections = 1;
  100. var waitQueueSize = 2;
  101. var subject = new ConnectionPoolSettings(maxConnections: maxConnections, waitQueueSize: waitQueueSize);
  102. subject.MaintenanceInterval.Should().Be(__defaults.MaintenanceInterval);
  103. subject.MaxConnections.Should().Be(maxConnections);
  104. subject.MinConnections.Should().Be(__defaults.MinConnections);
  105. #pragma warning disable 618
  106. subject.WaitQueueSize.Should().Be(waitQueueSize);
  107. #pragma warning restore 618
  108. subject.WaitQueueTimeout.Should().Be(__defaults.WaitQueueTimeout);
  109. }
  110. [Fact]
  111. public void constructor_with_minConnections_should_initialize_instance()
  112. {
  113. var minConnections = 123;
  114. var subject = new ConnectionPoolSettings(minConnections: minConnections);
  115. subject.MaintenanceInterval.Should().Be(__defaults.MaintenanceInterval);
  116. subject.MaxConnections.Should().Be(subject.MaxConnections);
  117. subject.MinConnections.Should().Be(minConnections);
  118. #pragma warning disable 618
  119. subject.WaitQueueSize.Should().Be(__defaults.WaitQueueSize);
  120. #pragma warning restore 618
  121. subject.WaitQueueTimeout.Should().Be(__defaults.WaitQueueTimeout);
  122. }
  123. [Fact]
  124. public void constructor_with_waitQueueSize_should_initialize_instance()
  125. {
  126. var waitQueueSize = 123;
  127. var subject = new ConnectionPoolSettings(waitQueueSize: waitQueueSize);
  128. subject.MaintenanceInterval.Should().Be(__defaults.MaintenanceInterval);
  129. subject.MaxConnections.Should().Be(subject.MaxConnections);
  130. subject.MinConnections.Should().Be(subject.MinConnections);
  131. #pragma warning disable 618
  132. subject.WaitQueueSize.Should().Be(waitQueueSize);
  133. #pragma warning restore 618
  134. subject.WaitQueueTimeout.Should().Be(__defaults.WaitQueueTimeout);
  135. }
  136. [Fact]
  137. public void constructor_with_waitQueueTimeout_should_initialize_instance()
  138. {
  139. var waitQueueTimeout = TimeSpan.FromSeconds(123);
  140. var subject = new ConnectionPoolSettings(waitQueueTimeout: waitQueueTimeout);
  141. subject.MaintenanceInterval.Should().Be(__defaults.MaintenanceInterval);
  142. subject.MaxConnections.Should().Be(subject.MaxConnections);
  143. subject.MinConnections.Should().Be(subject.MinConnections);
  144. #pragma warning disable 618
  145. subject.WaitQueueSize.Should().Be(subject.WaitQueueSize);
  146. #pragma warning restore 618
  147. subject.WaitQueueTimeout.Should().Be(waitQueueTimeout);
  148. }
  149. [Fact]
  150. public void With_maintenanceInterval_should_return_expected_result()
  151. {
  152. var oldMaintenanceInterval = TimeSpan.FromSeconds(1);
  153. var newMaintenanceInterval = TimeSpan.FromSeconds(2);
  154. var subject = new ConnectionPoolSettings(maintenanceInterval: oldMaintenanceInterval);
  155. var result = subject.With(maintenanceInterval: newMaintenanceInterval);
  156. result.MaintenanceInterval.Should().Be(newMaintenanceInterval);
  157. result.MaxConnections.Should().Be(subject.MaxConnections);
  158. result.MinConnections.Should().Be(subject.MinConnections);
  159. #pragma warning disable 618
  160. result.WaitQueueSize.Should().Be(subject.WaitQueueSize);
  161. #pragma warning restore 618
  162. result.WaitQueueTimeout.Should().Be(subject.WaitQueueTimeout);
  163. }
  164. [Fact]
  165. public void With_maxConnections_should_return_expected_result()
  166. {
  167. var oldMaxConnections = 1;
  168. var newMaxConnections = 2;
  169. var subject = new ConnectionPoolSettings(maxConnections: oldMaxConnections);
  170. var result = subject.With(maxConnections: newMaxConnections);
  171. result.MaintenanceInterval.Should().Be(subject.MaintenanceInterval);
  172. result.MaxConnections.Should().Be(newMaxConnections);
  173. result.MinConnections.Should().Be(subject.MinConnections);
  174. #pragma warning disable 618
  175. result.WaitQueueSize.Should().Be(subject.WaitQueueSize);
  176. #pragma warning restore 618
  177. result.WaitQueueTimeout.Should().Be(subject.WaitQueueTimeout);
  178. }
  179. [Fact]
  180. public void With_minConnections_should_return_expected_result()
  181. {
  182. var oldMinConnections = 1;
  183. var newMinConnections = 2;
  184. var subject = new ConnectionPoolSettings(minConnections: oldMinConnections);
  185. var result = subject.With(minConnections: newMinConnections);
  186. result.MaintenanceInterval.Should().Be(subject.MaintenanceInterval);
  187. result.MaxConnections.Should().Be(subject.MaxConnections);
  188. result.MinConnections.Should().Be(newMinConnections);
  189. #pragma warning disable 618
  190. result.WaitQueueSize.Should().Be(subject.WaitQueueSize);
  191. #pragma warning restore 618
  192. result.WaitQueueTimeout.Should().Be(subject.WaitQueueTimeout);
  193. }
  194. [Fact]
  195. public void With_waitQueueSizes_should_return_expected_result()
  196. {
  197. var oldWaitQueueSize = 1;
  198. var newWaitQueueSize = 2;
  199. var subject = new ConnectionPoolSettings(waitQueueSize: oldWaitQueueSize);
  200. var result = subject.With(waitQueueSize: newWaitQueueSize);
  201. result.MaintenanceInterval.Should().Be(subject.MaintenanceInterval);
  202. result.MaxConnections.Should().Be(subject.MaxConnections);
  203. result.MinConnections.Should().Be(subject.MinConnections);
  204. #pragma warning disable 618
  205. result.WaitQueueSize.Should().Be(newWaitQueueSize);
  206. #pragma warning restore 618
  207. result.WaitQueueTimeout.Should().Be(subject.WaitQueueTimeout);
  208. }
  209. [Fact]
  210. public void With_waitQueueTimeoutl_should_return_expected_result()
  211. {
  212. var oldWaitQueueTimeout = TimeSpan.FromSeconds(1);
  213. var newWaitQueueTimeout = TimeSpan.FromSeconds(2);
  214. var subject = new ConnectionPoolSettings(waitQueueTimeout: oldWaitQueueTimeout);
  215. var result = subject.With(waitQueueTimeout: newWaitQueueTimeout);
  216. result.MaintenanceInterval.Should().Be(subject.MaintenanceInterval);
  217. result.MaxConnections.Should().Be(subject.MaxConnections);
  218. result.MinConnections.Should().Be(subject.MinConnections);
  219. #pragma warning disable 618
  220. result.WaitQueueSize.Should().Be(subject.WaitQueueSize);
  221. #pragma warning restore 618
  222. result.WaitQueueTimeout.Should().Be(newWaitQueueTimeout);
  223. }
  224. }
  225. }