public WriterPropertiesBuilder CompressionLevel(ColumnPath path, int compressionLevel)
 {
     ExceptionInfo.Check(WriterPropertiesBuilder_Compression_Level_By_ColumnPath(_handle.IntPtr, path.Handle.IntPtr, compressionLevel));
     GC.KeepAlive(_handle);
     GC.KeepAlive(path);
     return(this);
 }
Esempio n. 2
0
        public override Void Execute()
        {
            var path = new ColumnPath {
                Column_family = ColumnFamily.FamilyName
            };

            if (SuperColumnName != null)
            {
                path.Super_column = SuperColumnName;
            }

            if (ColumnName != null)
            {
                path.Column = ColumnName;
            }

            CassandraSession.Current.GetClient().remove(
                Key,
                path,
                DateTimeOffset.Now.ToTimestamp(),
                CassandraSession.Current.WriteConsistency
                );

            return(new Void());
        }
Esempio n. 3
0
        public void InsertGetRemove()
        {
            var cp = new ColumnPath("Standard1", null, "InsertGetRemove");

            // insert values
            for (int i = 0; i < 100; i++)
            {
                Keyspace.Insert("InsertGetRemove." + i, cp, "InsertGetRemove.Value." + i);
            }

            // get values
            for (int i = 0; i < 100; i++)
            {
                var column = Keyspace.GetColumn("InsertGetRemove." + i, cp);
                Assert.NotNull(column);
                Assert.Equal("InsertGetRemove.Value." + i, column.Value);
            }

            // remove values
            for (int i = 0; i < 100; i++)
            {
                Keyspace.Remove("InsertGetRemove." + i, cp);
            }

            // make sure they are deleted
            for (int i = 0; i < 100; i++)
            {
                Assert.Throws <NotFoundException>(() =>
                {
                    Keyspace.GetColumn("InsertGetRemove." + i, cp);
                });
            }
        }
Esempio n. 4
0
        public void MultigetColumn()
        {
            // insert
            var columnPath = new ColumnPath("Standard1", null, "MultigetColumn");
            var keys       = new List <string>();

            for (int i = 0; i < 100; i++)
            {
                var key = "MultigetColumn." + i;
                Keyspace.Insert(key, columnPath, "MultigetColumn.value." + i);
                keys.Add(key);
            }

            // get
            var ms = Keyspace.MultigetColumn(keys, columnPath);

            for (int i = 0; i < 100; i++)
            {
                var column = ms[keys[i]];
                Assert.NotNull(column);
                Assert.Equal("MultigetColumn.value." + i, column.Value);
            }

            // remove
            for (int i = 0; i < 100; i++)
            {
                Keyspace.Remove("MultigetColumn." + i, columnPath);
            }
        }
 public WriterPropertiesBuilder DisableDictionary(ColumnPath path)
 {
     ExceptionInfo.Check(WriterPropertiesBuilder_Disable_Dictionary_By_ColumnPath(_handle.IntPtr, path.Handle.IntPtr));
     GC.KeepAlive(_handle);
     GC.KeepAlive(path);
     return(this);
 }
Esempio n. 6
0
        public void GetSuperColumn()
        {
            var scmap = new Dictionary <string, IList <SuperColumn> >();
            var list  = new List <Column>();

            for (int i = 0; i < 10; i++)
            {
                list.Add(new Column("GetSuperColumn." + i, "GetSuperColumn.Value." + i));
            }

            var superList = new List <SuperColumn> {
                new SuperColumn("SuperColumn.1", list)
            };

            scmap.Add("Super1", superList);
            Keyspace.BatchInsert("GetSuperColumn.1", null, scmap);

            var columnPath = new ColumnPath("Super1", "SuperColumn.1", null);

            try
            {
                var superColumn = Keyspace.GetSuperColumn("GetSuperColumn.1", columnPath);
                Assert.NotNull(superColumn);
                Assert.NotNull(superColumn.Columns);
                Assert.Equal(10, superColumn.Columns.Count);
            }
            finally
            {
                Keyspace.Remove("GetSuperColumn.1", columnPath);
            }
        }
