Added a test for "cancel" in the search call test case.

git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_lsm_tree@2967 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/edu/uci/ics/hyracks/storage/am/lsm/btree/LSMBTreeSearchOperationCallbackTest.java b/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/edu/uci/ics/hyracks/storage/am/lsm/btree/LSMBTreeSearchOperationCallbackTest.java
index 6ce813c..389c87f 100644
--- a/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/edu/uci/ics/hyracks/storage/am/lsm/btree/LSMBTreeSearchOperationCallbackTest.java
+++ b/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/edu/uci/ics/hyracks/storage/am/lsm/btree/LSMBTreeSearchOperationCallbackTest.java
@@ -1,5 +1,6 @@
 package edu.uci.ics.hyracks.storage.am.lsm.btree;
 
+import java.util.HashSet;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
 
@@ -25,9 +26,11 @@
 
 public class LSMBTreeSearchOperationCallbackTest extends AbstractSearchOperationCallbackTest {
     private final LSMBTreeTestHarness harness;
+    private final HashSet<Integer> deleteSet;
 
     public LSMBTreeSearchOperationCallbackTest() {
         harness = new LSMBTreeTestHarness();
+        deleteSet = new HashSet<Integer>();
     }
 
     @Override
@@ -69,6 +72,8 @@
         private final ArrayTupleReference tuple;
         private final ArrayTupleBuilder expectedTupleToBeLockedBuilder;
         private final ArrayTupleReference expectedTupleToBeLocked;
+        private final ArrayTupleBuilder expectedTupleToBeCanceledBuilder;
+        private final ArrayTupleReference expectedTupleToBeCanceled;
 
         private boolean blockOnHigh;
         private int expectedAfterBlock;
@@ -83,6 +88,8 @@
             this.tuple = new ArrayTupleReference();
             this.expectedTupleToBeLockedBuilder = new ArrayTupleBuilder(NUM_KEY_FIELDS);
             this.expectedTupleToBeLocked = new ArrayTupleReference();
+            this.expectedTupleToBeCanceledBuilder = new ArrayTupleBuilder(NUM_KEY_FIELDS);
+            this.expectedTupleToBeCanceled = new ArrayTupleReference();
 
             this.blockOnHigh = false;
             this.expectedAfterBlock = -1;
@@ -149,31 +156,31 @@
             }
 
             @Override
-            public void reconcile(ITupleReference tuple) {
+            public void reconcile(ITupleReference tuple) throws HyracksDataException {
                 Assert.assertEquals(0, cmp.compare(SearchTask.this.expectedTupleToBeLocked, tuple));
                 if (blockOnHigh) {
-                    try {
-                        TupleUtils.createIntegerTuple(builder, SearchTask.this.tuple, expectedAfterBlock);
-                    } catch (HyracksDataException e) {
-                        e.printStackTrace();
-                    }
+                    TupleUtils.createIntegerTuple(builder, SearchTask.this.tuple, expectedAfterBlock);
                     condition.signal();
                     condition.awaitUninterruptibly();
                     blockOnHigh = false;
                 }
-                try {
-                    expectedTupleToBeLockedValue++;
-                    TupleUtils.createIntegerTuple(expectedTupleToBeLockedBuilder, expectedTupleToBeLocked,
-                            expectedTupleToBeLockedValue);
-                } catch (HyracksDataException e) {
-                    e.printStackTrace();
-                }
+                expectedTupleToBeLockedValue++;
+                TupleUtils.createIntegerTuple(expectedTupleToBeLockedBuilder, expectedTupleToBeLocked,
+                        expectedTupleToBeLockedValue);
 
             }
 
             @Override
-            public void cancel(ITupleReference tuple) {
-                // Do nothing.
+            public void cancel(ITupleReference tuple) throws HyracksDataException {
+                boolean found = false;
+                for (int i : deleteSet) {
+                    TupleUtils.createIntegerTuple(expectedTupleToBeCanceledBuilder, expectedTupleToBeCanceled, i);
+                    if (cmp.compare(SearchTask.this.expectedTupleToBeCanceled, tuple) == 0) {
+                        found = true;
+                        break;
+                    }
+                }
+                Assert.assertTrue(found);
             }
 
         }
@@ -203,13 +210,17 @@
                 bulkloadIntTupleRange(151, 200);
                 insertIntTupleRange(50, 100);
                 insertIntTupleRange(301, 350);
-                TupleUtils.createIntegerTuple(builder, tuple, 151);
+                int tupleTobeDeletedValue = 151;
+                deleteSet.add(tupleTobeDeletedValue);
+                TupleUtils.createIntegerTuple(builder, tuple, tupleTobeDeletedValue);
                 accessor.delete(tuple);
                 condition.signal();
                 condition.await();
 
                 // delete tuple 75
-                TupleUtils.createIntegerTuple(builder, tuple, 75);
+                tupleTobeDeletedValue = 75;
+                deleteSet.add(tupleTobeDeletedValue);
+                TupleUtils.createIntegerTuple(builder, tuple, tupleTobeDeletedValue);
                 accessor.delete(tuple);
                 condition.signal();
                 condition.await();