Simple column pagination filter tests.
()
| 1040 | |
| 1041 | /** Simple column pagination filter tests. */ |
| 1042 | @Test |
| 1043 | public void columnPaginationFilter() throws Exception { |
| 1044 | client.setFlushInterval(FAST_FLUSH); |
| 1045 | // Keep only rows with a column qualifier that starts with "qa". |
| 1046 | final PutRequest put1 = new PutRequest(table, "row1", family, "q1", "v1"); |
| 1047 | final PutRequest put2 = new PutRequest(table, "row1", family, "q2", "v2"); |
| 1048 | final PutRequest put3 = new PutRequest(table, "row1", family, "q3", "v3"); |
| 1049 | final PutRequest put4 = new PutRequest(table, "row1", family, "q4", "v4"); |
| 1050 | |
| 1051 | final PutRequest put5 = new PutRequest(table, "row2", family, "q1", "v5"); |
| 1052 | final PutRequest put6 = new PutRequest(table, "row2", family, "q2", "v6"); |
| 1053 | final PutRequest put7 = new PutRequest(table, "row2", family, "q3", "v7"); |
| 1054 | |
| 1055 | Deferred.group(Deferred.group(client.put(put1), client.put(put2)), |
| 1056 | Deferred.group(client.put(put3), client.put(put4)), |
| 1057 | Deferred.group(client.put(put5), client.put(put6), client.put(put7))).join(); |
| 1058 | |
| 1059 | // Test ColumnPaginationFilter(int limit, int offset) |
| 1060 | Scanner scanner = client.newScanner(table); |
| 1061 | scanner.setFamily(family); |
| 1062 | scanner.setStartKey("row1"); |
| 1063 | scanner.setStopKey("row3"); |
| 1064 | scanner.setFilter(new ColumnPaginationFilter(3, 1)); |
| 1065 | ArrayList<ArrayList<KeyValue>> rows = scanner.nextRows().join(); |
| 1066 | assertNotNull(rows); |
| 1067 | assertSizeIs(2, rows); |
| 1068 | ArrayList<KeyValue> kvs = rows.get(0); |
| 1069 | assertSizeIs(3, kvs); |
| 1070 | assertEq("v2", kvs.get(0).value()); |
| 1071 | assertEq("v3", kvs.get(1).value()); |
| 1072 | assertEq("v4", kvs.get(2).value()); |
| 1073 | kvs = rows.get(1); |
| 1074 | assertSizeIs(2, kvs); |
| 1075 | assertEq("v6", kvs.get(0).value()); |
| 1076 | assertEq("v7", kvs.get(1).value()); |
| 1077 | |
| 1078 | // Test ColumnPaginationFilter(int limit, byte[] offset) - Only supported in HBase 0.96+ |
| 1079 | scanner = client.newScanner(table); |
| 1080 | scanner.setFamily(family); |
| 1081 | scanner.setStartKey("row1"); |
| 1082 | scanner.setStopKey("row3"); |
| 1083 | scanner.setFilter(new ColumnPaginationFilter(3, Bytes.UTF8("q2"))); |
| 1084 | |
| 1085 | try { |
| 1086 | rows = scanner.nextRows().join(); //Throws an UnsupportedOperationException if <= HBase 0.94 |
| 1087 | |
| 1088 | // Test for running against >= HBase 0.96 |
| 1089 | assertNotNull(rows); |
| 1090 | assertSizeIs(2, rows); |
| 1091 | kvs = rows.get(0); |
| 1092 | assertSizeIs(3, kvs); |
| 1093 | assertEq("v2", kvs.get(0).value()); |
| 1094 | assertEq("v3", kvs.get(1).value()); |
| 1095 | assertEq("v4", kvs.get(2).value()); |
| 1096 | kvs = rows.get(1); |
| 1097 | assertSizeIs(2, kvs); |
| 1098 | assertEq("v6", kvs.get(0).value()); |
| 1099 | assertEq("v7", kvs.get(1).value()); |
nothing calls this directly
no test coverage detected