Esempio n. 7
0
        public void GetSuperRangeSlice()
        {
            for (int i = 0; i < 10; i++)
            {
                var cp = new ColumnPath("Super1", "SuperColumn.1", "GetSuperRangeSlice." + i);
                Keyspace.Insert("GetSuperRangeSlice.0", cp, "GetSuperRangeSlice_value_" + i);
                Keyspace.Insert("GetSuperRangeSlice.1", cp, "GetSuperRangeSlice_value_" + i);
            }

            var columnParent = new ColumnParent("Super1");
            var predicate    = new SlicePredicate(null, new SliceRange(false, 150));
            var keySlices    = Keyspace.GetSuperRangeSlice(columnParent, predicate, "GetSuperRangeSlice.0", "GetSuperRangeSlice.3", 5);

            Assert.NotNull(keySlices);

            Assert.Equal(2, keySlices.Where(x => x.Key.StartsWith("GetSuperRangeSlice.")).Count());
            Assert.NotNull(keySlices["GetSuperRangeSlice.0"]);
            Assert.Equal("GetSuperRangeSlice_value_0",
                         keySlices["GetSuperRangeSlice.0"].First().Columns.First().Value);
            Assert.Equal(1, keySlices["GetSuperRangeSlice.1"].Count);
            Assert.Equal(10, keySlices["GetSuperRangeSlice.1"].First().Columns.Count);

            var columnPath = new ColumnPath("Super1");

            for (int i = 0; i < 2; i++)
            {
                Keyspace.Remove("GetSuperRangeSlice" + i, columnPath);
            }
        }
Esempio n. 8
0
        public void GetRangeSlice()
        {
            env.RestartCassandra();
            env.OpenConnection();

            // build 3 keys with 10 columns each
            for (int i = 0; i < 10; i++)
            {
                var cp = new ColumnPath("Standard2", null, "c" + i);

                Insert("rs0", "v" + i, cp);
                Insert("rs1", "v" + i, cp);
                Insert("rs2", "v" + i, cp);
            }

            var columnParent = new ColumnParent("Standard2");
            var predicate    = new SlicePredicate(new SliceRange(false, 150));

            var keySlices = client.get_range_slice(
                "Keyspace1", columnParent, predicate,
                "rs0", "rs3", 5, ConsistencyLevel.ONE);

            Assert.NotNull(keySlices);
            Assert.Equal(3, keySlices.Count);
            Assert.NotNull(keySlices[0]);
            Assert.Equal("v0", keySlices[0].Columns[0].Column.Value.UTFDecode());
            Assert.Equal(10, keySlices[1].Columns.Count);

            env.CloseConnection();
            env.StopCassandra();
        }
Esempio n. 9
0
        public void GetRangeSlice()
        {
            // build 3 keys with 10 columns each
            for (int i = 0; i < 10; i++)
            {
                var cp = new ColumnPath("Standard2", null, "c" + i);
                Keyspace.Insert("rs0", cp, "v" + i);
                Keyspace.Insert("rs1", cp, "v" + i);
                Keyspace.Insert("rs2", cp, "v" + i);
            }

            var columnParent = new ColumnParent("Standard2");
            var predicate    = new SlicePredicate(new SliceRange(false, 150));

            var keySlices = Keyspace.GetRangeSlice(columnParent, predicate, "rs0", "rs3", 5);

            Assert.NotNull(keySlices);
            Assert.Equal(3, keySlices.Count);
            Assert.NotNull(keySlices["rs0"]);
            Assert.Equal("v0", keySlices["rs0"].First().Value);
            Assert.Equal(10, keySlices["rs1"].Count);

            var columnPath = new ColumnPath("Standard2");

            for (int i = 0; i < 3; i++)
            {
                Keyspace.Remove("rs" + i, columnPath);
            }
        }
 public WriterPropertiesBuilder EnableStatistics(ColumnPath path)
 {
     ExceptionInfo.Check(WriterPropertiesBuilder_Enable_Statistics_By_ColumnPath(_handle.IntPtr, path.Handle.IntPtr));
     GC.KeepAlive(_handle);
     GC.KeepAlive(path);
     return(this);
 }
