Пример #1
0
        internal BigFamily(ColumnFamily family, string tableId)
        {
            var prefix = tableId + BigtableConstants.Templates.FamilyAdjunct;

            Name            = family.Name.Replace(prefix, "");
            RetentionPolicy = new RetentionPolicy(family.GcRule, family.GcExpression);
        }
Пример #2
0
        public override FluentColumn Execute()
        {
            var schema = ColumnFamily.GetSchema();

            var path = new CassandraColumnPath {
                ColumnFamily = ColumnFamily.FamilyName
            };

            if (SuperColumnName != null)
            {
                path.SuperColumn = SuperColumnName.GetValue(schema.SuperColumnNameType) as CassandraObject;
            }

            if (ColumnName != null)
            {
                path.Column = ColumnName.GetValue(schema.ColumnNameType) as CassandraObject;
            }

            var output = Session.GetClient().get(
                Key,
                path,
                Session.ReadConsistency
                );

            return((FluentColumn)Helper.ConvertToFluentBaseColumn(output, schema));
        }
Пример #3
0
        public void ShouldSetColumns()
        {
            //Arrange
            string keyspace  = "TestExample";
            string colValue1 = "sampleValue1";
            string colName1  = "sampleName1";
            string colValue2 = "sampleValue2";
            string colName2  = "sampleName2";
            Dictionary <object, object> map = new Dictionary <object, object>();

            map.Add(colName1, colValue1);
            map.Add(colName2, colValue2);
            string[] colNames      = new string[] { colName1, colName2 };
            string   key           = "sampleKey";
            string   colFamilyName = "cf";

            using (Client client = new Client())
            {
                client.dropIfExistsAndCreateKeyspace(keyspace);
                ColumnFamily cf = new ColumnFamily();
                cf.Name = colFamilyName;
                client.createColumnFamily(keyspace, cf);

                //Act
                client.setColumns(keyspace, cf, key.ToByteArray(), map);
                var cols = client.getAllColumns <string, string>(keyspace, cf, key);
                ColumnSlice <string, string> results = client.getColumns <string, string>(keyspace, cf, key, colNames);

                //Assert
                foreach (var item in map)
                {
                    Assert.NotNull(results.getColumnByName((string)item.Key));
                }
            }
        }
        public override IEnumerable <FluentSuperColumnFamily> Execute()
        {
            var schema = ColumnFamily.GetSchema();

            var parent = new CassandraColumnParent {
                ColumnFamily = ColumnFamily.FamilyName
            };

            SlicePredicate = Helper.SetSchemaForSlicePredicate(SlicePredicate, schema, SuperColumnName == null);

            var output = Session.GetClient().get_range_slices(
                parent,
                SlicePredicate,
                KeyRange,
                Session.ReadConsistency
                );

            foreach (var result in output)
            {
                var key = CassandraObject.GetCassandraObjectFromDatabaseByteArray(result.Key, schema.KeyValueType);

                var r = new FluentSuperColumnFamily(key, ColumnFamily.FamilyName, schema, result.Columns.Select(col => {
                    var superCol = Helper.ConvertSuperColumnToFluentSuperColumn(col.Super_column, schema);
                    ColumnFamily.Context.Attach(superCol);
                    superCol.MutationTracker.Clear();

                    return(superCol);
                }));
                ColumnFamily.Context.Attach(r);
                r.MutationTracker.Clear();

                yield return(r);
            }
        }
Пример #5
0
        public override IDictionary <CassandraObject, int> Execute()
        {
            var schema = ColumnFamily.GetSchema();

            var parent = new CassandraColumnParent {
                ColumnFamily = ColumnFamily.FamilyName
            };

            if (SuperColumnName != null)
            {
                parent.SuperColumn = SuperColumnName;
            }

            SlicePredicate = Helper.SetSchemaForSlicePredicate(SlicePredicate, schema, SuperColumnName == null);

            var output = Session.GetClient().multiget_count(
                Keys,
                parent,
                SlicePredicate,
                Session.ReadConsistency
                );

            var results = new Dictionary <CassandraObject, int>();

            foreach (var result in output)
            {
                results.Add(result.Key, result.Value);
            }

            return(results);
        }
