| /* |
| * 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.accumulo.core.client.mapreduce.impl; |
| |
| import java.io.ByteArrayInputStream; |
| import java.io.ByteArrayOutputStream; |
| import java.io.DataInputStream; |
| import java.io.DataOutputStream; |
| import java.io.IOException; |
| import java.util.ArrayList; |
| import java.util.Arrays; |
| import java.util.HashSet; |
| import java.util.Set; |
| |
| import org.apache.accumulo.core.client.IteratorSetting; |
| import org.apache.accumulo.core.client.security.tokens.PasswordToken; |
| import org.apache.accumulo.core.data.Key; |
| import org.apache.accumulo.core.data.Range; |
| import org.apache.accumulo.core.iterators.user.SummingCombiner; |
| import org.apache.accumulo.core.iterators.user.WholeRowIterator; |
| import org.apache.accumulo.core.security.Authorizations; |
| import org.apache.accumulo.core.util.DeprecationUtil; |
| import org.apache.accumulo.core.util.Pair; |
| import org.apache.hadoop.io.Text; |
| import org.apache.log4j.Level; |
| import org.junit.Assert; |
| import org.junit.Test; |
| |
| public class BatchInputSplitTest { |
| |
| @Test |
| public void testSimpleWritable() throws IOException { |
| Range[] ranges = new Range[] {new Range(new Key("a"), new Key("b"))}; |
| BatchInputSplit split = new BatchInputSplit("table", "1", Arrays.asList(ranges), new String[] {"localhost"}); |
| |
| ByteArrayOutputStream baos = new ByteArrayOutputStream(); |
| DataOutputStream dos = new DataOutputStream(baos); |
| split.write(dos); |
| |
| BatchInputSplit newSplit = new BatchInputSplit(); |
| |
| ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); |
| DataInputStream dis = new DataInputStream(bais); |
| newSplit.readFields(dis); |
| |
| Assert.assertEquals(split.getTableName(), newSplit.getTableName()); |
| Assert.assertEquals(split.getTableId(), newSplit.getTableId()); |
| Assert.assertEquals(split.getRanges(), newSplit.getRanges()); |
| Assert.assertTrue(Arrays.equals(split.getLocations(), newSplit.getLocations())); |
| } |
| |
| @Test |
| public void testAllFieldsWritable() throws IOException { |
| Range[] ranges = new Range[] {new Range(new Key("a"), new Key("b"))}; |
| BatchInputSplit split = new BatchInputSplit("table", "1", Arrays.asList(ranges), new String[] {"localhost"}); |
| |
| Set<Pair<Text,Text>> fetchedColumns = new HashSet<>(); |
| |
| fetchedColumns.add(new Pair<>(new Text("colf1"), new Text("colq1"))); |
| fetchedColumns.add(new Pair<>(new Text("colf2"), new Text("colq2"))); |
| |
| // Fake some iterators |
| ArrayList<IteratorSetting> iterators = new ArrayList<>(); |
| IteratorSetting setting = new IteratorSetting(50, SummingCombiner.class); |
| setting.addOption("foo", "bar"); |
| iterators.add(setting); |
| |
| setting = new IteratorSetting(100, WholeRowIterator.class); |
| setting.addOption("bar", "foo"); |
| iterators.add(setting); |
| |
| split.setTableName("table"); |
| split.setAuths(new Authorizations("foo")); |
| split.setFetchedColumns(fetchedColumns); |
| split.setToken(new PasswordToken("password")); |
| split.setPrincipal("root"); |
| DeprecationUtil.setMockInstance(split, true); |
| split.setInstanceName("instance"); |
| split.setZooKeepers("localhost"); |
| split.setIterators(iterators); |
| split.setLogLevel(Level.WARN); |
| |
| ByteArrayOutputStream baos = new ByteArrayOutputStream(); |
| DataOutputStream dos = new DataOutputStream(baos); |
| split.write(dos); |
| |
| BatchInputSplit newSplit = new BatchInputSplit(); |
| |
| ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); |
| DataInputStream dis = new DataInputStream(bais); |
| newSplit.readFields(dis); |
| |
| Assert.assertEquals(split.getRanges(), newSplit.getRanges()); |
| Assert.assertArrayEquals(split.getLocations(), newSplit.getLocations()); |
| |
| Assert.assertEquals(split.getTableName(), newSplit.getTableName()); |
| Assert.assertEquals(split.getAuths(), newSplit.getAuths()); |
| Assert.assertEquals(split.getFetchedColumns(), newSplit.getFetchedColumns()); |
| Assert.assertEquals(split.getToken(), newSplit.getToken()); |
| Assert.assertEquals(split.getPrincipal(), newSplit.getPrincipal()); |
| Assert.assertEquals(split.getInstanceName(), newSplit.getInstanceName()); |
| Assert.assertEquals(DeprecationUtil.isMockInstanceSet(split), DeprecationUtil.isMockInstanceSet(newSplit)); |
| Assert.assertEquals(split.getZooKeepers(), newSplit.getZooKeepers()); |
| Assert.assertEquals(split.getIterators(), newSplit.getIterators()); |
| Assert.assertEquals(split.getLogLevel(), newSplit.getLogLevel()); |
| } |
| |
| } |