Esempio n. 11
0
        /// <summary>
        /// Reads data from storage
        /// </summary>
        /// <param name="key">Key which identifies the data</param>
        /// <returns>Storage data</returns>
        public object Value(Guid key)
        {
            // Get statement
            byte[]     keyEncoded = key.ToByteArray();
            ColumnPath columnPath = new ColumnPath()
            {
                Column        = ByteEncoderHelper.UTF8Encoder.ToByteArray("Value"),
                Column_family = columnFamily,
            };

            ColumnOrSuperColumn column = (ColumnOrSuperColumn)cluster.Execute(new ExecutionBlock(delegate(Cassandra.Client client)
            {
                return(client.get(keyEncoded, columnPath, ConsistencyLevel.ONE));
            }), keySpace);

            var data = column.Column.Value;

            using (MemoryStream ms = new MemoryStream(data))
            {
                using (BinaryReader br = new BinaryReader(ms))
                {
                    return(Serializer.Deserialize(br));
                }
            }
        }
Esempio n. 12
0
        static void Main(string[] args)
        {
            //建立数据库连接
            TTransport transport = new TSocket("192.168.10.2", 9160);
            TProtocol  protocol  = new TBinaryProtocol(transport);

            Cassandra.Client client = new Cassandra.Client(protocol);
            transport.Open();

            System.Text.Encoding utf8Encoding = System.Text.Encoding.UTF8;
            long       timeStamp      = DateTime.Now.Millisecond;
            ColumnPath nameColumnPath = new ColumnPath()
            {
                Column_family = "Standard1",
                Column        = utf8Encoding.GetBytes("age")
            };

            //写入数据
            client.insert("Keyspace1",
                          "studentA",
                          nameColumnPath,
                          utf8Encoding.GetBytes("18"),
                          timeStamp,
                          ConsistencyLevel.ONE);

            //读取数据
            ColumnOrSuperColumn returnedColumn = client.get("Keyspace1", "studentA", nameColumnPath, ConsistencyLevel.ONE);

            Console.WriteLine("Keyspace1/Standard1: age: {0}, value: {1}", utf8Encoding.GetString(returnedColumn.Column.Name), utf8Encoding.GetString(returnedColumn.Column.Value));

            //关闭连接
            transport.Close();
        }
Esempio n. 13
0
        public void MultigetSlice()
        {
            // insert
            var columnPath = new ColumnPath("Standard1", null, "MultigetSlice");
            var keys       = new List <string>();

            for (int i = 0; i < 100; i++)
            {
                var key = "MultigetSlice." + i;
                Keyspace.Insert(key, columnPath, "MultigetSlice.value." + i);
                keys.Add(key);
            }

            // get
            var columnParent   = new ColumnParent("Standard1");
            var sliceRange     = new SliceRange(false, 150);
            var slicePredicate = new SlicePredicate(null, sliceRange);
            var ms             = Keyspace.MultigetSlice(keys, columnParent, slicePredicate);

            for (int i = 0; i < 100; i++)
            {
                var columns = ms[keys[i]];
                Assert.NotNull(columns);
                Assert.Equal(1, columns.Count);
                Assert.True(columns.First().Value.StartsWith("MultigetSlice."));
            }

            // remove
            for (int i = 0; i < 100; i++)
            {
                Keyspace.Remove("MultigetSlice." + i, columnPath);
            }
        }
 public WriterPropertiesBuilder Encoding(ColumnPath path, Encoding encoding)
 {
     ExceptionInfo.Check(WriterPropertiesBuilder_Encoding_By_ColumnPath(_handle.IntPtr, path.Handle.IntPtr, encoding));
     GC.KeepAlive(_handle);
     GC.KeepAlive(path);
     return(this);
 }
Esempio n. 15
0
        public void deleteRow(string keyspace, Object columnFamily, Object key)
        {
            client.set_keyspace(keyspace);
            ColumnPath columnPath = new ColumnPath();

            columnPath.Column_family = columnFamily.ToString();
            client.remove(key.ToByteArray(), columnPath, createTimestamp(), consistencyLevel);
        }
