@Before public void setUp() { resultCache = new CompleteScanResultCache(); }
return updateNumberOfCompleteResultsAndReturn(combine()); if (partialResults.isEmpty()) { partialResults.add(last); return updateNumberOfCompleteResultsAndReturn(Arrays.copyOf(results, results.length - 1)); return EMPTY_RESULT_ARRAY; Result completeResult = combine(); partialResults.add(last); return updateNumberOfCompleteResultsAndReturn(completeResult); Result[] resultsToReturn = prependCombined(results, results.length - 1); partialResults.add(last); return updateNumberOfCompleteResultsAndReturn(resultsToReturn); return updateNumberOfCompleteResultsAndReturn(prependCombined(results, results.length)); return updateNumberOfCompleteResultsAndReturn(results);
@Test public void testNoPartial() throws IOException { assertSame(ScanResultCache.EMPTY_RESULT_ARRAY, resultCache.addAndGet(ScanResultCache.EMPTY_RESULT_ARRAY, false)); assertSame(ScanResultCache.EMPTY_RESULT_ARRAY, resultCache.addAndGet(ScanResultCache.EMPTY_RESULT_ARRAY, true)); int count = 10; Result[] results = new Result[count]; for (int i = 0; i < count; i++) { results[i] = Result.create(Arrays.asList(createCell(i, CQ1))); } assertSame(results, resultCache.addAndGet(results, false)); }
private Result[] prependCombined(Result[] results, int length) throws IOException { if (length == 0) { return new Result[] { combine() }; } // the last part of a partial result may not be marked as partial so here we need to check if // there is a row change. int start; if (Bytes.equals(partialResults.get(0).getRow(), results[0].getRow())) { partialResults.add(results[0]); start = 1; length--; } else { start = 0; } Result[] prependResults = new Result[length + 1]; prependResults[0] = combine(); System.arraycopy(results, start, prependResults, 1, length); return prependResults; }
@After public void tearDown() { resultCache.clear(); resultCache = null; }
private Result[] prependCombined(Result[] results, int length) throws IOException { if (length == 0) { return new Result[] { combine() }; } // the last part of a partial result may not be marked as partial so here we need to check if // there is a row change. int start; if (Bytes.equals(partialResults.get(0).getRow(), results[0].getRow())) { partialResults.add(results[0]); start = 1; length--; } else { start = 0; } Result[] prependResults = new Result[length + 1]; prependResults[0] = combine(); System.arraycopy(results, start, prependResults, 1, length); return prependResults; }
@After public void tearDown() { resultCache.clear(); resultCache = null; }
return updateNumberOfCompleteResultsAndReturn(combine()); if (partialResults.isEmpty()) { partialResults.add(last); return updateNumberOfCompleteResultsAndReturn(Arrays.copyOf(results, results.length - 1)); return EMPTY_RESULT_ARRAY; Result completeResult = combine(); partialResults.add(last); return updateNumberOfCompleteResultsAndReturn(completeResult); Result[] resultsToReturn = prependCombined(results, results.length - 1); partialResults.add(last); return updateNumberOfCompleteResultsAndReturn(resultsToReturn); return updateNumberOfCompleteResultsAndReturn(prependCombined(results, results.length)); return updateNumberOfCompleteResultsAndReturn(results);
public static ScanResultCache createScanResultCache(Scan scan) { if (scan.getAllowPartialResults()) { return new AllowPartialScanResultCache(); } else if (scan.getBatch() > 0) { return new BatchScanResultCache(scan.getBatch()); } else { return new CompleteScanResultCache(); } }
private Result[] prependCombined(Result[] results, int length) throws IOException { if (length == 0) { return new Result[] { combine() }; } // the last part of a partial result may not be marked as partial so here we need to check if // there is a row change. int start; if (Bytes.equals(partialResults.get(0).getRow(), results[0].getRow())) { partialResults.add(results[0]); start = 1; length--; } else { start = 0; } Result[] prependResults = new Result[length + 1]; prependResults[0] = combine(); System.arraycopy(results, start, prependResults, 1, length); return prependResults; }
@Test public void testCombine1() throws IOException { Result previousResult = Result.create(Arrays.asList(createCell(0, CQ1)), null, false, true); Result result1 = Result.create(Arrays.asList(createCell(1, CQ1)), null, false, true); Result result2 = Result.create(Arrays.asList(createCell(1, CQ2)), null, false, true); Result result3 = Result.create(Arrays.asList(createCell(1, CQ3)), null, false, true); Result[] results = resultCache.addAndGet(new Result[] { previousResult, result1 }, false); assertEquals(1, results.length); assertSame(previousResult, results[0]); assertEquals(0, resultCache.addAndGet(new Result[] { result2 }, false).length); assertEquals(0, resultCache.addAndGet(new Result[] { result3 }, false).length); assertEquals(0, resultCache.addAndGet(new Result[0], true).length); results = resultCache.addAndGet(new Result[0], false); assertEquals(1, results.length); assertEquals(1, Bytes.toInt(results[0].getRow())); assertEquals(3, results[0].rawCells().length); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ1))); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ2))); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ3))); }
return updateNumberOfCompleteResultsAndReturn(combine()); if (partialResults.isEmpty()) { partialResults.add(last); return updateNumberOfCompleteResultsAndReturn(Arrays.copyOf(results, results.length - 1)); return EMPTY_RESULT_ARRAY; Result completeResult = combine(); partialResults.add(last); return updateNumberOfCompleteResultsAndReturn(completeResult); Result[] resultsToReturn = prependCombined(results, results.length - 1); partialResults.add(last); return updateNumberOfCompleteResultsAndReturn(resultsToReturn); return updateNumberOfCompleteResultsAndReturn(prependCombined(results, results.length)); return updateNumberOfCompleteResultsAndReturn(results);
public static ScanResultCache createScanResultCache(Scan scan) { if (scan.getAllowPartialResults()) { return new AllowPartialScanResultCache(); } else if (scan.getBatch() > 0) { return new BatchScanResultCache(scan.getBatch()); } else { return new CompleteScanResultCache(); } }
@Test public void testCombine4() throws IOException { Result result1 = Result.create(Arrays.asList(createCell(1, CQ1)), null, false, true); Result result2 = Result.create(Arrays.asList(createCell(1, CQ2)), null, false, false); Result nextResult1 = Result.create(Arrays.asList(createCell(2, CQ1)), null, false, true); Result nextResult2 = Result.create(Arrays.asList(createCell(2, CQ2)), null, false, false); assertEquals(0, resultCache.addAndGet(new Result[] { result1 }, false).length); Result[] results = resultCache.addAndGet(new Result[] { result2, nextResult1 }, false); assertEquals(1, results.length); assertEquals(1, Bytes.toInt(results[0].getRow())); assertEquals(2, results[0].rawCells().length); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ1))); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ2))); results = resultCache.addAndGet(new Result[] { nextResult2 }, false); assertEquals(1, results.length); assertEquals(2, Bytes.toInt(results[0].getRow())); assertEquals(2, results[0].rawCells().length); assertEquals(2, Bytes.toInt(results[0].getValue(CF, CQ1))); assertEquals(2, Bytes.toInt(results[0].getValue(CF, CQ2))); } }
@Before public void setUp() { resultCache = new CompleteScanResultCache(); }
@Test public void testCombine2() throws IOException { Result result1 = Result.create(Arrays.asList(createCell(1, CQ1)), null, false, true); Result result2 = Result.create(Arrays.asList(createCell(1, CQ2)), null, false, true); Result result3 = Result.create(Arrays.asList(createCell(1, CQ3)), null, false, true); Result nextResult1 = Result.create(Arrays.asList(createCell(2, CQ1)), null, false, true); Result nextToNextResult1 = Result.create(Arrays.asList(createCell(3, CQ2)), null, false, false); assertEquals(0, resultCache.addAndGet(new Result[] { result1 }, false).length); assertEquals(0, resultCache.addAndGet(new Result[] { result2 }, false).length); assertEquals(0, resultCache.addAndGet(new Result[] { result3 }, false).length); Result[] results = resultCache.addAndGet(new Result[] { nextResult1 }, false); assertEquals(1, results.length); assertEquals(1, Bytes.toInt(results[0].getRow())); assertEquals(3, results[0].rawCells().length); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ1))); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ2))); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ3))); results = resultCache.addAndGet(new Result[] { nextToNextResult1 }, false); assertEquals(2, results.length); assertEquals(2, Bytes.toInt(results[0].getRow())); assertEquals(1, results[0].rawCells().length); assertEquals(2, Bytes.toInt(results[0].getValue(CF, CQ1))); assertEquals(3, Bytes.toInt(results[1].getRow())); assertEquals(1, results[1].rawCells().length); assertEquals(3, Bytes.toInt(results[1].getValue(CF, CQ2))); }
public static ScanResultCache createScanResultCache(Scan scan) { if (scan.getAllowPartialResults()) { return new AllowPartialScanResultCache(); } else if (scan.getBatch() > 0) { return new BatchScanResultCache(scan.getBatch()); } else { return new CompleteScanResultCache(); } }
@Test public void testCombine3() throws IOException { Result result1 = Result.create(Arrays.asList(createCell(1, CQ1)), null, false, true); Result result2 = Result.create(Arrays.asList(createCell(1, CQ2)), null, false, true); Result nextResult1 = Result.create(Arrays.asList(createCell(2, CQ1)), null, false, false); Result nextToNextResult1 = Result.create(Arrays.asList(createCell(3, CQ1)), null, false, true); assertEquals(0, resultCache.addAndGet(new Result[] { result1 }, false).length); assertEquals(0, resultCache.addAndGet(new Result[] { result2 }, false).length); Result[] results = resultCache.addAndGet(new Result[] { nextResult1, nextToNextResult1 }, false); assertEquals(2, results.length); assertEquals(1, Bytes.toInt(results[0].getRow())); assertEquals(2, results[0].rawCells().length); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ1))); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ2))); assertEquals(2, Bytes.toInt(results[1].getRow())); assertEquals(1, results[1].rawCells().length); assertEquals(2, Bytes.toInt(results[1].getValue(CF, CQ1))); results = resultCache.addAndGet(new Result[0], false); assertEquals(1, results.length); assertEquals(3, Bytes.toInt(results[0].getRow())); assertEquals(1, results[0].rawCells().length); assertEquals(3, Bytes.toInt(results[0].getValue(CF, CQ1))); }
@Test public void testNoPartial() throws IOException { assertSame(ScanResultCache.EMPTY_RESULT_ARRAY, resultCache.addAndGet(ScanResultCache.EMPTY_RESULT_ARRAY, false)); assertSame(ScanResultCache.EMPTY_RESULT_ARRAY, resultCache.addAndGet(ScanResultCache.EMPTY_RESULT_ARRAY, true)); int count = 10; Result[] results = new Result[count]; for (int i = 0; i < count; i++) { results[i] = Result.create(Arrays.asList(createCell(i, CQ1))); } assertSame(results, resultCache.addAndGet(results, false)); }
@Test public void testCombine1() throws IOException { Result previousResult = Result.create(Arrays.asList(createCell(0, CQ1)), null, false, true); Result result1 = Result.create(Arrays.asList(createCell(1, CQ1)), null, false, true); Result result2 = Result.create(Arrays.asList(createCell(1, CQ2)), null, false, true); Result result3 = Result.create(Arrays.asList(createCell(1, CQ3)), null, false, true); Result[] results = resultCache.addAndGet(new Result[] { previousResult, result1 }, false); assertEquals(1, results.length); assertSame(previousResult, results[0]); assertEquals(0, resultCache.addAndGet(new Result[] { result2 }, false).length); assertEquals(0, resultCache.addAndGet(new Result[] { result3 }, false).length); assertEquals(0, resultCache.addAndGet(new Result[0], true).length); results = resultCache.addAndGet(new Result[0], false); assertEquals(1, results.length); assertEquals(1, Bytes.toInt(results[0].getRow())); assertEquals(3, results[0].rawCells().length); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ1))); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ2))); assertEquals(1, Bytes.toInt(results[0].getValue(CF, CQ3))); }