Пример #6
0
        public override IEnumerable <FluentSuperColumnFamily> Execute()
        {
            var schema = ColumnFamily.GetSchema();

            var parent = new CassandraColumnParent {
                ColumnFamily = ColumnFamily.FamilyName
            };

            SlicePredicate = Helper.SetSchemaForSlicePredicate(SlicePredicate, schema);

            var output = Session.GetClient().get_indexed_slices(
                parent,
                IndexClause,
                SlicePredicate,
                Session.ReadConsistency
                );

            foreach (var result in output)
            {
                var r = new FluentSuperColumnFamily(result.Key, ColumnFamily.FamilyName, ColumnFamily.GetSchema(), result.Columns.Select(col => {
                    var superCol = Helper.ConvertSuperColumnToFluentSuperColumn(col.Super_column, schema);
                    ColumnFamily.Context.Attach(superCol);
                    superCol.MutationTracker.Clear();

                    return(superCol);
                }));
                ColumnFamily.Context.Attach(r);
                r.MutationTracker.Clear();

                yield return(r);
            }
        }
Пример #7
0
        public void ShouldGetRowsForGivenColumnNames()
        {
            //Arrange
            string keyspace  = "TestExample";
            string colValue1 = "sampleValue1";
            string colName1  = "sampleName1";
            string colValue2 = "sampleValue2";
            string colName2  = "sampleName2";

            string[] colNames      = new string[] { colName1, colName2 };
            string   colFamilyName = "cf";

            string[] keys = new string[] { "key1", "key2" };

            using (Client client = new Client())
            {
                client.dropIfExistsAndCreateKeyspace(keyspace);
                ColumnFamily cf = new ColumnFamily();
                cf.Name = colFamilyName;
                client.createColumnFamily(keyspace, cf);
                client.setColumn(keyspace, cf, keys[0], colName1, colValue1);
                client.setColumn(keyspace, cf, keys[1], colName2, colValue2);

                //Act
                Rows <string, string, string> results = client.getRows <string, string, string>(keyspace, cf, keys, colNames);

                //Assert
                Assert.Equal(keys.Length, results.rowsList.Count);
            }
        }
        private IEnumerable <FluentColumn> GetColumns(BaseCassandraColumnFamily columnFamily)
        {
            var schema = ColumnFamily.GetSchema();
            var list   = new List <FluentColumn>();

            var parent = new CassandraColumnParent {
                ColumnFamily = columnFamily.FamilyName,
                SuperColumn  = SuperColumnName
            };

            SlicePredicate = Helper.SetSchemaForSlicePredicate(SlicePredicate, schema, SuperColumnName == null);

            var output = Session.GetClient().get_slice(
                Key,
                parent,
                SlicePredicate,
                Session.ReadConsistency
                );

            foreach (var result in output)
            {
                var r = Helper.ConvertColumnToFluentColumn(result.Column, schema);
                list.Add(r);
            }

            return(list);
        }