Esempio n. 16
0
        public void SimpleScenario()
        {
            env.RestartCassandra();
            env.OpenConnection();

            //At this point we're using the standard configuration file
            var cp = new ColumnPath("Standard1", null, "name");

            Console.WriteLine("Inserting a column");

            Insert("1", "Josh Blogs", cp);
            Insert("2", "Something else", cp);

            //Let's get something back out (this is our select statement)
            var returnedColumn = client.get(
                "Keyspace1",         //The database
                "1",                 //The actual key we want
                cp,                  //Where that key sits
                ConsistencyLevel.ONE //HAZY
                );

            Console.WriteLine("We got Name: {0}, value {1}",
                              returnedColumn.Column.Name.UTFDecode(),
                              returnedColumn.Column.Value.UTFDecode());

            Console.WriteLine("Now let's try getting a range");

            //This is telling us the offest to get.  This is where paging would occur.
            var predicate = new SlicePredicate(new SliceRange(false, 10));
            var parent    = new ColumnParent("Standard1");

            var keyedResults =
                client.multiget_slice("Keyspace1",
                                      new List <string> {
                "1", "2"
            },
                                      parent,
                                      predicate,
                                      ConsistencyLevel.ONE);

            foreach (var keyedResult in keyedResults)
            {
                Console.WriteLine("Key: {0}", keyedResult.Key);
                foreach (ColumnOrSuperColumn result in keyedResult.Value)
                {
                    Column column = result.Column;
                    Console.WriteLine("Name: {0}, value: {1}",
                                      column.Name.UTFDecode(),
                                      column.Value.UTFDecode());
                }
            }

            env.CloseConnection();
            env.StopCassandra();
        }
Esempio n. 17
0
        public string this[int index] // It returns values that are shown in grid columns
        {
            get
            {
                object cell = Offset;

                if (GridView.ShowPaths) // Use stored paths
                {
                    ColumnPath path = GridView.Paths[index];
                    int        ofs;
                    for (int i = 0; i < path.Segments.Count; i++)
                    {
                        ofs = (int)cell; // Use output as an input for the next iteration

                        if (path.Segments[i].GetData().IsNull(ofs))
                        {
                            cell = null;
                            break; // Cannot continue with next segments
                        }
                        else
                        {
                            cell = path.Segments[i].GetData().GetValue(ofs);
                        }
                    }
                }
                else // Use greater dimensions
                {
                    int dimCount = GridView.Set.Columns.Count;
                    if (index < 0 || index >= dimCount)
                    {
                        return(null);
                    }
                    DcColumn dim = GridView.Set.Columns[index];

                    if (dim.GetData().IsNull(Offset))
                    {
                        cell = null;
                    }
                    else
                    {
                        cell = dim.GetData().GetValue(Offset);
                    }
                }

                if (cell == null)
                {
                    return("");
                }
                else
                {
                    return(Convert.ToString(cell));
                }
            }
        }
        protected ColumnPath BuildColumnPath(byte[] column)
        {
            var columnPath = new ColumnPath {
                Column_family = columnFamily
            };

            if (column != null)
            {
                columnPath.Column = column;
            }
            return(columnPath);
        }
Esempio n. 19
0
        public NColumn <N, V> getColumn <N, V>(string keyspace, Object columnFamily, Object key, N columnName)
        {
            client.set_keyspace(keyspace);
            byte[]     binaryKey = key.ToByteArray();
            ColumnPath cp        = new ColumnPath();

            cp.Column_family = columnFamily.ToString();
            cp.Column        = columnName.ToByteArray();
            var result = ThriftUtility.ToNColumn <N, V>(client.get(binaryKey, cp, consistencyLevel).Column);

            return(result);
        }
