hosts.add(splitHosts[rand.nextInt(splitHosts.length)]); splits.add(new LocatableInputSplit(i, hosts.toArray(stringArray))); hosts.clear();
splits.add(new LocatableInputSplit(splitCnt++, "host1")); splits.add(new LocatableInputSplit(splitCnt++, "host2")); splits.add(new LocatableInputSplit(splitCnt++, "remoteHost"));
splits.add(new LocatableInputSplit(i, hosts[i%hosts.length]));
splits.add(new LocatableInputSplit(splitCnt++, threeLocalHosts)); splits.add(new LocatableInputSplit(splitCnt++, twoLocalHosts)); splits.add(new LocatableInputSplit(splitCnt++, oneLocalHost)); splits.add(new LocatableInputSplit(splitCnt++, noLocalHost));
splits.add(new LocatableInputSplit(i, hosts[i%3]));
splits.add(new LocatableInputSplit(i, "testhost"));
splits.add(new LocatableInputSplit(i, hosts[i % hosts.length]));
splits.add(new LocatableInputSplit(i, "testhost"));
splits.add(new LocatableInputSplit(i, hosts[i%3]));
@Test public void testSerialSplitAssignmentMixedLocalHost() { try { final String[] hosts = { "host1", "host1", "host1", "host2", "host2", "host3" }; final int NUM_SPLITS = 10 * hosts.length; // load some splits Set<LocatableInputSplit> splits = new HashSet<LocatableInputSplit>(); for (int i = 0; i < NUM_SPLITS; i++) { splits.add(new LocatableInputSplit(i, hosts[i % hosts.length])); } // get all available splits LocatableInputSplitAssigner ia = new LocatableInputSplitAssigner(splits); InputSplit is = null; int i = 0; while ((is = ia.getNextInputSplit(hosts[i++ % hosts.length], 0)) != null) { assertTrue(splits.remove(is)); } // check we had all assertTrue(splits.isEmpty()); assertNull(ia.getNextInputSplit("anotherHost", 0)); assertEquals(0, ia.getNumberOfRemoteAssignments()); assertEquals(NUM_SPLITS, ia.getNumberOfLocalAssignments()); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }