You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by cd...@apache.org on 2010/06/06 07:41:16 UTC
svn commit: r951825 - in /hadoop/mapreduce/trunk: CHANGES.txt
src/java/org/apache/hadoop/mapreduce/Counter.java
src/test/mapred/org/apache/hadoop/mapreduce/TestCounters.java
Author: cdouglas
Date: Sun Jun 6 05:41:15 2010
New Revision: 951825
URL: http://svn.apache.org/viewvc?rev=951825&view=rev
Log:
MAPREDUCE-1762. Add ability to set values of task counters. Contributed by Scott Chen
Added:
hadoop/mapreduce/trunk/src/test/mapred/org/apache/hadoop/mapreduce/TestCounters.java
Modified:
hadoop/mapreduce/trunk/CHANGES.txt
hadoop/mapreduce/trunk/src/java/org/apache/hadoop/mapreduce/Counter.java
Modified: hadoop/mapreduce/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/CHANGES.txt?rev=951825&r1=951824&r2=951825&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/CHANGES.txt (original)
+++ hadoop/mapreduce/trunk/CHANGES.txt Sun Jun 6 05:41:15 2010
@@ -45,6 +45,9 @@ Trunk (unreleased changes)
MAPREDUCE-1543. Add an audit log for authentication events. (Amar Kamat and
Luke Lu via cdouglas)
+ MAPREDUCE-1762. Add ability to set values of task counters. (Scott Chen via
+ cdouglas)
+
OPTIMIZATIONS
MAPREDUCE-1354. Enhancements to JobTracker for better performance and
Modified: hadoop/mapreduce/trunk/src/java/org/apache/hadoop/mapreduce/Counter.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/src/java/org/apache/hadoop/mapreduce/Counter.java?rev=951825&r1=951824&r2=951825&view=diff
==============================================================================
--- hadoop/mapreduce/trunk/src/java/org/apache/hadoop/mapreduce/Counter.java (original)
+++ hadoop/mapreduce/trunk/src/java/org/apache/hadoop/mapreduce/Counter.java Sun Jun 6 05:41:15 2010
@@ -117,7 +117,15 @@ public class Counter implements Writable
public synchronized long getValue() {
return value;
}
-
+
+ /**
+ * Set this counter by the given value
+ * @param the value to set
+ */
+ public synchronized void setValue(long value) {
+ this.value = value;
+ }
+
/**
* Increment this counter by the given value
* @param incr the value to increase this counter by
Added: hadoop/mapreduce/trunk/src/test/mapred/org/apache/hadoop/mapreduce/TestCounters.java
URL: http://svn.apache.org/viewvc/hadoop/mapreduce/trunk/src/test/mapred/org/apache/hadoop/mapreduce/TestCounters.java?rev=951825&view=auto
==============================================================================
--- hadoop/mapreduce/trunk/src/test/mapred/org/apache/hadoop/mapreduce/TestCounters.java (added)
+++ hadoop/mapreduce/trunk/src/test/mapred/org/apache/hadoop/mapreduce/TestCounters.java Sun Jun 6 05:41:15 2010
@@ -0,0 +1,59 @@
+/**
+ * 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.mapreduce;
+
+import java.io.IOException;
+import java.util.Random;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ * TestCounters checks the sanity and recoverability of {@code Counters}
+ */
+public class TestCounters {
+
+ /**
+ * Verify counter value works
+ */
+ @Test
+ public void testCounterValue() {
+ final int NUMBER_TESTS = 100;
+ final int NUMBER_INC = 10;
+ final Random rand = new Random();
+ for (int i = 0; i < NUMBER_TESTS; i++) {
+ long initValue = rand.nextInt();
+ long expectedValue = initValue;
+ Counter counter = new Counter("foo", "bar", expectedValue);
+ assertEquals("Counter value is not initialized correctly",
+ expectedValue, counter.getValue());
+ for (int j = 0; j < NUMBER_INC; j++) {
+ int incValue = rand.nextInt();
+ counter.increment(incValue);
+ expectedValue += incValue;
+ assertEquals("Counter value is not incremented correctly",
+ expectedValue, counter.getValue());
+ }
+ expectedValue = rand.nextInt();
+ counter.setValue(expectedValue);
+ assertEquals("Counter value is not set correctly",
+ expectedValue, counter.getValue());
+ }
+ }
+
+}