Esempio n. 20
0
        public void MultigetSuperSlice_With_SuperColumn()
        {
            var list = new List <Column>();

            for (int i = 0; i < 10; i++)
            {
                list.Add(new Column("MultigetSuperSlice." + i, "MultigetSuperSlice.value." + i));
            }

            var scmap = new Dictionary <string, IList <SuperColumn> >();

            scmap.Add("Super1", new List <SuperColumn>
            {
                new SuperColumn("SuperColumn.1", list),
                new SuperColumn("SuperColumn.2", list),
            });

            var keys = new List <string>();

            for (int i = 1; i <= 3; i++)
            {
                var key = "MultigetSuperSlice." + i;
                Keyspace.BatchInsert(key, null, scmap);
                keys.Add(key);
            }

            try
            {
                var columnParent = new ColumnParent("Super1", "SuperColumn.1");
                var predicate    = new SlicePredicate(null, new SliceRange(false, 150));
                var superc       = Keyspace.MultigetSuperSlice(keys, columnParent, predicate);

                Assert.NotNull(superc);
                Assert.Equal(3, superc.Count);
                var scls = superc[keys[0]];
                Assert.NotNull(scls);
                Assert.Equal(1, scls.Count);
                Assert.NotNull(scls[0].Columns);
                Assert.Equal(10, scls[0].Columns.Count);
                Assert.NotNull(scls[0].Columns[0].Value);
            }
            finally
            {
                var columnPath = new ColumnPath("Super1");
                for (int i = 1; i <= 3; i++)
                {
                    Keyspace.Remove("MultigetSuperSlice." + i, columnPath);
                }
            }
        }
Esempio n. 21
0
        public static void TestDotRepresentations()
        {
            using var p0 = new ColumnPath("root.part0.part1");
            using var p1 = new ColumnPath(new[] { "root", "part0", "part1" });

            Assert.AreEqual("root.part0.part1", p0.ToDotString());
            Assert.AreEqual("root.part0.part1", p1.ToDotString());

            Assert.AreEqual(new[] { "root", "part0", "part1" }, p0.ToDotVector());
            Assert.AreEqual(new[] { "root", "part0", "part1" }, p1.ToDotVector());

            using var p2 = p0.Extend("part2");

            Assert.AreEqual("root.part0.part1.part2", p2.ToDotString());
        }
Esempio n. 22
0
        public override Void Execute(BaseCassandraColumnFamily columnFamily)
        {
            var path = new ColumnPath {
                Column_family = columnFamily.FamilyName
            };

            CassandraSession.Current.GetClient().remove(
                Key,
                path,
                DateTimeOffset.UtcNow.ToTimestamp(),
                CassandraSession.Current.WriteConsistency
                );

            return(new Void());
        }
Esempio n. 23
0
        /// <summary>
        /// Best target for the current source.
        /// </summary>
        public void SelectBestTarget()
        {
            ColumnPath sourcePath = SourceTree.SelectedPath;

            if (sourcePath == null)
            {
                return;                     // Primary node is not selected
            }
            if (!sourcePath.IsPrimitive)
            {
                return;                                                   // Only primitive paths can be matchd
            }
            ColumnPath pargetPath = mapper.MapCol(sourcePath, TargetTab); // Find best path starting from the target set and corresponding to the source path

            TargetTree.SelectedPath = pargetPath;
        }
Esempio n. 24
0
        public static void TestDotRepresentationsUtf8()
        {
            const string part1 = "2H₂ + O₂ ⇌ 2H₂O, R = 47 kΩ, ⌀ 200 mm";

            using var p0 = new ColumnPath("root.part0." + part1);
            using var p1 = new ColumnPath(new[] { "root", "part0", part1 });

            Assert.AreEqual("root.part0." + part1, p0.ToDotString());
            Assert.AreEqual("root.part0." + part1, p1.ToDotString());

            Assert.AreEqual(new[] { "root", "part0", part1 }, p0.ToDotVector());
            Assert.AreEqual(new[] { "root", "part0", part1 }, p1.ToDotVector());

            using var p2 = p0.Extend("α ∧ ¬β");

            Assert.AreEqual("root.part0." + part1 + ".α ∧ ¬β", p2.ToDotString());
        }
