Search in sources :

Example 1 with UniformSplit

use of org.apache.hadoop.hbase.util.RegionSplitter.UniformSplit 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 UniformSplit

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

the class TestRegionSplitter method unitTestUniformSplit.

/**
     * Unit tests for the UniformSplit algorithm. Makes sure it divides up the space of
     * keys in the way that we expect.
     */
@Test
public void unitTestUniformSplit() {
    UniformSplit splitter = new UniformSplit();
    // Check splitting while starting from scratch
    try {
        splitter.split(1);
        throw new AssertionError("Splitting into <2 regions should have thrown exception");
    } catch (IllegalArgumentException e) {
    }
    byte[][] twoRegionsSplits = splitter.split(2);
    assertEquals(1, twoRegionsSplits.length);
    assertArrayEquals(twoRegionsSplits[0], new byte[] { (byte) 0x80, 0, 0, 0, 0, 0, 0, 0 });
    byte[][] threeRegionsSplits = splitter.split(3);
    assertEquals(2, threeRegionsSplits.length);
    byte[] expectedSplit0 = new byte[] { 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55 };
    assertArrayEquals(expectedSplit0, threeRegionsSplits[0]);
    byte[] expectedSplit1 = new byte[] { (byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte) 0xAA };
    assertArrayEquals(expectedSplit1, threeRegionsSplits[1]);
    // Check splitting existing regions that have start and end points
    byte[] splitPoint = splitter.split(new byte[] { 0x10 }, new byte[] { 0x30 });
    assertArrayEquals(new byte[] { 0x20 }, splitPoint);
    byte[] lastRow = new byte[] { xFF, xFF, xFF, xFF, xFF, xFF, xFF, xFF };
    assertArrayEquals(lastRow, splitter.lastRow());
    byte[] firstRow = ArrayUtils.EMPTY_BYTE_ARRAY;
    assertArrayEquals(firstRow, splitter.firstRow());
    splitPoint = splitter.split(firstRow, new byte[] { 0x20 });
    assertArrayEquals(splitPoint, new byte[] { 0x10 });
    splitPoint = splitter.split(new byte[] { (byte) 0xdf, xFF, xFF, xFF, xFF, xFF, xFF, xFF }, lastRow);
    assertArrayEquals(splitPoint, new byte[] { (byte) 0xef, xFF, xFF, xFF, xFF, xFF, xFF, xFF });
    splitPoint = splitter.split(new byte[] { 'a', 'a', 'a' }, new byte[] { 'a', 'a', 'b' });
    assertArrayEquals(splitPoint, new byte[] { 'a', 'a', 'a', (byte) 0x80 });
}
Also used : UniformSplit(org.apache.hadoop.hbase.util.RegionSplitter.UniformSplit) Test(org.junit.Test)

Aggregations

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