Пример #9
0
        public void ShouldGetRowKeySet()
        {
            //Arrange
            string keyspace      = "TestExample";
            string colValue      = "sampleValue";
            string colName       = "sampleName";
            string colFamilyName = "cf";

            string[] keys = new string[] { "key1", "key2" };

            using (Client client = new Client())
            {
                client.dropIfExistsAndCreateKeyspace(keyspace);
                ColumnFamily cf = new ColumnFamily();
                cf.Name = colFamilyName;
                client.createColumnFamily(keyspace, cf);
                client.setColumn(keyspace, cf, keys[0], colName, colValue);
                client.setColumn(keyspace, cf, keys[1], colName, colValue);

                //Act
                HashSet <string> results = client.getRowKeySet <string>(keyspace, cf);

                //Assert
                foreach (var key in keys)
                {
                    Assert.True(results.Contains(key));
                }
            }
        }
        private void InternalTestCaching(ColumnFamilyCaching?columnFamilyCaching)
        {
            var name = TestSchemaUtils.GetRandomColumnFamilyName();
            var originalColumnFamily = new ColumnFamily
            {
                Name = name,
                CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 10),
                GCGraceSeconds     = 123,
                ReadRepairChance   = 0.3
            };

            if (columnFamilyCaching != null)
            {
                originalColumnFamily.Caching = columnFamilyCaching.Value;
            }
            keyspaceConnection.AddColumnFamily(originalColumnFamily);

            var columnFamily = keyspaceConnection.DescribeKeyspace().ColumnFamilies[name];

            if (columnFamilyCaching != null)
            {
                Assert.That(columnFamily.Caching, Is.EqualTo(columnFamilyCaching));
            }
            else
            {
                Assert.That(columnFamily.Caching, Is.EqualTo(ColumnFamilyCaching.KeysOnly));
            }
        }
        public override IEnumerable <FluentColumnFamily> Execute()
        {
            var schema = ColumnFamily.GetSchema();
            var list   = new List <FluentColumnFamily>();

            var parent = new CassandraColumnParent
            {
                ColumnFamily = ColumnFamily.FamilyName
            };

            SlicePredicate = Helper.SetSchemaForSlicePredicate(SlicePredicate, schema);

            var output = Session.GetClient().get_indexed_slices(
                parent,
                IndexClause,
                SlicePredicate,
                Session.ReadConsistency
                );

            foreach (var result in output)
            {
                var key = CassandraObject.GetCassandraObjectFromDatabaseByteArray(result.Key, schema.KeyValueType);

                var r = new FluentColumnFamily(key, ColumnFamily.FamilyName, schema, result.Columns.Select(col =>
                {
                    return(Helper.ConvertColumnToFluentColumn(col.Column, schema));
                }));
                ColumnFamily.Context.Attach(r);
                r.MutationTracker.Clear();

                list.Add(r);
            }

            return(list);
        }
Пример #12
0
        public void ShouldMultiGetColumns()
        {
            //Arrange
            string        keyspace      = "TestExample";
            string        colValue      = "sampleValue";
            string        colName       = "sampleName";
            string        colFamilyName = "cf";
            List <object> keys          = new List <object>();

            keys.Add("key1");
            keys.Add("key2");

            using (Client client = new Client())
            {
                client.dropIfExistsAndCreateKeyspace(keyspace);
                ColumnFamily cf = new ColumnFamily();
                cf.Name = colFamilyName;
                client.createColumnFamily(keyspace, cf);
                client.setColumn(keyspace, cf, keys[0], colName, colValue);
                client.setColumn(keyspace, cf, keys[1], colName, colValue);

                //Act
                Dictionary <byte[], List <NColumn <byte[], byte[]> > > results = client.multiGetColumns(keyspace, cf, keys, colName, colName, 100, false);

                //Assert
                Assert.Equal(keys.Count, results.Count);
            }
        }
Пример #13
0
        public void ShouldDeleteColumn()
        {
            //Arrange
            string keyspace      = "TestExample";
            string colValue      = "sampleValue";
            string colName       = "sampleName";
            string key           = "sampleKey";
            string colFamilyName = "cf";

            using (Client client = new Client())
            {
                client.dropIfExistsAndCreateKeyspace(keyspace);
                ColumnFamily cf = new ColumnFamily();
                cf.Name = colFamilyName;
                client.createColumnFamily(keyspace, cf);

                //Act
                client.setColumn(keyspace, cf, key, colName, colValue);
                bool beforeResult = client.columnExists(keyspace, cf, key, colName);
                client.deleteColumn(keyspace, cf, key, colName);
                bool afterResult = client.columnExists(keyspace, cf, key, colName);

                //Assert
                Assert.True(beforeResult);
                Assert.False(afterResult);
            }
        }