Esempio n. 25
0
        /// <summary>
        /// Removes data from storage
        /// </summary>
        /// <param name="key">Key which identifies the data</param>
        /// <returns>True if data was present in the storage</returns>
        public bool Remove(Guid key)
        {
            // Get statement
            byte[]     keyEncoded = key.ToByteArray();
            ColumnPath columnPath = new ColumnPath()
            {
                Column        = ByteEncoderHelper.UTF8Encoder.ToByteArray("Value"),
                Column_family = columnFamily,
            };

            cluster.Execute(new ExecutionBlock(delegate(Cassandra.Client client)
            {
                client.remove(keyEncoded, columnPath, UnixHelper.UnixTimestamp, ConsistencyLevel.ONE);
                return(null);
            }), keySpace);

            return(true);
        }
Esempio n. 26
0
        public static double ComputePathSimilarity(ColumnPath source, ColumnPath target)
        {
            if (source == null || target == null || source.Size == 0 || target.Size == 0)
            {
                return(0);
            }

            double rankFactor1 = 0.5;
            double rankFactor2 = 0.5;

            double sumCol = 0.0;
            double sumTab = 0.0;
            double w1     = 1.0;

            for (int i = source.Segments.Count - 1; i >= 0; i--)
            {
                string d1 = source.Segments[i].Name;
                string s1 = source.Segments[i].Output.Name;

                double w2 = 1.0;
                for (int j = target.Segments.Count - 1; j >= 0; j--)
                {
                    string d2 = target.Segments[j].Name;
                    string s2 = target.Segments[j].Output.Name;

                    double simCol = ComputeStringSimilarity(d1, d2, 3);
                    simCol *= (w1 * w2);
                    sumCol += simCol;

                    double simTab = ComputeStringSimilarity(s1, s2, 3);
                    simTab *= (w1 * w2);
                    sumTab += simTab;

                    w2 *= rankFactor1; // Decrease the weight
                }

                w1 *= rankFactor2; // Decrease the weight
            }

            sumCol /= (source.Segments.Count * target.Segments.Count);
            sumTab /= (source.Segments.Count * target.Segments.Count);

            return((sumCol + sumTab) / 2);
        }
Esempio n. 27
0
        public override IFluentSuperColumn <CompareWith, CompareSubcolumnWith> Execute(BaseCassandraColumnFamily columnFamily)
        {
            var path = new ColumnPath {
                Column_family = columnFamily.FamilyName
            };

            if (SuperColumnName != null)
            {
                path.Super_column = SuperColumnName;
            }

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

            return((IFluentSuperColumn <CompareWith, CompareSubcolumnWith>)Helper.ConvertToFluentBaseColumn <CompareWith, CompareSubcolumnWith>(output));
        }
Esempio n. 28
0
        public static void TestNodeRepresentation()
        {
            var columns = new Column[] { new Column <int[]>("value") };

            using var schema = Column.CreateSchemaNode(columns);
            using var p0     = new ColumnPath(schema);
            using var p1     = new ColumnPath(schema.Field(0));
            using var p2     = new ColumnPath(((GroupNode)schema.Field(0)).Field(0));
            using var p3     = new ColumnPath(((GroupNode)((GroupNode)schema.Field(0)).Field(0)).Field(0));

            Assert.AreEqual("", p0.ToDotString());
            Assert.AreEqual("value", p1.ToDotString());
            Assert.AreEqual("value.list", p2.ToDotString());
            Assert.AreEqual("value.list.item", p3.ToDotString());

            Assert.AreEqual("", schema.Path.ToDotString());
            Assert.AreEqual("value", schema.Field(0).Path.ToDotString());
            Assert.AreEqual("value.list", ((GroupNode)schema.Field(0)).Field(0).Path.ToDotString());
            Assert.AreEqual("value.list.item", ((GroupNode)((GroupNode)schema.Field(0)).Field(0)).Field(0).Path.ToDotString());
        }
Esempio n. 29
0
 /// <summary>
 /// Secondary: Enabled/disabled status of a secondary node. Whether the current paths can be added as a new match without contradiction to the existing matches.
 /// Secondary: given a primary currently selected node, compute if a match with this secondary node does not contradict to existing matches (so it can be added). Alternatively, if relevances are precomputed then we find if relevance is higher than 0.
 /// Primary: always true (if there is at least one possible secondary match).
 /// </summary>
 public bool CanMatchTarget(ColumnPath path)
 {
     if (TargetTree.IsPrimary)
     {
         return(true);
     }
     else
     {
         ColumnPath priPath = SourceTree.SelectedPath;
         if (priPath == null)
         {
             return(false);                 // Primary node is not selected
         }
         if (!priPath.IsPrimitive || !path.IsPrimitive)
         {
             return(false);                                           // Only primitive paths can be matchd
         }
         return(true);
     }
 }
