accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Fagan (JIRA)" <j...@apache.org>
Subject [jira] [Created] (ACCUMULO-2544) Incorrect boundry matching for MockTableOperations.deleteRows
Date Mon, 24 Mar 2014 23:00:55 GMT
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)

Mime
View raw message