Пример #14
0
        public override Void Execute()
        {
            var schema = ColumnFamily.GetSchema();

            var parent = new CassandraColumnParent {
                ColumnFamily = ColumnFamily.FamilyName,
            };

            if (SuperColumnName != null)
            {
                parent.SuperColumn = SuperColumnName.GetValue(schema.SuperColumnNameType);
            }

            var column = new CassandraColumn {
                Name      = ColumnName.GetValue(schema.ColumnNameType),
                Value     = ColumnValue,
                Timestamp = Timestamp,
                Ttl       = TimeToLive
            };

            Session.GetClient().insert(
                Key,
                parent,
                column,
                Session.WriteConsistency
                );

            return(new Void());
        }
        private IEnumerable <FluentColumnFamily> GetFamilies(BaseCassandraColumnFamily columnFamily)
        {
            var schema = ColumnFamily.GetSchema();

            var parent = new CassandraColumnParent {
                ColumnFamily = columnFamily.FamilyName
            };

            SlicePredicate = Helper.SetSchemaForSlicePredicate(SlicePredicate, schema);

            var output = Session.GetClient().get_range_slices(
                parent,
                SlicePredicate,
                KeyRange,
                Session.ReadConsistency
                );

            foreach (var result in output)
            {
                var r = new FluentColumnFamily(result.Key, columnFamily.FamilyName, columnFamily.GetSchema(), result.Columns.Select(col => {
                    return(Helper.ConvertColumnToFluentColumn(col.Column, schema));
                }));
                columnFamily.Context.Attach(r);
                r.MutationTracker.Clear();

                yield return(r);
            }
        }
Пример #16
0
        private IEnumerable <FluentSuperColumn> GetColumns(BaseCassandraColumnFamily columnFamily)
        {
            var schema = ColumnFamily.GetSchema();

            var parent = new CassandraColumnParent {
                ColumnFamily = columnFamily.FamilyName
            };

            SlicePredicate = Helper.SetSchemaForSlicePredicate(SlicePredicate, schema);

            var output = Session.GetClient().get_slice(
                Key,
                parent,
                SlicePredicate,
                Session.ReadConsistency
                );

            foreach (var result in output)
            {
                var r = Helper.ConvertSuperColumnToFluentSuperColumn(result.Super_column, schema);
                columnFamily.Context.Attach(r);
                r.MutationTracker.Clear();

                yield return(r);
            }
        }
        public override FluentColumnFamily Execute()
        {
            var result = new FluentColumnFamily(Key, ColumnFamily.FamilyName, ColumnFamily.GetSchema(), GetColumns(ColumnFamily));

            ColumnFamily.Context.Attach(result);
            result.MutationTracker.Clear();

            return(result);
        }
Пример #18
0
        static void Main(string[] args)
        {
            string keyspace = "ConsoleExample";

            /* Some columns the first and second will be string columns (Both Name and Value)
             * The third will be an int column (Name and Value)
             */
            string   colValue1 = "sampleValue1";
            string   colName1  = "sampleName1";
            string   colValue2 = "sampleValue2";
            string   colName2  = "sampleName2";
            int      colValue3 = 33;
            int      colName3  = 3;
            DateTime colValue4 = DateTime.UtcNow;
            DateTime colName4  = DateTime.UtcNow.AddDays(20.0d);
            // Using a dictionary to store the columns
            Dictionary <object, object> map = new Dictionary <object, object>();

            map.Add(colName1, colValue1);
            map.Add(colName2, colValue2);
            map.Add(colName3, colValue3);
            map.Add(colName4, colValue4);

            //We will use this to query the string columns later
            string[] colNames = new string[] { colName1, colName2 };
            //Row key
            string key           = "sampleKey";
            string colFamilyName = "cf";

            using (Client client = new Client())
            {
                client.dropIfExistsAndCreateKeyspace(keyspace);
                ColumnFamily cf = new ColumnFamily();
                cf.Name = colFamilyName;
                client.createColumnFamily(keyspace, cf);
                //Lets insert all the columns into the given row in one go
                client.setColumns(keyspace, cf, key.ToByteArray(), map);

                //Get the columns given in the colNames array
                ColumnSlice <string, string> stringColumnResult = client.getColumns <string, string>(keyspace, cf, key, colNames);

                //Get the int column
                NColumn <int, int> intColumnResult = client.getColumn <int, int>(keyspace, cf, key, colName3);
                Console.WriteLine(intColumnResult.Name);
                Console.WriteLine(intColumnResult.Value);
                //Get the DateTime column
                NColumn <DateTime, DateTime> dateTimeColumnResult = client.getColumn <DateTime, DateTime>(keyspace, cf, key, colName4);
                Console.WriteLine(dateTimeColumnResult.Name);
                Console.WriteLine(dateTimeColumnResult.Value);

                client.dropKeyspace(keyspace);
                Console.ReadLine();
            }
        }
