public void RecoveryTest() { CassandraSharpConfig cassandraSharpConfig = new CassandraSharpConfig { Recovery = new RecoveryConfig {Type = "Default", Interval = 2}, Logger = new LoggerConfig {Type = typeof(ResilienceLogger).AssemblyQualifiedName}, }; ClusterManager.Configure(cassandraSharpConfig); ClusterConfig clusterConfig = new ClusterConfig { Endpoints = new EndpointsConfig { Servers = new[] {"localhost"}, }, Transport = new TransportConfig { Port = 666, Type = "ShortRunning", ReceiveTimeout = 10000, SendTimeout = 10000, } }; DisconnectingProxy proxy = new DisconnectingProxy(666, 9042, 0.05, 0.0); proxy.Start(); using (ICluster cluster = ClusterManager.GetCluster(clusterConfig)) { ICqlCommand cmd = cluster.CreatePocoCommand(); const string dropFoo = "drop keyspace data"; try { cmd.Execute(dropFoo).AsFuture().Wait(); } catch { } const string createFoo = "CREATE KEYSPACE data WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1}"; cmd.Execute(createFoo).AsFuture().Wait(); const string createBar = "CREATE TABLE data.test (time text PRIMARY KEY)"; cmd.Execute(createBar).AsFuture().Wait(); proxy.EnableKiller(); List<Task> tasks = new List<Task>(); for (int taskId = 0; taskId < 5; ++taskId) { int tmpTaskId = taskId; Task task = Task.Factory.StartNew(() => Worker(tmpTaskId, cmd), TaskCreationOptions.LongRunning); tasks.Add(task); } foreach (Task task in tasks) { task.Wait(); } ClusterManager.Shutdown(); } proxy.Stop(); }
public void RecoveryTest() { CassandraSharpConfig cassandraSharpConfig = new CassandraSharpConfig { Logger = new LoggerConfig { Type = typeof(ResilienceLogger).AssemblyQualifiedName }, Recovery = new RecoveryConfig { Interval = 2 } }; ClusterManager.Configure(cassandraSharpConfig); ClusterConfig clusterConfig = new ClusterConfig { Endpoints = new EndpointsConfig { Servers = new[] { "cassandra1" }, }, Transport = new TransportConfig { Port = 666, ReceiveTimeout = 10 * 1000, } }; DisconnectingProxy proxy = new DisconnectingProxy(666, 9042); proxy.Start(); using (ICluster cluster = ClusterManager.GetCluster(clusterConfig)) { ICqlCommand cmd = cluster.CreatePocoCommand(); const string dropFoo = "drop keyspace data"; try { cmd.Execute(dropFoo).AsFuture().Wait(); } catch { } const string createFoo = "CREATE KEYSPACE data WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1}"; cmd.Execute(createFoo).AsFuture().Wait(); const string createBar = "CREATE TABLE data.test (time text PRIMARY KEY)"; cmd.Execute(createBar).AsFuture().Wait(); proxy.EnableKiller(); for (int i = 0; i < 100000; ++i) { int attempt = 0; while (true) { var now = DateTime.Now; string insert = String.Format("insert into data.test(time) values ('{0}');", now); Console.WriteLine("{0}.{1}) {2}", i, ++attempt, insert); try { cmd.Execute(insert).AsFuture().Wait(); break; } catch (Exception ex) { Console.WriteLine("Failed with error {0}", ex.Message); Thread.Sleep(1000); } } } Console.WriteLine("Stress test done"); ClusterManager.Shutdown(); } proxy.Stop(); }
public void RecoveryTest() { CassandraSharpConfig cassandraSharpConfig = new CassandraSharpConfig { Logger = new LoggerConfig { Type = typeof(ResilienceLogger).AssemblyQualifiedName }, Recovery = new RecoveryConfig { Interval = 2 } }; ClusterManager.Configure(cassandraSharpConfig); ClusterConfig clusterConfig = new ClusterConfig { Endpoints = new EndpointsConfig { Servers = new[] { "localhost" }, }, Transport = new TransportConfig { Port = 666, ReceiveTimeout = 10 * 1000, } }; DisconnectingProxy proxy = new DisconnectingProxy(666, 9042); proxy.Start(); using (ICluster cluster = ClusterManager.GetCluster(clusterConfig)) { ICqlCommand cmd = cluster.CreatePocoCommand(); const string dropFoo = "drop keyspace data"; try { cmd.Execute(dropFoo).AsFuture().Wait(); } catch { } const string createFoo = "CREATE KEYSPACE data WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1}"; cmd.Execute(createFoo).AsFuture().Wait(); const string createBar = "CREATE TABLE data.test (time text PRIMARY KEY)"; cmd.Execute(createBar).AsFuture().Wait(); proxy.EnableKiller(); for (int i = 0; i < 100000; ++i) { int attempt = 0; while (true) { var now = DateTime.Now; string insert = String.Format("insert into data.test(time) values ('{0}');", now); Console.WriteLine("{0}.{1}) {2}", i, ++attempt, insert); try { cmd.Execute(insert).AsFuture().Wait(); break; } catch (Exception ex) { Console.WriteLine("Failed with error {0}", ex.Message); Thread.Sleep(1000); } } } Console.WriteLine("Stress test done"); ClusterManager.Shutdown(); } proxy.Stop(); }