private void testMaxCounters(final Counters counters) { LOG.info("counters max="+ Limits.getCountersMax()); for (int i = 0; i < Limits.getCountersMax(); ++i) { counters.findCounter("test", "test"+ i); } setExpected(counters); shouldThrow(LimitExceededException.class, new Runnable() { public void run() { counters.findCounter("test", "bad"); } }); checkExpected(counters); }
private void testMaxGroups(final Counters counters) { LOG.info("counter groups max="+ Limits.getGroupsMax()); for (int i = 0; i < Limits.getGroupsMax(); ++i) { // assuming COUNTERS_MAX > GROUPS_MAX counters.findCounter("test"+ i, "test"); } setExpected(counters); shouldThrow(LimitExceededException.class, new Runnable() { public void run() { counters.findCounter("bad", "test"); } }); checkExpected(counters); }
@Test public void testResetOnDeserialize() throws IOException { // Allow only one counterGroup Configuration conf = new Configuration(); conf.setInt(MRJobConfig.COUNTER_GROUPS_MAX_KEY, 1); Limits.init(conf); Counters countersWithOneGroup = new Counters(); countersWithOneGroup.findCounter("firstOf1Allowed", "First group"); boolean caughtExpectedException = false; try { countersWithOneGroup.findCounter("secondIsTooMany", "Second group"); } catch (LimitExceededException _) { caughtExpectedException = true; } assertTrue("Did not throw expected exception", caughtExpectedException); Counters countersWithZeroGroups = new Counters(); DataOutputBuffer out = new DataOutputBuffer(); countersWithZeroGroups.write(out); DataInputBuffer in = new DataInputBuffer(); in.reset(out.getData(), out.getLength()); countersWithOneGroup.readFields(in); // After reset one should be able to add a group countersWithOneGroup.findCounter("firstGroupAfterReset", "After reset " + "limit should be set back to zero"); }
/** * Increments the counters with the counters from each task. * @param counters the counters to increment * @param tips the tasks to add in to counters * @return counters the same object passed in as counters */ private Counters incrementTaskCounters(Counters counters, TaskInProgress[] tips) { try { for (TaskInProgress tip : tips) { counters.incrAllCounters(tip.getCounters()); } } catch (LimitExceededException e) { // too many user counters/groups, leaving existing counters intact. } return counters; }
private void testMaxCounters(final Counters counters) { LOG.info("counters max="+ Limits.COUNTERS_MAX); for (int i = 0; i < Limits.COUNTERS_MAX; ++i) { counters.findCounter("test", "test"+ i); } setExpected(counters); shouldThrow(LimitExceededException.class, new Runnable() { public void run() { counters.findCounter("test", "bad"); } }); checkExpected(counters); }
private void testMaxGroups(final Counters counters) { LOG.info("counter groups max="+ Limits.GROUPS_MAX); for (int i = 0; i < Limits.GROUPS_MAX; ++i) { // assuming COUNTERS_MAX > GROUPS_MAX counters.findCounter("test"+ i, "test"); } setExpected(counters); shouldThrow(LimitExceededException.class, new Runnable() { public void run() { counters.findCounter("bad", "test"); } }); checkExpected(counters); }