private IEnumerable<FilterTestRecord> RetrieveResults(ScannerInformation scanInfo, RequestOptions scanOptions)
        {
            var rv = new List<FilterTestRecord>();

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

            while ((next = client.ScannerGetNextAsync(scanInfo, scanOptions).Result) != 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;
        }
        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.StoreCellsAsync(_tableName, cellSet).Wait();
        }