You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by to...@apache.org on 2010/06/02 02:40:49 UTC

svn commit: r950321 [3/3] - in /hbase/trunk: ./ src/docs/src/documentation/content/xdocs/ src/main/java/org/apache/hadoop/hbase/ src/main/java/org/apache/hadoop/hbase/io/ src/main/java/org/apache/hadoop/hbase/io/hfile/ src/main/java/org/apache/hadoop/h...

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java?rev=950321&r1=950320&r2=950321&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStore.java Wed Jun  2 00:40:48 2010
@@ -130,7 +130,7 @@ public class TestStore extends TestCase 
     flush(1);
     // Now put in place an empty store file.  Its a little tricky.  Have to
     // do manually with hacked in sequence id.
-    StoreFile f = this.store.getStorefiles().firstEntry().getValue();
+    StoreFile f = this.store.getStorefiles().get(0);
     Path storedir = f.getPath().getParent();
     long seqid = f.getMaxSequenceId();
     HBaseConfiguration c = new HBaseConfiguration();

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreFile.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreFile.java?rev=950321&r1=950320&r2=950321&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreFile.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreFile.java Wed Jun  2 00:40:48 2010
@@ -21,6 +21,10 @@ package org.apache.hadoop.hbase.regionse
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.TreeSet;
 
 import org.apache.commons.logging.Log;
@@ -36,6 +40,12 @@ import org.apache.hadoop.hbase.io.hfile.
 import org.apache.hadoop.hbase.io.hfile.HFileScanner;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
+import org.mockito.Mockito;
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
 
 /**
  * Test HStoreFile
@@ -441,4 +451,52 @@ public class TestStoreFile extends HBase
     
   }
   
+  public void testFlushTimeComparator() {
+    assertOrdering(StoreFile.Comparators.FLUSH_TIME,
+        mockStoreFile(true, 1000, -1, "/foo/123"),
+        mockStoreFile(true, 1000, -1, "/foo/126"),
+        mockStoreFile(true, 2000, -1, "/foo/126"),
+        mockStoreFile(false, -1, 1, "/foo/1"),
+        mockStoreFile(false, -1, 3, "/foo/2"),
+        mockStoreFile(false, -1, 5, "/foo/2"),
+        mockStoreFile(false, -1, 5, "/foo/3"));
+  }
+  
+  /**
+   * Assert that the given comparator orders the given storefiles in the
+   * same way that they're passed.
+   */
+  private void assertOrdering(Comparator<StoreFile> comparator, StoreFile ... sfs) {
+    ArrayList<StoreFile> sorted = Lists.newArrayList(sfs);
+    Collections.shuffle(sorted);
+    Collections.sort(sorted, comparator);
+    LOG.debug("sfs: " + Joiner.on(",").join(sfs));
+    LOG.debug("sorted: " + Joiner.on(",").join(sorted));
+    assertTrue(Iterables.elementsEqual(Arrays.asList(sfs), sorted));
+  }
+
+  /**
+   * Create a mock StoreFile with the given attributes.
+   */
+  private StoreFile mockStoreFile(boolean bulkLoad, long bulkTimestamp,
+      long seqId, String path) {
+    StoreFile mock = Mockito.mock(StoreFile.class);
+    Mockito.doReturn(bulkLoad).when(mock).isBulkLoadResult();
+    Mockito.doReturn(bulkTimestamp).when(mock).getBulkLoadTimestamp();
+    if (bulkLoad) {
+      // Bulk load files will throw if you ask for their sequence ID
+      Mockito.doThrow(new IllegalAccessError("bulk load"))
+        .when(mock).getMaxSequenceId();
+    } else {
+      Mockito.doReturn(seqId).when(mock).getMaxSequenceId();
+    }
+    Mockito.doReturn(new Path(path)).when(mock).getPath();
+    String name = "mock storefile, bulkLoad=" + bulkLoad +
+      " bulkTimestamp=" + bulkTimestamp +
+      " seqId=" + seqId +
+      " path=" + path;
+    Mockito.doReturn(name).when(mock).toString();
+    return mock;
+  }
+  
 }

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java?rev=950321&r1=950320&r2=950321&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestBytes.java Wed Jun  2 00:40:48 2010
@@ -150,6 +150,14 @@ public class TestBytes extends TestCase 
     assertEquals(5, Bytes.binarySearch(arr, key3, 1, 1,
       Bytes.BYTES_RAWCOMPARATOR));
   }
+  
+  public void testStartsWith() {
+    assertTrue(Bytes.startsWith(Bytes.toBytes("hello"), Bytes.toBytes("h")));
+    assertTrue(Bytes.startsWith(Bytes.toBytes("hello"), Bytes.toBytes("")));
+    assertTrue(Bytes.startsWith(Bytes.toBytes("hello"), Bytes.toBytes("hello")));
+    assertFalse(Bytes.startsWith(Bytes.toBytes("hello"), Bytes.toBytes("helloworld")));
+    assertFalse(Bytes.startsWith(Bytes.toBytes(""), Bytes.toBytes("hello")));
+  }
 
   public void testIncrementBytes() throws IOException {