public void When_I_Scan_with_a_PrefixFilter_I_get_the_expected_results()
        {
            FilterTestRecord example = _allExpectedRecords.First();

            byte[] rawRowkey = Encoding.UTF8.GetBytes(example.RowKey);

            const int prefixLength = 4;
            var       prefix       = new byte[prefixLength];

            Array.Copy(rawRowkey, prefix, prefixLength);

            List <FilterTestRecord> expectedRecords = (from r in _allExpectedRecords
                                                       let rawKey = Encoding.UTF8.GetBytes(r.RowKey)
                                                                    where rawKey[0] == prefix[0] && rawKey[1] == prefix[1] && rawKey[2] == prefix[2] && rawKey[3] == prefix[3]
                                                                    select r).ToList();

            var client  = new HBaseClient(_credentials);
            var scanner = new Scanner();
            var filter  = new PrefixFilter(prefix);

            scanner.filter = filter.ToEncodedString();

            ScannerInformation      scanInfo      = client.CreateScanner(_tableName, scanner);
            List <FilterTestRecord> actualRecords = RetrieveResults(scanInfo).ToList();

            actualRecords.ShouldContainOnly(expectedRecords);
        }
        private IEnumerable <FilterTestRecord> RetrieveResults(ScannerInformation scanInfo)
        {
            var rv = new List <FilterTestRecord>();

            var     client = new HBaseClient(_credentials);
            CellSet next;

            while ((next = client.ScannerGetNext(scanInfo)) != null)
            {
                foreach (CellSet.Row row in next.rows)
                {
                    string rowKey = _encoding.GetString(row.key);

                    List <Cell> cells = row.values;

                    string a          = null;
                    string b          = null;
                    int    lineNumber = 0;
                    foreach (Cell c in cells)
                    {
                        string columnName = ExtractColumnName(c.column);
                        switch (columnName)
                        {
                        case LineNumberColumnName:
                            lineNumber = c.data.Length > 0 ? BitConverter.ToInt32(c.data, 0) : 0;
                            break;

                        case ColumnNameA:
                            a = _encoding.GetString(c.data);
                            break;

                        case ColumnNameB:
                            b = _encoding.GetString(c.data);
                            break;

                        default:
                            throw new InvalidOperationException("Don't know what to do with column: " + columnName);
                        }
                    }

                    var rec = new FilterTestRecord(rowKey, lineNumber, a, b);
                    rv.Add(rec);
                }
            }

            return(rv);
        }