Пример #19
0
        private static object CreateMaxVersionsFamily(string tableId)
        {
            // [START bigtable_create_bigtableTableAdminClient]
            BigtableTableAdminClient bigtableTableAdminClient = BigtableTableAdminClient.Create();

            // [END bigtable_create_bigtableTableAdminClient]

            Console.WriteLine("Creating column family cf2 with max versions GC rule...");
            // [START bigtable_create_family_gc_max_versions]
            // Create a column family with GC policy : most recent N versions
            // where 1 = most recent version
            // Initialize request argument(s).
            // Define the GC policy to retain only the most recent 2 versions
            GcRule maxVersionsRule = new GcRule {
                MaxNumVersions = 2
            };

            // Column family to create
            ColumnFamily columnFamily = new ColumnFamily {
                GcRule = maxVersionsRule
            };

            TableName tableName = new TableName(projectId, instanceId, tableId);

            // Modification to create column family
            ModifyColumnFamiliesRequest.Types.Modification modification = new ModifyColumnFamiliesRequest.Types.Modification
            {
                Create = columnFamily,
                Id     = "cf2"
            };

            ModifyColumnFamiliesRequest request = new ModifyColumnFamiliesRequest
            {
                TableName     = tableName,
                Modifications = { modification }
            };

            try
            {
                // Make the request
                Table response = bigtableTableAdminClient.ModifyColumnFamilies(request);
                Console.WriteLine("Created column family");
                // [END bigtable_create_family_gc_max_versions]
                // Print table information.
                GetTable(tableId);
                // [START bigtable_create_family_gc_max_versions]
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error creating column family {ex.Message}");
            }
            // [END bigtable_create_family_gc_max_versions]
            return(0);
        }
Пример #20
0
        private static object UpdateFamily(string tableId)
        {
            // [START bigtable_create_bigtableTableAdminClient]
            BigtableTableAdminClient bigtableTableAdminClient = BigtableTableAdminClient.Create();

            // [END bigtable_create_bigtableTableAdminClient]

            Console.WriteLine("Updating column family cf1 GC rule...");
            // [START bigtable_update_gc_rule]
            // Update the column family metadata to update the GC rule.
            // Initialize request argument(s).
            // Updated column family GC rule.
            GcRule maxVersionsRule = new GcRule {
                MaxNumVersions = 1
            };

            // Column family to create
            ColumnFamily columnFamily = new ColumnFamily {
                GcRule = maxVersionsRule
            };

            TableName tableName = new TableName(projectId, instanceId, tableId);

            // Modification to update column family
            ModifyColumnFamiliesRequest.Types.Modification modification = new ModifyColumnFamiliesRequest.Types.Modification
            {
                Update = columnFamily,
                Id     = "cf1"
            };

            ModifyColumnFamiliesRequest request = new ModifyColumnFamiliesRequest
            {
                TableName     = tableName,
                Modifications = { modification }
            };

            try
            {
                // Make the request
                Table response = bigtableTableAdminClient.ModifyColumnFamilies(request);
                Console.WriteLine("Updated column family");
                // [END bigtable_update_gc_rule]
                // Print table information.
                GetTable(tableId);
                // [START bigtable_update_gc_rule]
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error updating column family {ex.Message}");
            }

            // [END bigtable_update_gc_rule]
            return(0);
        }
