/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.hbase.mapreduce;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.experimental.categories.Category;
/**
* Test of simple partitioner.
*/
@Category(SmallTests.class)
public class TestSimpleTotalOrderPartitioner extends HBaseTestCase {
public void testSplit() throws Exception {
String start = "a";
String end = "{";
SimpleTotalOrderPartitioner<byte []> p =
new SimpleTotalOrderPartitioner<byte []>();
this.conf.set(SimpleTotalOrderPartitioner.START, start);
this.conf.set(SimpleTotalOrderPartitioner.END, end);
p.setConf(this.conf);
ImmutableBytesWritable c = new ImmutableBytesWritable(Bytes.toBytes("c"));
// If one reduce, partition should be 0.
int partition = p.getPartition(c, HConstants.EMPTY_BYTE_ARRAY, 1);
assertEquals(0, partition);
// If two reduces, partition should be 0.
partition = p.getPartition(c, HConstants.EMPTY_BYTE_ARRAY, 2);
assertEquals(0, partition);
// Divide in 3.
partition = p.getPartition(c, HConstants.EMPTY_BYTE_ARRAY, 3);
assertEquals(0, partition);
ImmutableBytesWritable q = new ImmutableBytesWritable(Bytes.toBytes("q"));
partition = p.getPartition(q, HConstants.EMPTY_BYTE_ARRAY, 2);
assertEquals(1, partition);
partition = p.getPartition(q, HConstants.EMPTY_BYTE_ARRAY, 3);
assertEquals(2, partition);
// What about end and start keys.
ImmutableBytesWritable startBytes =
new ImmutableBytesWritable(Bytes.toBytes(start));
partition = p.getPartition(startBytes, HConstants.EMPTY_BYTE_ARRAY, 2);
assertEquals(0, partition);
partition = p.getPartition(startBytes, HConstants.EMPTY_BYTE_ARRAY, 3);
assertEquals(0, partition);
ImmutableBytesWritable endBytes =
new ImmutableBytesWritable(Bytes.toBytes("z"));
partition = p.getPartition(endBytes, HConstants.EMPTY_BYTE_ARRAY, 2);
assertEquals(1, partition);
partition = p.getPartition(endBytes, HConstants.EMPTY_BYTE_ARRAY, 3);
assertEquals(2, partition);
}
}