Esempio n. 30
0
        public void ValidateColumnPath()
        {
            var cp = new ColumnPath("Standard1", null, "ValidateColumnPath");

            Keyspace.Insert("ValidateColumnPath", cp, "ValidateColumnPath Value");
            Keyspace.Remove("ValidateColumnPath", cp);

            cp = new ColumnPath("CFDoesNotExist", null, "TestInsertGetRemove");

            Assert.Throws <InvalidRequestException>(() =>
            {
                Keyspace.Insert("ValidateColumnPath", cp, "testValidColumnPath_value");
            });

            cp = new ColumnPath("Standard1", "TestInsertGetRemove", null);

            Assert.Throws <InvalidRequestException>(() =>
            {
                Keyspace.Insert("ValidateColumnPath", cp, "testValidColumnPath_value");
            });
        }
Esempio n. 31
0
        //throws InvalidRequestException
        /// <summary>
        ///Make sure that the given column path is a SuperColumn in the DB, Throws an exception if it's not.
        /// </summary>
        /// <param name="columnPath"></param>
        void AssertSuperColumnPath(ColumnPath columnPath)
        {
            var cf = columnPath.ColumnFamily;
            IDictionary<string, string> cfdefine;

            if ((cfdefine = Description[cf]) != null
                && cfdefine[CF_TYPE].Equals(CF_TYPE_SUPER)
                 && columnPath.SuperColumn != null)
            {
                return;
            }
            throw new InvalidRequestException(
                 "Invalid super column or super column family does not exist: " + cf, null);
        }
