public void RetryRunISingleObjectQuery() { var errorConnection = Substitute.For <IConnection>(); errorConnection .RunAsync(Arg.Any <IDatumConverterFactory>(), (ISingleObjectQuery <int>)null, Arg.Any <CancellationToken>()) .Returns(x => { throw new RethinkDbNetworkException("!"); }); var successConnection = Substitute.For <IConnection>(); successConnection .RunAsync(Arg.Any <IDatumConverterFactory>(), (ISingleObjectQuery <int>)null, Arg.Any <CancellationToken>()) .Returns(y => { var x = new TaskCompletionSource <int>(); x.SetResult(1); return(x.Task); }); var rootConnectionFactory = CreateRootConnectionFactory(errorConnection, successConnection); var cf = new ReliableConnectionFactory(rootConnectionFactory); var conn = cf.Get(); Assert.That(conn, Is.Not.Null); Assert.That(conn.Run((ISingleObjectQuery <int>)null), Is.EqualTo(1)); conn.Dispose(); // Error connection was attempted... errorConnection.Received().RunAsync(Arg.Any <IDatumConverterFactory>(), (ISingleObjectQuery <int>)null, Arg.Any <CancellationToken>()); // Then another connection was attempted after the error failed. successConnection.Received().RunAsync(Arg.Any <IDatumConverterFactory>(), (ISingleObjectQuery <int>)null, Arg.Any <CancellationToken>()); }
public static IConnectionFactory CreateConnectionFactory(string clusterName) { if (DefaultSettings.Value == null) throw new ConfigurationErrorsException("No rethinkdb client configuration section located"); foreach (ClusterElement cluster in DefaultSettings.Value.Clusters) { if (cluster.Name == clusterName) { IConnectionFactory connectionFactory = CreateDefaultConnectionFactory(cluster); if (cluster.NetworkErrorHandling != null && cluster.NetworkErrorHandling.Enabled) connectionFactory = new ReliableConnectionFactory(connectionFactory); if (cluster.ConnectionPool != null && cluster.ConnectionPool.Enabled) connectionFactory = new ConnectionPoolingConnectionFactory(connectionFactory); else if (cluster.ConnectionPool != null && cluster.ConnectionPool.Enabled && cluster.ConnectionPool.QueryTimeout != 0) connectionFactory = new ConnectionPoolingConnectionFactory(connectionFactory, new TimeSpan(0, 0, cluster.ConnectionPool.QueryTimeout)); return connectionFactory; } } throw new ArgumentException("Cluster name could not be found in configuration", "clusterName"); }
public void RetryRunISingleObjectQuery() { var errorConnection = Substitute.For<IConnection>(); errorConnection .RunAsync(Arg.Any<IQueryConverter>(), (ISingleObjectQuery<int>)null, Arg.Any<CancellationToken>()) .Returns(x => { throw new RethinkDbNetworkException("!"); }); var successConnection = Substitute.For<IConnection>(); successConnection .RunAsync(Arg.Any<IQueryConverter>(), (ISingleObjectQuery<int>)null, Arg.Any<CancellationToken>()) .Returns(y => { var x = new TaskCompletionSource<int>(); x.SetResult(1); return x.Task; }); var rootConnectionFactory = CreateRootConnectionFactory(errorConnection, successConnection); var cf = new ReliableConnectionFactory(rootConnectionFactory); var conn = cf.Get(); Assert.That(conn, Is.Not.Null); Assert.That(conn.Run((ISingleObjectQuery<int>)null), Is.EqualTo(1)); conn.Dispose(); // Error connection was attempted... errorConnection.Received().RunAsync(Arg.Any<IQueryConverter>(), (ISingleObjectQuery<int>)null, Arg.Any<CancellationToken>()); // Then another connection was attempted after the error failed. successConnection.Received().RunAsync(Arg.Any<IQueryConverter>(), (ISingleObjectQuery<int>)null, Arg.Any<CancellationToken>()); }
public static IConnectionFactory CreateConnectionFactory(string clusterName) { if (DefaultSettings.Value == null) { throw new ConfigurationErrorsException("No rethinkdb client configuration section located"); } foreach (ClusterElement cluster in DefaultSettings.Value.Clusters) { if (cluster.Name == clusterName) { IConnectionFactory connectionFactory = CreateDefaultConnectionFactory(cluster); if (cluster.NetworkErrorHandling != null && cluster.NetworkErrorHandling.Enabled) { connectionFactory = new ReliableConnectionFactory(connectionFactory); } if (cluster.ConnectionPool != null && cluster.ConnectionPool.Enabled) { connectionFactory = new ConnectionPoolingConnectionFactory(connectionFactory); } return(connectionFactory); } } throw new ArgumentException("Cluster name could not be found in configuration", "clusterName"); }
public void GetCallsUnderlyingFactory() { var rootConnectionFactory = Substitute.For <IConnectionFactory>(); var cf = new ReliableConnectionFactory(rootConnectionFactory); cf.Get(); rootConnectionFactory.Received().GetAsync(); }
public void GetCallsUnderlyingFactory() { var rootConnectionFactory = Substitute.For<IConnectionFactory>(); var cf = new ReliableConnectionFactory(rootConnectionFactory); cf.Get(); rootConnectionFactory.Received().GetAsync(); }
public void DelegateRunISingleObjectQuery() { var mockConnection = Substitute.For<IConnection>(); mockConnection.RunAsync(Arg.Any<IQueryConverter>(), (ISingleObjectQuery<int>)null, Arg.Any<CancellationToken>()).Returns( y => { var x = new TaskCompletionSource<int>(); x.SetResult(1); return x.Task; } ); var rootConnectionFactory = CreateRootConnectionFactory(mockConnection); var cf = new ReliableConnectionFactory(rootConnectionFactory); var conn = cf.Get(); Assert.That(conn, Is.Not.Null); Assert.That(conn.Run((ISingleObjectQuery<int>)null), Is.EqualTo(1)); conn.Dispose(); }
public void DelegateRunISingleObjectQuery() { var mockConnection = Substitute.For <IConnection>(); mockConnection.RunAsync(Arg.Any <IDatumConverterFactory>(), (ISingleObjectQuery <int>)null, Arg.Any <CancellationToken>()).Returns( y => { var x = new TaskCompletionSource <int>(); x.SetResult(1); return(x.Task); } ); var rootConnectionFactory = CreateRootConnectionFactory(mockConnection); var cf = new ReliableConnectionFactory(rootConnectionFactory); var conn = cf.Get(); Assert.That(conn, Is.Not.Null); Assert.That(conn.Run((ISingleObjectQuery <int>)null), Is.EqualTo(1)); conn.Dispose(); }