public void ExecuteDelete(CTable table) { var cassandraSession = CassandraCluster.Connect(table.KeySpace); foreach (var row in table.Data) { StringBuilder cqlQuery = new StringBuilder(); cqlQuery.Append($"DELETE FROM {table.Name} "); cqlQuery.Append("WHERE "); bool firstField = true; var cassandraParameters = new object[row.Count(x => x.IsPrimaryKey)]; var pkItemIndex = 0; foreach (var field in row.Where(x => x.IsPrimaryKey)) { if (firstField == false) { cqlQuery.Append(" AND "); } cqlQuery.Append($" {field.Name} = ? "); cassandraParameters[pkItemIndex] = field.Value; firstField = false; pkItemIndex++; } var ps = cassandraSession.Prepare(cqlQuery.ToString()); var cassandraStatement = ps.Bind(cassandraParameters); cassandraSession.Execute(cassandraStatement); } }
public virtual void SetUp() { KeyspaceName = $"TestKeyspace_{Guid.NewGuid():N}"; var cassandraClusterSettings = SingleCassandraNodeSetUpFixture.Node.CreateSettings(); cassandraClusterSettings.AllowNullTimestamp = true; cassandraClusterSettings.ReadConsistencyLevel = ConsistencyLevel.ALL; cassandraClusterSettings.WriteConsistencyLevel = ConsistencyLevel.ALL; cassandraCluster = new CassandraCluster(cassandraClusterSettings, Logger.Instance); columnFamilyConnection = cassandraCluster.RetrieveColumnFamilyConnection(KeyspaceName, Constants.ColumnFamilyName); columnFamilyConnectionDefaultTtl = cassandraCluster.RetrieveColumnFamilyConnection(KeyspaceName, Constants.DefaultTtlColumnFamilyName); cassandraCluster.ActualizeKeyspaces(new[] { new KeyspaceScheme { Name = KeyspaceName, Configuration = new KeyspaceConfiguration { ReplicationStrategy = SimpleReplicationStrategy.Create(1), ColumnFamilies = new[] { new ColumnFamily { Name = Constants.ColumnFamilyName }, new ColumnFamily { Name = Constants.DefaultTtlColumnFamilyName, DefaultTtl = 1 } } } } }); }
public RemoteLockerTester(RemoteLockerTesterConfig config = null) { config = config ?? RemoteLockerTesterConfig.Default(); var localRivalOptimizationIsEnabled = config.LocalRivalOptimization != LocalRivalOptimization.Disabled; var serializer = new Serializer(new AllPropertiesExtractor(), null, GroBufOptions.MergeOnRead); ICassandraCluster cassandraCluster = new CassandraCluster(config.CassandraClusterSettings, logger); if (config.CassandraFailProbability.HasValue) { cassandraCluster = new FailedCassandraCluster(cassandraCluster, config.CassandraFailProbability.Value); } var timestampProvider = new StochasticTimestampProvider(config.TimestampProviderStochasticType, config.LockTtl); var implementationSettings = new CassandraRemoteLockImplementationSettings(timestampProvider, SingleCassandraNodeSetUpFixture.RemoteLockKeyspace, SingleCassandraNodeSetUpFixture.RemoteLockColumnFamily, config.LockTtl, config.LockMetadataTtl, config.KeepLockAliveInterval, config.ChangeLockRowThreshold); var cassandraRemoteLockImplementation = new CassandraRemoteLockImplementation(cassandraCluster, serializer, implementationSettings); remoteLockers = new RemoteLocker[config.LockersCount]; remoteLockerMetrics = new RemoteLockerMetrics("dummyKeyspace"); if (localRivalOptimizationIsEnabled) { var remoteLocker = new RemoteLocker(cassandraRemoteLockImplementation, remoteLockerMetrics, logger); for (var i = 0; i < config.LockersCount; i++) { remoteLockers[i] = remoteLocker; } } else { for (var i = 0; i < config.LockersCount; i++) { remoteLockers[i] = new RemoteLocker(new CassandraRemoteLockImplementation(cassandraCluster, serializer, implementationSettings), remoteLockerMetrics, logger); } } // it is important to use another CassandraCluster (with another setting of attempts, for example) cassandraRemoteLockImplementationForCheckings = new CassandraRemoteLockImplementation(new CassandraCluster(SingleCassandraNodeSetUpFixture.CreateCassandraClusterSettings(), logger), serializer, implementationSettings); }
private void SomeActionThatRequiresAuthentication(string username, string password, ILog logger = null) { var settings = node.CreateSettings(); settings.Credentials = new Credentials(username, password); using (var cluster = new CassandraCluster(settings, logger ?? new SilentLog())) cluster.RetrieveClusterConnection().RetrieveKeyspaces(); }
public void OneTimeSetUp() { var serializer = new Serializer(new AllPropertiesExtractor(), null, GroBufOptions.MergeOnRead); var cassandraCluster = new CassandraCluster(SingleCassandraNodeSetUpFixture.CreateCassandraClusterSettings(), logger); var settings = new CassandraRemoteLockImplementationSettings(new DefaultTimestampProvider(), SingleCassandraNodeSetUpFixture.RemoteLockKeyspace, SingleCassandraNodeSetUpFixture.RemoteLockColumnFamily, TimeSpan.FromMinutes(3), TimeSpan.FromDays(30), TimeSpan.FromSeconds(5), 10); remoteLockImplementation = new CassandraRemoteLockImplementation(cassandraCluster, serializer, settings); }
protected virtual IEventRepository CreateBoxEventRepository(Func <EventId, object, string> calculateShard) { var serializer = new Serializer(new AllPropertiesExtractor()); var cassandraCluster = new CassandraCluster(cassandraClusterSettings, Logger.Instance); var eventTypeRegistry = new EventTypeRegistry(); var factory = new EventRepositoryFactory(serializer, cassandraCluster, eventTypeRegistry, Logger.Instance); var eventRepositoryColumnFamilyFullNames = new EventRepositoryColumnFamilyFullNames( ColumnFamilies.eventLog, ColumnFamilies.eventLogAdditionalInfo, ColumnFamilies.remoteLock); var shardCalculator = new ShardCalculator(calculateShard); var eventRepository = factory.CreateEventRepository(shardCalculator, eventRepositoryColumnFamilyFullNames, new EventLogNullProfiler(), TimeSpan.FromDays(1)); return(eventRepository); }
public void SetUp() { cluster = new CassandraCluster(SingleCassandraNodeSetUpFixture.Node.CreateSettings(), Logger.Instance); var clusterConnection = cluster.RetrieveClusterConnection(); var keyspaceName = TestSchemaUtils.GetRandomKeyspaceName(); var createdKeyspace = new Keyspace { Name = keyspaceName, ReplicationStrategy = SimpleReplicationStrategy.Create(1) }; clusterConnection.AddKeyspace(createdKeyspace); keyspaceConnection = cluster.RetrieveKeyspaceConnection(keyspaceName); }
public static void SetUp() { var templateDirectory = Path.Combine(FindCassandraTemplateDirectory(AppDomain.CurrentDomain.BaseDirectory), @"v3.11.x"); var deployDirectory = Path.Combine(Path.GetTempPath(), "deployed_cassandra_v3.11.x"); cassandraNode = new LocalCassandraNode(templateDirectory, deployDirectory) { RpcPort = 9360, CqlPort = 9343, JmxPort = 7399, GossipPort = 7400, }; cassandraNode.Restart(timeout: TimeSpan.FromMinutes(1)); cassandraCluster = new CassandraCluster(cassandraNode.CreateSettings(), Logger.Instance); var cassandraSchemaActualizer = new CassandraSchemaActualizer(cassandraCluster, null, Logger.Instance); cassandraSchemaActualizer.ActualizeKeyspaces(new[] { new KeyspaceSchema { Name = ksName, Configuration = new KeyspaceConfiguration { ReplicationStrategy = SimpleReplicationStrategy.Create(replicationFactor: 1), ColumnFamilies = new[] { new ColumnFamily { Name = minTicksCfName, CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 160), Caching = ColumnFamilyCaching.All }, new ColumnFamily { Name = maxTicksCfName, CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 160), Caching = ColumnFamilyCaching.KeysOnly } } } }, }, changeExistingKeyspaceMetadata: false); }
public static void SetUp() { Log4NetConfiguration.InitializeOnce(); var templateDirectory = Path.Combine(FindCassandraTemplateDirectory(AppDomain.CurrentDomain.BaseDirectory), @"v3.11.x"); var deployDirectory = Path.Combine(Path.GetTempPath(), "deployed_cassandra_v3.11.x"); node = new LocalCassandraNode(templateDirectory, deployDirectory) { RpcPort = 9360, CqlPort = 9343, JmxPort = 7399, GossipPort = 7400, }; node.Restart(timeout: TimeSpan.FromMinutes(1)); var logger = Log4NetConfiguration.RootLogger.ForContext(nameof(SingleCassandraNodeSetUpFixture)); cassandraCluster = new CassandraCluster(CreateCassandraClusterSettings(), logger); var cassandraSchemaActualizer = new CassandraSchemaActualizer(cassandraCluster, eventListener: null, logger); cassandraSchemaActualizer.ActualizeKeyspaces(new[] { new KeyspaceSchema { Name = RemoteLockKeyspace, Configuration = new KeyspaceConfiguration { ReplicationStrategy = SimpleReplicationStrategy.Create(replicationFactor: 1), ColumnFamilies = new[] { new ColumnFamily { Name = RemoteLockColumnFamily, Caching = ColumnFamilyCaching.KeysOnly } } } } }, changeExistingKeyspaceMetadata: false); }
// todo (a.dobrynin, 08.02.2022): replace with depends_on.condition.service_healthy when appveyor updates docker compose to 1.29+ on windows hosts private static ICassandraCluster TryConnectToCassandra(string cassandraAddress, ILog log) { var timeout = TimeSpan.FromMinutes(2); var interval = TimeSpan.FromSeconds(10); var sw = Stopwatch.StartNew(); while (sw.Elapsed < timeout) { try { var localEndPoint = new IPEndPoint(GetIpV4Address(cassandraAddress), 9160); var cassandraClusterSettings = new CassandraClusterSettings { Endpoints = new[] { localEndPoint }, EndpointForFierceCommands = localEndPoint, ReadConsistencyLevel = ConsistencyLevel.QUORUM, WriteConsistencyLevel = ConsistencyLevel.QUORUM, Attempts = 5, Timeout = 6000, FierceTimeout = 6000, ConnectionIdleTimeout = TimeSpan.FromMinutes(10), }; ICassandraCluster cassandraCluster = new CassandraCluster(cassandraClusterSettings, log); _ = cassandraCluster.RetrieveClusterConnection().DescribeVersion(); log.Info($"Successfully connected to cassandra after {sw.Elapsed.TotalSeconds} seconds"); return(cassandraCluster); } catch (Exception e) { log.Info(e, "Connection attempt failed"); } Thread.Sleep(interval); } throw new Exception($"Failed to wait for local cassandra node to start in {timeout.TotalSeconds} seconds"); }
public void ExecuteInsert(CTable table) { var cassandraSession = CassandraCluster.Connect(table.KeySpace); foreach (var row in table.Data) { StringBuilder cqlQuery = new StringBuilder(); StringBuilder cqlValues = new StringBuilder(); cqlQuery.Append($"INSERT INTO {table.Name} "); cqlQuery.Append("("); bool firstField = true; var cassandraParameters = new object[row.Count()]; var itemIndex = 0; foreach (var field in row) { if (firstField == false) { cqlQuery.Append(","); cqlValues.Append(","); } cqlQuery.Append(field.Name); cqlValues.Append("?"); cassandraParameters[itemIndex] = field.Value; firstField = false; itemIndex++; } cqlQuery.Append(")"); cqlQuery.Append($" VALUES ({cqlValues.ToString()}); "); var ps = cassandraSession.Prepare(cqlQuery.ToString()); var cassandraStatement = ps.Bind(cassandraParameters); cassandraSession.Execute(cassandraStatement); } }
public void SetUp() { cluster = new CassandraCluster(SingleCassandraNodeSetUpFixture.Node.CreateSettings(), Logger.Instance); }
public void SetUp() { cluster = new CassandraCluster(SingleCassandraNodeSetUpFixture.Node.CreateSettings(), Logger.Instance); cassandraActualizerEventListener = new CassandraActualizerEventListener(); actualizer = new SchemeActualizer(cluster, cassandraActualizerEventListener, Logger.Instance); }