Added one more test for the RTree

git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_indexes@423 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/edu/uci/ics/hyracks/storage/am/rtree/RTreeTest.java b/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/edu/uci/ics/hyracks/storage/am/rtree/RTreeTest.java
index 461c82b..dd36fc4 100644
--- a/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/edu/uci/ics/hyracks/storage/am/rtree/RTreeTest.java
+++ b/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/edu/uci/ics/hyracks/storage/am/rtree/RTreeTest.java
@@ -48,12 +48,12 @@
 
 public class RTreeTest extends AbstractRTreeTest {
 
-    private static final int PAGE_SIZE = 256;
-    private static final int NUM_PAGES = 10;
+    private static final int PAGE_SIZE = 1024;
+    private static final int NUM_PAGES = 10000;
     private static final int HYRACKS_FRAME_SIZE = 128;
     private IHyracksStageletContext ctx = TestUtils.create(HYRACKS_FRAME_SIZE);
 
-    // @Test
+     @Test
     public void test01() throws Exception {
 
         TestStorageManagerComponentHolder.init(PAGE_SIZE, NUM_PAGES);
@@ -282,10 +282,19 @@
             String[] splittedLine1 = inputLine.split(",");
             String[] splittedLine2 = splittedLine1[0].split("\\s");
 
-            double p1x = Double.valueOf(splittedLine2[1].trim()).doubleValue();
-            double p1y = Double.valueOf(splittedLine2[2].trim()).doubleValue();
+            double p1x = 0;
+            double p1y = 0;
+            
+            try {
+                p1x = Double.valueOf(splittedLine2[1].trim()).doubleValue();
+                p1y = Double.valueOf(splittedLine2[2].trim()).doubleValue();
+            } catch (Exception e) {
+                inputLine = reader.readLine();
+                continue;
+            }
             double p2x = p1x;
             double p2y = p1y;
+            
 
             int pk = rnd.nextInt();
 
@@ -317,7 +326,7 @@
                 e.printStackTrace();
             }
             
-            if (index == 10000) {
+            if (index == 1000) {
                 break;
             }
             inputLine = reader.readLine();
@@ -327,8 +336,8 @@
 //            System.out.println();
         }
 
-        rtree.printTree(leafFrame, interiorFrame, recDescSers);
-        System.out.println();
+        //rtree.printTree(leafFrame, interiorFrame, recDescSers);
+        //System.out.println();
 
         RTreeOpContext searchOpCtx = rtree.createOpContext(TreeIndexOp.TI_SEARCH, interiorFrame, leafFrame, metaFrame);
 
@@ -344,11 +353,22 @@
             String[] splittedLine1 = inputLine.split(",");
             String[] splittedLine2 = splittedLine1[0].split("\\s");
 
-            double p1x = Double.valueOf(splittedLine2[1].trim()).doubleValue();
-            double p1y = Double.valueOf(splittedLine2[2].trim()).doubleValue();
-            double p2x = Double.valueOf(splittedLine2[3].trim()).doubleValue();
-            double p2y = Double.valueOf(splittedLine2[4].trim()).doubleValue();
+            
+            double p1x;
+            double p1y;
+            double p2x;
+            double p2y;
 
+            try {
+                p1x = Double.valueOf(splittedLine2[1].trim()).doubleValue();
+                p1y = Double.valueOf(splittedLine2[2].trim()).doubleValue();
+                p2x = Double.valueOf(splittedLine2[3].trim()).doubleValue();
+                p2y = Double.valueOf(splittedLine2[4].trim()).doubleValue();
+            } catch (Exception e) {
+                inputLine = reader2.readLine();
+                continue;
+            }
+            
             int pk = rnd.nextInt();
 
             tb.reset();
@@ -388,8 +408,148 @@
 
         System.out.println("Number of Results: " + totalResults);
 
-        String stats = rtree.printStats();
-        print(stats);
+//        String stats = rtree.printStats();
+//        print(stats);
+        
+        
+        
+        
+        
+        RTreeOpContext deleteOpCtx = rtree.createOpContext(TreeIndexOp.TI_DELETE, interiorFrame, leafFrame, metaFrame);
+
+        
+        BufferedReader reader3 = new BufferedReader(new FileReader(datasetFile));
+        inputLine = reader3.readLine();
+        index = 0;
+        rnd.setSeed(50);
+        while (inputLine != null) {
+
+            String[] splittedLine1 = inputLine.split(",");
+            String[] splittedLine2 = splittedLine1[0].split("\\s");
+
+            double p1x = 0;
+            double p1y = 0;
+            
+            try {
+                p1x = Double.valueOf(splittedLine2[1].trim()).doubleValue();
+                p1y = Double.valueOf(splittedLine2[2].trim()).doubleValue();
+            } catch (Exception e) {
+                inputLine = reader3.readLine();
+                continue;
+            }
+            double p2x = p1x;
+            double p2y = p1y;
+
+            int pk = rnd.nextInt();
+
+            tb.reset();
+            DoubleSerializerDeserializer.INSTANCE.serialize(p1x, dos);
+            tb.addFieldEndOffset();
+            DoubleSerializerDeserializer.INSTANCE.serialize(p1y, dos);
+            tb.addFieldEndOffset();
+            DoubleSerializerDeserializer.INSTANCE.serialize(p2x, dos);
+            tb.addFieldEndOffset();
+            DoubleSerializerDeserializer.INSTANCE.serialize(p2y, dos);
+            tb.addFieldEndOffset();
+            IntegerSerializerDeserializer.INSTANCE.serialize(pk, dos);
+            tb.addFieldEndOffset();
+
+            appender.reset(hyracksFrame, true);
+            appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
+
+            tuple.reset(accessor, 0);
+
+            print("Deleteing " + index + " " + Math.min(p1x, p2x) + " " + Math.min(p1y, p2y) + " " + Math.max(p1x, p2x)
+                    + " " + Math.max(p1y, p2y) + "\n");
+
+            try {
+                rtree.delete(tuple, deleteOpCtx);
+            } catch (TreeIndexException e) {
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            
+            if (index == 1000) {
+                break;
+            }
+            inputLine = reader3.readLine();
+            index++;
+
+//            rtree.printTree(leafFrame, interiorFrame, recDescSers);
+//            System.out.println();
+        }
+        
+        
+        
+        
+        
+        
+        BufferedReader reader4 = new BufferedReader(new FileReader(querysetFile));
+
+        inputLine = reader4.readLine();
+        totalResults = 0;
+        index = 0;
+        Stack<Integer> s2 = new Stack<Integer>();
+        while (inputLine != null) {
+
+            String[] splittedLine1 = inputLine.split(",");
+            String[] splittedLine2 = splittedLine1[0].split("\\s");
+
+            double p1x = Double.valueOf(splittedLine2[1].trim()).doubleValue();
+            double p1y = Double.valueOf(splittedLine2[2].trim()).doubleValue();
+            double p2x = Double.valueOf(splittedLine2[3].trim()).doubleValue();
+            double p2y = Double.valueOf(splittedLine2[4].trim()).doubleValue();
+
+            int pk = rnd.nextInt();
+
+            tb.reset();
+            DoubleSerializerDeserializer.INSTANCE.serialize(p1x, dos);
+            tb.addFieldEndOffset();
+            DoubleSerializerDeserializer.INSTANCE.serialize(p1y, dos);
+            tb.addFieldEndOffset();
+            DoubleSerializerDeserializer.INSTANCE.serialize(p2x, dos);
+            tb.addFieldEndOffset();
+            DoubleSerializerDeserializer.INSTANCE.serialize(p2y, dos);
+            tb.addFieldEndOffset();
+            IntegerSerializerDeserializer.INSTANCE.serialize(pk, dos);
+            tb.addFieldEndOffset();
+
+            appender.reset(hyracksFrame, true);
+            appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize());
+
+            tuple.reset(accessor, 0);
+
+            print("SEARCHING " + index + " " + Math.min(p1x, p2x) + " " + Math.min(p1y, p2y) + " " + Math.max(p1x, p2x)
+                    + " " + Math.max(p1y, p2y) + "\n");
+
+            try {
+                ArrayList<Rectangle> results = new ArrayList<Rectangle>();
+                rtree.search(s2, tuple, searchOpCtx, results);
+                totalResults += results.size();
+            } catch (TreeIndexException e) {
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+            inputLine = reader4.readLine();
+            index++;
+
+        }
+
+        System.out.println("Number of Results: " + totalResults);
+
+//        stats = rtree.printStats();
+//        print(stats);
+        
+        
+        
+        
+        
+        rtree.printTree(leafFrame, interiorFrame, recDescSers);
+        System.out.println();
+
+
+        
 
         rtree.close();
         bufferCache.closeFile(fileId);