Пример #21
0
        private static object CreateMaxAgeFamily(string tableId)
        {
            // [START bigtable_create_bigtableTableAdminClient]
            BigtableTableAdminClient bigtableTableAdminClient = BigtableTableAdminClient.Create();

            // [END bigtable_create_bigtableTableAdminClient]

            Console.WriteLine("Creating column family cf1 with max age GC rule...");
            // [START bigtable_create_family_gc_max_age]
            // Create a column family with GC policy : maximum age
            // where age = current time minus cell timestamp
            // Initialize request argument(s).
            // Define the GC rule to retain data with max age of 5 days
            GcRule MaxAgeRule = new GcRule {
                MaxAge = Duration.FromTimeSpan(TimeSpan.FromDays(5.0))
            };

            // Column family to create
            ColumnFamily columnFamily = new ColumnFamily {
                GcRule = MaxAgeRule
            };

            TableName tableName = new TableName(projectId, instanceId, tableId);

            // Modification to create column family
            ModifyColumnFamiliesRequest.Types.Modification modification = new ModifyColumnFamiliesRequest.Types.Modification
            {
                Create = columnFamily,
                Id     = "cf1"
            };

            ModifyColumnFamiliesRequest request = new ModifyColumnFamiliesRequest
            {
                TableName     = tableName,
                Modifications = { modification }
            };

            try
            {
                // Make the request
                Table response = bigtableTableAdminClient.ModifyColumnFamilies(request);
                Console.WriteLine("Created column family");
                // [END bigtable_create_bigtableTableAdminClient]
                // Print table information.
                GetTable(tableId);
                // [START bigtable_create_bigtableTableAdminClient]
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error creating column family {ex.Message}");
            }
            // [END bigtable_create_family_gc_max_age]
            return(0);
        }
        public override IEnumerable <FluentSuperColumnFamily> Execute()
        {
            var schema = ColumnFamily.GetSchema();

            var parent = new CassandraColumnParent {
                ColumnFamily = ColumnFamily.FamilyName
            };

            if (SuperColumnName != null)
            {
                parent.SuperColumn = SuperColumnName;
            }

            SlicePredicate = Helper.SetSchemaForSlicePredicate(SlicePredicate, schema, SuperColumnName == null);

            var output = Session.GetClient().multiget_slice(
                Keys,
                parent,
                SlicePredicate,
                Session.ReadConsistency
                );

            foreach (var result in output)
            {
                var key = CassandraObject.GetCassandraObjectFromDatabaseByteArray(result.Key, schema.KeyValueType);

                var superColumns = (IEnumerable <FluentSuperColumn>)null;

                if (SuperColumnName != null)
                {
                    var superColSchema = new CassandraColumnSchema {
                        NameType  = schema.SuperColumnNameType,
                        Name      = SuperColumnName,
                        ValueType = schema.ColumnNameType
                    };

                    var superCol = new FluentSuperColumn(superColSchema, result.Value.Select(col => Helper.ConvertColumnToFluentColumn(col.Column, schema)));
                    ColumnFamily.Context.Attach(superCol);

                    superColumns = new[] { superCol };
                }
                else
                {
                    superColumns = result.Value.Select(col => Helper.ConvertSuperColumnToFluentSuperColumn(col.Super_column, schema));
                }

                var familyName = ColumnFamily.FamilyName;
                var r          = new FluentSuperColumnFamily(key, familyName, schema, superColumns);
                ColumnFamily.Context.Attach(r);

                yield return(r);
            }
        }
        public void TestDefaultCompression()
        {
            var name = TestSchemaUtils.GetRandomColumnFamilyName();
            var originalColumnFamily = new ColumnFamily
            {
                Name        = name,
                Compression = null
            };

            keyspaceConnection.AddColumnFamily(originalColumnFamily);

            var columnFamily = keyspaceConnection.DescribeKeyspace().ColumnFamilies[name];

            Assert.That(columnFamily.Compression.IsEnabled, Is.True);
            Assert.That(columnFamily.Compression.Algorithm, Is.EqualTo(CompressionAlgorithms.LZ4));
            Assert.That(columnFamily.Compression.Options.ChunkLengthInKb, Is.Null.Or.EqualTo(64));
        }
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            _uiapp = commandData.Application;
            _uidoc = _uiapp.ActiveUIDocument;
            _doc   = _uidoc.Document;

            try
            {
                ColumnFamily cf = new ColumnFamily(_doc);
                cf.AdjustWholeColumnFamilyTypeName();
                return(Result.Succeeded);
            }
            catch (Autodesk.Revit.Exceptions.OperationCanceledException)
            {
                return(Result.Cancelled);
            }
        }
        public void TestUpdateColumnFamilyCaching()
        {
            var name = TestSchemaUtils.GetRandomColumnFamilyName();
            var originalColumnFamily = new ColumnFamily
            {
                Name = name,
                CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 10),
                GCGraceSeconds     = 123,
                ReadRepairChance   = 0.3,
                Caching            = ColumnFamilyCaching.All
            };
            var keyspaceName    = TestSchemaUtils.GetRandomKeyspaceName();
            var keyspaceSchemes = new[]
            {
                new KeyspaceScheme
                {
                    Name          = keyspaceName,
                    Configuration = new KeyspaceConfiguration
                    {
                        ColumnFamilies = new[]
                        {
                            originalColumnFamily
                        }
                    }
                }
            };

            cluster.ActualizeKeyspaces(keyspaceSchemes);

            originalColumnFamily.Caching = ColumnFamilyCaching.None;
            cluster.ActualizeKeyspaces(keyspaceSchemes);
            Assert.That(cluster.RetrieveKeyspaceConnection(keyspaceName).DescribeKeyspace().ColumnFamilies[name].Caching, Is.EqualTo(ColumnFamilyCaching.None));

            originalColumnFamily.Caching = ColumnFamilyCaching.KeysOnly;
            cluster.ActualizeKeyspaces(keyspaceSchemes);
            Assert.That(cluster.RetrieveKeyspaceConnection(keyspaceName).DescribeKeyspace().ColumnFamilies[name].Caching, Is.EqualTo(ColumnFamilyCaching.KeysOnly));

            originalColumnFamily.Caching = ColumnFamilyCaching.RowsOnly;
            cluster.ActualizeKeyspaces(keyspaceSchemes);
            Assert.That(cluster.RetrieveKeyspaceConnection(keyspaceName).DescribeKeyspace().ColumnFamilies[name].Caching, Is.EqualTo(ColumnFamilyCaching.RowsOnly));

            originalColumnFamily.Caching = ColumnFamilyCaching.All;
            cluster.ActualizeKeyspaces(keyspaceSchemes);
            Assert.That(cluster.RetrieveKeyspaceConnection(keyspaceName).DescribeKeyspace().ColumnFamilies[name].Caching, Is.EqualTo(ColumnFamilyCaching.All));
        }
        public override FluentSuperColumn Execute()
        {
            var schema         = ColumnFamily.GetSchema();
            var superColSchema = new CassandraColumnSchema {
                NameType  = schema.SuperColumnNameType,
                Name      = SuperColumnName,
                ValueType = schema.ColumnNameType
            };

            var result = new FluentSuperColumn(superColSchema, GetColumns(ColumnFamily))
            {
                ColumnName = SuperColumnName
            };

            ColumnFamily.Context.Attach(result);
            result.MutationTracker.Clear();

            return(result);
        }
