Put/Delete values cannot be tested with MRUnit
----------------------------------------------

                 Key: HBASE-4966
                 URL: https://issues.apache.org/jira/browse/HBASE-4966
             Project: HBase
          Issue Type: Bug
          Components: client, mapreduce
    Affects Versions: 0.90.4
            Reporter: Nicholas Telford
            Priority: Minor


When using the IdentityTableReducer, which expects input values of either a Put 
or Delete object, testing with MRUnit the Mapper with MRUnit is not possible 
because neither Put nor Delete implement equals().

We should implement equals() on both such that equality means:
* Both objects are of the same class (in this case, Put or Delete)
* Both objects are for the same key.
* Both objects contain an equal set of KeyValues (applicable only to Put)

KeyValue.equals() appears to already be implemented, but only checks for 
equality of row key, column family and column qualifier - two KeyValues can be 
considered "equal" if they contain different values. This won't work for 
testing.

Instead, the Put.equals() and Delete.equals() implementations should do a 
"deep" equality check on their KeyValues, like this:

    myKv.equals(theirKv) && Bytes.equals(myKv.getValue(), theirKv.getValue());

NOTE: This would impact any code that relies on the existing "identity" 
implementation of Put.equals() and Delete.equals(), therefore cannot be 
guaranteed to be backwards-compatible.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to