Esempio n. 32
0
        //throws InvalidRequestException
        /// <summary>
        /// Make sure that if the given column path was a Column. Throws an InvalidRequestException if not.
        /// </summary>
        /// <param name="columnPath">if either the column family does not exist or that it's type does not match (super)..</param>
        void AssertColumnPath(ColumnPath columnPath)
        {
            string cf = columnPath.ColumnFamily;
            IDictionary<string, string> cfdefine;
            if (!Description.ContainsKey(cf))
                throw new InvalidRequestException("The specified column family does not exist: " + cf, null);

            cfdefine = Description[cf];

            if (cfdefine[CF_TYPE].Equals(CF_TYPE_STANDARD) && columnPath.Column != null)
                return; // if the column family is a standard column
            else if (cfdefine[CF_TYPE].Equals(CF_TYPE_SUPER) && columnPath.SuperColumn != null && columnPath.Column != null)
                // if the column family is a super column and also give the super_column name
                return;
        }
        public void Failover()
        {
            var h1client = new Mock<ICassandraClient>();
            var h2client = new Mock<ICassandraClient>();
            var h3client = new Mock<ICassandraClient>();
            var h1endpoint = new Endpoint("h1", 111, "ip1");
            var h2endpoint = new Endpoint("h2", 111, "ip2");
            var h3endpoint = new Endpoint("h3", 111, "ip3");
            var tprotocol = new Mock<TProtocol>(new Mock<TTransport>().Object);
            var h1cassandra = new Mock<Apache.Cassandra.Cassandra.Client>(tprotocol.Object).As<Apache.Cassandra.Cassandra.Iface>();
            var h2cassandra = new Mock<Apache.Cassandra.Cassandra.Client>(tprotocol.Object).As<Apache.Cassandra.Cassandra.Iface>();
            var h3cassandra = new Mock<Apache.Cassandra.Cassandra.Client>(tprotocol.Object).As<Apache.Cassandra.Cassandra.Iface>();
            var keyspaceName = "Keyspace1";
            var description = new Dictionary<string, Dictionary<string, string>>();
            var keyspace1desc = new Dictionary<string, string>();
            keyspace1desc.Add(HectorSharp.Keyspace.CF_TYPE, HectorSharp.Keyspace.CF_TYPE_STANDARD);
            description.Add("Standard1", keyspace1desc);
            var consistencyLevel = HectorSharp.ConsistencyLevel.ONE;
            var cp = new ColumnPath("Standard1", null, "Failover");
            var pool = new Mock<IKeyedObjectPool<Endpoint, ICassandraClient>>();
            var monitor = new Mock<ICassandraClientMonitor>();

            // list of available servers
            var tokenMap = new Dictionary<string, string>();
            tokenMap.Add("t1", "h1");
            tokenMap.Add("t2", "h2");
            tokenMap.Add("t3", "h3");

            h1client.Setup(c => c.Client).Returns(h1cassandra.Object);
            h2client.Setup(c => c.Client).Returns(h2cassandra.Object);
            h3client.Setup(c => c.Client).Returns(h3cassandra.Object);
            h1client.Setup(c => c.Port).Returns(h1endpoint.Port);
            h2client.Setup(c => c.Port).Returns(h2endpoint.Port);
            h3client.Setup(c => c.Port).Returns(h3endpoint.Port);
            h1client.Setup(c => c.GetTokenMap(AnyBool())).Returns(tokenMap);
            h2client.Setup(c => c.GetTokenMap(AnyBool())).Returns(tokenMap);
            h3client.Setup(c => c.GetTokenMap(AnyBool())).Returns(tokenMap);
            h1client.Setup(c => c.Endpoint).Returns(h1endpoint);
            h2client.Setup(c => c.Endpoint).Returns(h2endpoint);
            h3client.Setup(c => c.Endpoint).Returns(h3endpoint);
            pool.Setup(p => p.Borrow(IsEndpoint(h1endpoint))).Returns(h1client.Object);
            pool.Setup(p => p.Borrow(IsEndpoint(h2endpoint))).Returns(h2client.Object);
            pool.Setup(p => p.Borrow(IsEndpoint(h3endpoint))).Returns(h3client.Object);

            // success without failover

            var failoverPolicy = new FailoverPolicy(0, FailoverStrategy.FAIL_FAST);
            var ks = new Keyspace(h1client.Object, keyspaceName, description, consistencyLevel, failoverPolicy, pool.Object, monitor.Object);

            ks.Insert("key", cp, "value");

            // fail fast

            h1cassandra.Setup(
                c => c.insert(AnyString(), AnyString(), Any<Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any<Apache.Cassandra.ConsistencyLevel>()))
                .Throws(new Apache.Cassandra.TimedOutException());

            Assert.Throws<TimedOutException>(() => ks.Insert("key", cp, "value"));

            // on fail try next one, h1 fails, h2 succeeds
            failoverPolicy = new FailoverPolicy(3, FailoverStrategy.ON_FAIL_TRY_ONE_NEXT_AVAILABLE);
            ks = new Keyspace(h1client.Object, keyspaceName, description, consistencyLevel, failoverPolicy, pool.Object, monitor.Object);

            ks.Insert("key", cp, "value");

            h2cassandra.Verify(
                c => c.insert(AnyString(), AnyString(), Any<Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any<Apache.Cassandra.ConsistencyLevel>())
            );

            pool.Verify(p => p.Borrow(IsEndpoint(h2endpoint)));

            // make all nodes fail

            h2cassandra.Setup(
                c => c.insert(AnyString(), AnyString(), Any<Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any<Apache.Cassandra.ConsistencyLevel>()))
                .Throws(new Apache.Cassandra.TimedOutException());

            h3cassandra.Setup(
                c => c.insert(AnyString(), AnyString(), Any<Apache.Cassandra.ColumnPath>(), AnyBytes(), AnyLong(), Any<Apache.Cassandra.ConsistencyLevel>()))
                .Throws(new Apache.Cassandra.TimedOutException());

            ks = new Keyspace(h1client.Object, keyspaceName, description, consistencyLevel, failoverPolicy, pool.Object, monitor.Object);

            Assert.Throws<TimedOutException>(() => ks.Insert("key", cp, "value"));
        }