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(); RequestOptions scanOptions = RequestOptions.GetDefaultOptions(); scanOptions.AlternativeEndpoint = Constants.RestEndpointBaseZero; ScannerInformation scanInfo = null; try { scanInfo = client.CreateScannerAsync(_tableName, scanner, scanOptions).Result; List<FilterTestRecord> actualRecords = RetrieveResults(scanInfo, scanOptions).ToList(); actualRecords.ShouldContainOnly(expectedRecords); } finally { if (scanInfo != null) { client.DeleteScannerAsync(_tableName, scanInfo, scanOptions).Wait(); } } }
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); }