Mike Fagan created ACCUMULO-2544:
------------------------------------
Summary: Incorrect boundry matching for
MockTableOperations.deleteRows
Key: ACCUMULO-2544
URL: https://issues.apache.org/jira/browse/ACCUMULO-2544
Project: Accumulo
Issue Type: Bug
Components: test
Affects Versions: 1.6.1
Environment: Mac OS Mavericks; java 7
Reporter: Mike Fagan
The api for deleteRows specifies: Delete rows between (start, end] but the
current implementation for MockTableOperations.deleteRows is implemented as
(start, end)
Here is the failing test case
public class TestDelete {
private static final String INSTANCE = "mock";
private static final String TABLE = "foo";
private static final String USER = "user";
private static final String PASS = "password";
private static final Authorizations AUTHS = new Authorizations();
@Test
public void testDelete() throws TableNotFoundException, AccumuloException,
AccumuloSecurityException, TableExistsException {
MockInstance mockAcc = new MockInstance(INSTANCE);
Connector conn = mockAcc.getConnector(USER, new PasswordToken(PASS));
conn.tableOperations().create(TABLE);
conn.securityOperations().grantTablePermission(USER, TABLE,
TablePermission.READ);
conn.securityOperations().grantTablePermission(USER, TABLE,
TablePermission.WRITE);
Mutation mut = new Mutation("2");
mut.put("colfam", "colqual", "value");
BatchWriter writer = conn.createBatchWriter(TABLE, new BatchWriterConfig());
writer.addMutation(mut);
Scanner scan = conn.createScanner(TABLE, AUTHS);
scan.setRange(new Range("2", "2"));
assertEquals(1, countRecords(scan));
// this should delete (1,2]
conn.tableOperations().deleteRows(TABLE, new Text("1"), new Text("2"));
scan = conn.createScanner(TABLE, AUTHS);
scan.setRange(new Range("2", "2"));
// this will fail if row 2 exists
assertEquals(0, countRecords(scan));
}
private int countRecords(Scanner scan) {
int cnt = 0;
for (Entry<Key, Value> entry : scan) {
cnt++;
}
scan.close();
return cnt;
}
}
--
This message was sent by Atlassian JIRA
(v6.2#6252)