/** * Licensed to Ravel, Inc. under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. Ravel, Inc. 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.goldenorb.io; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.goldenorb.conf.OrbConfiguration; import org.goldenorb.io.InputSplitAllocator; import org.goldenorb.io.input.RawSplit; import org.goldenorb.jet.OrbPartitionMember; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestInputSplitAllocator { private Logger LOG; /** * */ @Test public void inputSplitAllocatorTest(){ LOG = LoggerFactory.getLogger(TestInputSplitAllocator.class); String[] rs1l = {"A", "B"}; RawSplitWithID rs1 = new RawSplitWithID("rs1", rs1l); String[] rs2l = {"B", "C"}; RawSplitWithID rs2 = new RawSplitWithID("rs2", rs2l); String[] rs3l = {"E", "F"}; RawSplitWithID rs3 = new RawSplitWithID("rs3", rs3l); String[] rs4l = {"C"}; RawSplitWithID rs4 = new RawSplitWithID("rs4", rs4l); List<RawSplit> rawSplits = new ArrayList<RawSplit>(); rawSplits.add(rs1); rawSplits.add(rs2); rawSplits.add(rs3); rawSplits.add(rs4); OrbPartitionMember opm1 = new OrbPartitionMember(); opm1.setHostname("A"); opm1.setPort(0); OrbPartitionMember opm2 = new OrbPartitionMember(); opm2.setHostname("A"); opm2.setPort(1); OrbPartitionMember opm3 = new OrbPartitionMember(); opm3.setHostname("B"); opm3.setPort(0); OrbPartitionMember opm4 = new OrbPartitionMember(); opm4.setHostname("B"); opm4.setPort(1); OrbPartitionMember opm5 = new OrbPartitionMember(); opm5.setHostname("C"); opm5.setPort(0); OrbPartitionMember opm6 = new OrbPartitionMember(); opm6.setHostname("C"); opm6.setPort(1); List<OrbPartitionMember> orbPartitionMembers = new ArrayList<OrbPartitionMember>(); orbPartitionMembers.add(opm1); orbPartitionMembers.add(opm2); orbPartitionMembers.add(opm3); orbPartitionMembers.add(opm4); orbPartitionMembers.add(opm5); orbPartitionMembers.add(opm6); OrbConfiguration orbConf = new OrbConfiguration(); InputSplitAllocator isa = new InputSplitAllocator(orbConf, orbPartitionMembers); Map<OrbPartitionMember, List<RawSplit>> assignedSplits = isa.assignInputSplits(rawSplits); for(OrbPartitionMember orbPartitionMember: assignedSplits.keySet()){ LOG.info(orbPartitionMember.getHostname() + ":" + orbPartitionMember.getPort() + " | " + assignedSplits.get(orbPartitionMember)); assertTrue(assignedSplits.get(orbPartitionMember).size() < 2); } } }