public void RetryPolicy_Extended(string resultError, Type exceptionType) { _scassandraManager = SCassandraManager.Instance; var extendedRetryPolicy = new TestExtendedRetryPolicy(); var builder = Cluster.Builder() .AddContactPoint("127.0.0.1") .WithPort(_scassandraManager.BinaryPort) .WithRetryPolicy(extendedRetryPolicy) .WithReconnectionPolicy(new ConstantReconnectionPolicy(long.MaxValue)); using (var cluster = builder.Build()) { var session = (Session)cluster.Connect(); const string cql = "select * from table1"; _scassandraManager.PrimeQuery(cql, "{\"result\" : \"" + resultError + "\"}").Wait(); Exception throwedException = null; try { session.Execute(cql); } catch (Exception ex) { throwedException = ex; } finally { Assert.NotNull(throwedException); Assert.AreEqual(throwedException.GetType(), exceptionType); Assert.AreEqual(1, Interlocked.Read(ref extendedRetryPolicy.RequestErrorConter)); Assert.AreEqual(0, Interlocked.Read(ref extendedRetryPolicy.ReadTimeoutCounter)); Assert.AreEqual(0, Interlocked.Read(ref extendedRetryPolicy.WriteTimeoutCounter)); Assert.AreEqual(0, Interlocked.Read(ref extendedRetryPolicy.UnavailableCounter)); } } }
public void RetryPolicy_Extended(string resultError, Type exceptionType) { using (var simulacronCluster = SimulacronCluster.CreateNew(new SimulacronOptions())) { var contactPoint = simulacronCluster.InitialContactPoint; var extendedRetryPolicy = new TestExtendedRetryPolicy(); var builder = Cluster.Builder() .AddContactPoint(contactPoint) .WithRetryPolicy(extendedRetryPolicy) .WithReconnectionPolicy(new ConstantReconnectionPolicy(long.MaxValue)); using (var cluster = builder.Build()) { var session = (Session)cluster.Connect(); const string cql = "select * from table1"; var primeQuery = new { when = new { query = cql }, then = new { result = resultError, delay_in_ms = 0, message = resultError, ignore_on_prepare = false } }; simulacronCluster.Prime(primeQuery); Exception throwedException = null; try { session.Execute(cql); } catch (Exception ex) { throwedException = ex; } finally { Assert.NotNull(throwedException); Assert.AreEqual(throwedException.GetType(), exceptionType); Assert.AreEqual(1, Interlocked.Read(ref extendedRetryPolicy.RequestErrorConter)); Assert.AreEqual(0, Interlocked.Read(ref extendedRetryPolicy.ReadTimeoutCounter)); Assert.AreEqual(0, Interlocked.Read(ref extendedRetryPolicy.WriteTimeoutCounter)); Assert.AreEqual(0, Interlocked.Read(ref extendedRetryPolicy.UnavailableCounter)); } } } }
public void RetryPolicy_Extended(ServerError resultError, Type exceptionType) { using (var simulacronCluster = SimulacronCluster.CreateNew(new SimulacronOptions())) { var contactPoint = simulacronCluster.InitialContactPoint; var extendedRetryPolicy = new TestExtendedRetryPolicy(); var builder = Cluster.Builder() .AddContactPoint(contactPoint) .WithRetryPolicy(extendedRetryPolicy) .WithReconnectionPolicy(new ConstantReconnectionPolicy(long.MaxValue)); using (var cluster = builder.Build()) { var session = (Session)cluster.Connect(); const string cql = "select * from table1"; simulacronCluster.PrimeFluent(b => b.WhenQuery(cql).ThenServerError(resultError, resultError.Value)); Exception throwedException = null; try { session.Execute(cql); } catch (Exception ex) { throwedException = ex; } finally { Assert.NotNull(throwedException); Assert.AreEqual(throwedException.GetType(), exceptionType); Assert.AreEqual(1, Interlocked.Read(ref extendedRetryPolicy.RequestErrorConter)); Assert.AreEqual(0, Interlocked.Read(ref extendedRetryPolicy.ReadTimeoutCounter)); Assert.AreEqual(0, Interlocked.Read(ref extendedRetryPolicy.WriteTimeoutCounter)); Assert.AreEqual(0, Interlocked.Read(ref extendedRetryPolicy.UnavailableCounter)); } } } }