Search in sources :

Example 1 with HexStringSplit

use of org.apache.hadoop.hbase.util.RegionSplitter.HexStringSplit in project hbase by apache.

the class TestRegionSplitter method testUserInput.

@Test
public void testUserInput() {
    SplitAlgorithm algo = new HexStringSplit();
    // default settings are fine
    assertFalse(splitFailsPrecondition(algo));
    // custom is fine
    assertFalse(splitFailsPrecondition(algo, "00", "AA"));
    // range error
    assertTrue(splitFailsPrecondition(algo, "AA", "00"));
    // range error
    assertTrue(splitFailsPrecondition(algo, "AA", "AA"));
    // should be fine
    assertFalse(splitFailsPrecondition(algo, "0", "2", 3));
    // should be fine
    assertFalse(splitFailsPrecondition(algo, "0", "A", 11));
    // too granular
    assertTrue(splitFailsPrecondition(algo, "0", "A", 12));
    algo = new UniformSplit();
    // default settings are fine
    assertFalse(splitFailsPrecondition(algo));
    // custom is fine
    assertFalse(splitFailsPrecondition(algo, "\\x00", "\\xAA"));
    // range error
    assertTrue(splitFailsPrecondition(algo, "\\xAA", "\\x00"));
    // range error
    assertTrue(splitFailsPrecondition(algo, "\\xAA", "\\xAA"));
    // should be fine
    assertFalse(splitFailsPrecondition(algo, "\\x00", "\\x02", 3));
    // should be fine
    assertFalse(splitFailsPrecondition(algo, "\\x00", "\\x0A", 11));
    // should be fine
    assertFalse(splitFailsPrecondition(algo, "\\x00", "\\x0A", 12));
}
Also used : SplitAlgorithm(org.apache.hadoop.hbase.util.RegionSplitter.SplitAlgorithm) UniformSplit(org.apache.hadoop.hbase.util.RegionSplitter.UniformSplit) HexStringSplit(org.apache.hadoop.hbase.util.RegionSplitter.HexStringSplit) Test(org.junit.Test)

Example 2 with HexStringSplit

use of org.apache.hadoop.hbase.util.RegionSplitter.HexStringSplit in project hbase by apache.

the class TestRegionSplitter method unitTestHexStringSplit.

/**
     * Unit tests for the HexStringSplit algorithm. Makes sure it divides up the
     * space of keys in the way that we expect.
     */
@Test
public void unitTestHexStringSplit() {
    HexStringSplit splitter = new HexStringSplit();
    // Check splitting while starting from scratch
    byte[][] twoRegionsSplits = splitter.split(2);
    assertEquals(1, twoRegionsSplits.length);
    assertArrayEquals(twoRegionsSplits[0], "80000000".getBytes());
    byte[][] threeRegionsSplits = splitter.split(3);
    assertEquals(2, threeRegionsSplits.length);
    byte[] expectedSplit0 = "55555555".getBytes();
    assertArrayEquals(expectedSplit0, threeRegionsSplits[0]);
    byte[] expectedSplit1 = "aaaaaaaa".getBytes();
    assertArrayEquals(expectedSplit1, threeRegionsSplits[1]);
    // Check splitting existing regions that have start and end points
    byte[] splitPoint = splitter.split("10000000".getBytes(), "30000000".getBytes());
    assertArrayEquals("20000000".getBytes(), splitPoint);
    byte[] lastRow = "ffffffff".getBytes();
    assertArrayEquals(lastRow, splitter.lastRow());
    byte[] firstRow = "00000000".getBytes();
    assertArrayEquals(firstRow, splitter.firstRow());
    // Halfway between 00... and 20... should be 10...
    splitPoint = splitter.split(firstRow, "20000000".getBytes());
    assertArrayEquals(splitPoint, "10000000".getBytes());
    // Halfway between df... and ff... should be ef....
    splitPoint = splitter.split("dfffffff".getBytes(), lastRow);
    assertArrayEquals(splitPoint, "efffffff".getBytes());
}
Also used : HexStringSplit(org.apache.hadoop.hbase.util.RegionSplitter.HexStringSplit) Test(org.junit.Test)

Aggregations

HexStringSplit (org.apache.hadoop.hbase.util.RegionSplitter.HexStringSplit)2 Test (org.junit.Test)2 SplitAlgorithm (org.apache.hadoop.hbase.util.RegionSplitter.SplitAlgorithm)1 UniformSplit (org.apache.hadoop.hbase.util.RegionSplitter.UniformSplit)1