Esempio n. 3
0
        private IEnumerable <FilterTestRecord> RetrieveResults(ScannerInformation scanInfo)
        {
            var rv = new List <FilterTestRecord>();

            var     client = new HBaseClient(RequestOptionsFactory.GetDefaultOptions());
            CellSet next;

            while ((next = client.ScannerGetNextAsync(scanInfo).Result) != null)
            {
                foreach (var row in next.Rows)
                {
                    var rowKey = row.Key.ToStringUtf8();

                    var cells = row.Values;

                    string a          = null;
                    string b          = null;
                    var    lineNumber = 0;
                    foreach (var c in cells)
                    {
                        var columnName = ExtractColumnName(c.Column);
                        switch (columnName)
                        {
                        case LineNumberColumnName:
                            lineNumber = c.Data.Length > 0 ? BitConverter.ToInt32(c.Data.ToByteArray(), 0) : 0;
                            break;

                        case ColumnNameA:
                            a = c.Data.ToStringUtf8();
                            break;

                        case ColumnNameB:
                            b = c.Data.ToStringUtf8();
                            break;

                        default:
                            throw new InvalidOperationException("Don't know what to do with column: " + columnName);
                        }
                    }

                    var rec = new FilterTestRecord(rowKey, lineNumber, a, b);
                    rv.Add(rec);
                }
            }

            return(rv);
        }
        public void When_I_Scan_with_a_RowFilter_I_get_the_expected_results()
        {
            FilterTestRecord example = _allExpectedRecords.First();

            List <FilterTestRecord> expectedRecords = (from r in _allExpectedRecords where r.RowKey == example.RowKey select r).ToList();

            var client  = new HBaseClient(_credentials);
            var scanner = new Scanner();
            var filter  = new RowFilter(CompareFilter.CompareOp.Equal, new BinaryComparator(Encoding.UTF8.GetBytes(example.RowKey)));

            scanner.filter = filter.ToEncodedString();

            ScannerInformation      scanInfo      = client.CreateScanner(_tableName, scanner);
            List <FilterTestRecord> actualRecords = RetrieveResults(scanInfo).ToList();

            actualRecords.ShouldContainOnly(expectedRecords);
        }
        public void When_I_Scan_with_a_InclusiveStopFilter_I_get_the_expected_results()
        {
            FilterTestRecord example = (from r in _allExpectedRecords where r.LineNumber == 2 select r).Single();

            byte[] rawRowKey = Encoding.UTF8.GetBytes(example.RowKey);

            List <FilterTestRecord> expectedRecords = (from r in _allExpectedRecords where r.LineNumber <= 2 select r).ToList();

            var client  = new HBaseClient(_credentials);
            var scanner = new Scanner();
            var filter  = new InclusiveStopFilter(rawRowKey);

            scanner.filter = filter.ToEncodedString();

            ScannerInformation      scanInfo      = client.CreateScanner(_tableName, scanner);
            List <FilterTestRecord> actualRecords = RetrieveResults(scanInfo).ToList();

            actualRecords.ShouldContainOnly(expectedRecords);
        }
        private void PopulateTable()
        {
            var client  = new HBaseClient(_credentials);
            var cellSet = new CellSet();

            string id = Guid.NewGuid().ToString("N");

            for (int lineNumber = 0; lineNumber < 10; ++lineNumber)
            {
                string rowKey = string.Format(CultureInfo.InvariantCulture, "{0}-{1}", id, lineNumber);

                // add to expected records
                var rec = new FilterTestRecord(rowKey, lineNumber, Guid.NewGuid().ToString("N"), Guid.NewGuid().ToString("D"));
                _allExpectedRecords.Add(rec);

                // add to row
                var row = new CellSet.Row {
                    key = _encoding.GetBytes(rec.RowKey)
                };

                var lineColumnValue = new Cell
                {
                    column = BuildCellColumn(ColumnFamilyName1, LineNumberColumnName),
                    data   = BitConverter.GetBytes(rec.LineNumber)
                };
                row.values.Add(lineColumnValue);

                var paragraphColumnValue = new Cell {
                    column = BuildCellColumn(ColumnFamilyName1, ColumnNameA), data = _encoding.GetBytes(rec.A)
                };
                row.values.Add(paragraphColumnValue);

                var columnValueB = new Cell {
                    column = BuildCellColumn(ColumnFamilyName2, ColumnNameB), data = Encoding.UTF8.GetBytes(rec.B)
                };
                row.values.Add(columnValueB);

                cellSet.rows.Add(row);
            }

            client.StoreCells(_tableName, cellSet);
        }
Esempio n. 7
0
        private void PopulateTable()
        {
            var client  = new HBaseClient(RequestOptionsFactory.GetDefaultOptions());
            var cellSet = new CellSet();

            var id = Guid.NewGuid().ToString("N");

            for (var lineNumber = 0; lineNumber < 10; ++lineNumber)
            {
                var rowKey = string.Format(CultureInfo.InvariantCulture, "{0}-{1}", id, lineNumber);

                // add to expected records
                var rec = new FilterTestRecord(rowKey, lineNumber, Guid.NewGuid().ToString("N"), Guid.NewGuid().ToString("D"));
                _allExpectedRecords.Add(rec);

                // add to row
                var row = new CellSet.Types.Row {
                    Key = ByteString.CopyFromUtf8(rec.RowKey)
                };

                var lineColumnValue = new Cell
                {
                    Column = BuildCellColumn(ColumnFamilyName1, LineNumberColumnName),
                    Data   = ByteString.CopyFrom(BitConverter.GetBytes(rec.LineNumber))
                };
                row.Values.Add(lineColumnValue);

                var paragraphColumnValue = new Cell {
                    Column = BuildCellColumn(ColumnFamilyName1, ColumnNameA), Data = ByteString.CopyFromUtf8(rec.A)
                };
                row.Values.Add(paragraphColumnValue);

                var columnValueB = new Cell {
                    Column = BuildCellColumn(ColumnFamilyName2, ColumnNameB), Data = ByteString.CopyFromUtf8(rec.B)
                };
                row.Values.Add(columnValueB);

                cellSet.Rows.Add(row);
            }

            client.StoreCellsAsync(_tableName, cellSet).Wait();
        }
 internal static FilterTestRecord WithAValue(this FilterTestRecord value, string a)
 {
     value.ArgumentNotNull(nameof(value));
     return(new FilterTestRecord(value.RowKey, value.LineNumber, a, value.B));
 }
 internal static FilterTestRecord WithLineNumberValue(this FilterTestRecord value, int lineNumber)
 {
     value.ArgumentNotNull(nameof(value));
     return(new FilterTestRecord(value.RowKey, lineNumber, value.A, value.B));
 }
 internal static FilterTestRecord WithBValue(this FilterTestRecord value, string b)
 {
     value.ArgumentNotNull("value");
     return(new FilterTestRecord(value.RowKey, value.LineNumber, value.A, b));
 }