Пример #27
0
        public void ShouldCreateColumnFamily()
        {
            //Arrange
            string keyspace = "TestExample";

            using (Client client = new Client())
            {
                client.dropIfExistsAndCreateKeyspace(keyspace);
                ColumnFamily cf = new ColumnFamily();
                cf.Name = "cf";

                //Act
                bool beforeResult = client.cfExists(keyspace, "cf");
                client.createColumnFamily(keyspace, cf);
                bool afterResult = client.cfExists(keyspace, "cf");

                //Assert
                Assert.False(beforeResult);
                Assert.True(afterResult);
            }
        }
        public void TestCreateColumnFamily()
        {
            var name = TestSchemaUtils.GetRandomColumnFamilyName();
            var originalColumnFamily = new ColumnFamily
            {
                Name = name,
                CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 10),
                GCGraceSeconds     = 123,
                ReadRepairChance   = 0.3
            };

            keyspaceConnection.AddColumnFamily(originalColumnFamily);

            var columnFamily = keyspaceConnection.DescribeKeyspace().ColumnFamilies[name];

            Assert.That(columnFamily.Name, Is.EqualTo(originalColumnFamily.Name));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyType, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyType));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyOptions.SstableSizeInMb, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyOptions.SstableSizeInMb));
            Assert.That(columnFamily.GCGraceSeconds, Is.EqualTo(originalColumnFamily.GCGraceSeconds));
            Assert.That(columnFamily.ReadRepairChance, Is.EqualTo(originalColumnFamily.ReadRepairChance));
        }
 public bool NeedUpdateColumnFamily(ColumnFamily columnFamilyWithNewProperties, ColumnFamily columnFamilyFromTarget)
 {
     if (columnFamilyWithNewProperties.Name != columnFamilyFromTarget.Name)
     {
         throw new InvalidOperationException($"Cannot compare ColumnFamilies with different names ('{columnFamilyWithNewProperties.Name}' and '{columnFamilyFromTarget.Name}')");
     }
     if (!CompareComparatorType(columnFamilyWithNewProperties.ComparatorType, columnFamilyFromTarget.ComparatorType))
     {
         throw new InvalidOperationException($"Cannot compare ColumnFamilies with different comparatorTypes ('{columnFamilyWithNewProperties.ComparatorType}' and '{columnFamilyFromTarget.ComparatorType}')");
     }
     return
         (!(
              columnFamilyWithNewProperties.Caching.Equals(columnFamilyFromTarget.Caching) &&
              (columnFamilyWithNewProperties.ReadRepairChance == null || columnFamilyWithNewProperties.ReadRepairChance.Equals(columnFamilyFromTarget.ReadRepairChance)) &&
              (columnFamilyWithNewProperties.GCGraceSeconds == null || columnFamilyWithNewProperties.GCGraceSeconds.Equals(columnFamilyFromTarget.GCGraceSeconds)) &&
              (columnFamilyWithNewProperties.CompactionStrategy == null || CompareCompactionStrategy(columnFamilyWithNewProperties.CompactionStrategy, columnFamilyFromTarget.CompactionStrategy)) &&
              (columnFamilyWithNewProperties.Compression == null || CompareCompression(columnFamilyWithNewProperties.Compression, columnFamilyFromTarget.Compression)) &&
              (columnFamilyWithNewProperties.BloomFilterFpChance == null || columnFamilyWithNewProperties.BloomFilterFpChance.Equals(columnFamilyFromTarget.BloomFilterFpChance)) &&
              (columnFamilyWithNewProperties.DefaultTtl == null || columnFamilyWithNewProperties.DefaultTtl.Equals(columnFamilyFromTarget.DefaultTtl))
              ));
 }
        public void TestUpdateColumnFamily()
        {
            var name = TestSchemaUtils.GetRandomColumnFamilyName();
            var originalColumnFamily = new ColumnFamily
            {
                Name = name,
                CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 10),
                GCGraceSeconds     = 123,
                ReadRepairChance   = 0.3,
                Caching            = ColumnFamilyCaching.All
            };

            keyspaceConnection.AddColumnFamily(originalColumnFamily);

            originalColumnFamily.CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 20);
            originalColumnFamily.GCGraceSeconds     = 321;
            originalColumnFamily.ReadRepairChance   = 0.9;
            originalColumnFamily.Caching            = ColumnFamilyCaching.None;
            keyspaceConnection.UpdateColumnFamily(originalColumnFamily);

            var columnFamily = keyspaceConnection.DescribeKeyspace().ColumnFamilies[name];

            Assert.That(columnFamily.Name, Is.EqualTo(originalColumnFamily.Name));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyType, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyType));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyOptions.SstableSizeInMb, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyOptions.SstableSizeInMb));
            Assert.That(columnFamily.GCGraceSeconds, Is.EqualTo(originalColumnFamily.GCGraceSeconds));
            Assert.That(columnFamily.ReadRepairChance, Is.EqualTo(originalColumnFamily.ReadRepairChance));

            originalColumnFamily.CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(minThreshold: 5, maxThreshold: 17);
            keyspaceConnection.UpdateColumnFamily(originalColumnFamily);

            columnFamily = keyspaceConnection.DescribeKeyspace().ColumnFamilies[name];
            Assert.That(columnFamily.Name, Is.EqualTo(originalColumnFamily.Name));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyType, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyType));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyOptions.Enabled, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyOptions.Enabled));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyOptions.MinThreshold, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyOptions.MinThreshold));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyOptions.MaxThreshold, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyOptions.MaxThreshold));
            Assert.That(columnFamily.GCGraceSeconds, Is.EqualTo(originalColumnFamily.GCGraceSeconds));
            Assert.That(columnFamily.ReadRepairChance, Is.EqualTo(originalColumnFamily.ReadRepairChance));
        }