Author: vines
Date: Wed Jan  2 16:43:23 2013
New Revision: 1427856

URL: http://svn.apache.org/viewvc?rev=1427856&view=rev
Log:
ACCUMULO-609 - tested and applying patch by Chris McCubbin


Modified:
    accumulo/trunk/test/system/auto/simple/dynamic.py

Modified: accumulo/trunk/test/system/auto/simple/dynamic.py
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/test/system/auto/simple/dynamic.py?rev=1427856&r1=1427855&r2=1427856&view=diff
==============================================================================
--- accumulo/trunk/test/system/auto/simple/dynamic.py (original)
+++ accumulo/trunk/test/system/auto/simple/dynamic.py Wed Jan  2 16:43:23 2013
@@ -41,28 +41,31 @@ class DynamicClassloader(AggregationTest
         #Make sure paths exists for test
         if not os.path.exists(os.path.join(ACCUMULO_HOME, 
'target','dynamictest%s' % rand, 'accumulo','test')):
           os.makedirs(os.path.join(ACCUMULO_HOME, 'target', 'dynamictest%s' % 
rand, 'accumulo', 'test'))
-        fp = open(os.path.join(ACCUMULO_HOME, 'target', 'dynamictest%s' % 
rand, 'accumulo', 'test', 'StringSummation%s.java' % rand), 'wb')
+        fp = open(os.path.join(ACCUMULO_HOME, 'target', 'dynamictest%s' % 
rand, 'accumulo', 'test', 'SummingCombiner%s.java' % rand), 'wb')
         fp.write('''
 package accumulo.test;
 
-import org.apache.accumulo.core.data.Value;
-
-public class StringSummation%s implements 
org.apache.accumulo.core.iterators.aggregation.Aggregator {
-
-       long sum = 0;
-       
-       public Value aggregate() {
-               return new Value(Long.toString(sum).getBytes());
-       }
-
-       public void collect(Value value) {
-               sum += Long.parseLong(new String(value.get()));
-       }
-
-       public void reset() {
-               sum = 0;
-               
-       }
+import java.util.Iterator;
+import org.apache.accumulo.core.data.Key;
+import org.apache.accumulo.core.iterators.LongCombiner;
+
+public class SummingCombiner%s extends LongCombiner {
+  @Override
+  public Long typedReduce(Key key, Iterator<Long> iter) {
+    long sum = 0;
+    while (iter.hasNext()) {
+      sum = safeAdd(sum, iter.next());
+    }
+    return sum;
+  }
+  
+  @Override
+  public IteratorOptions describeOptions() {
+    IteratorOptions io = super.describeOptions();
+    io.setName("sum");
+    io.setDescription("SummingCombiner interprets Values as Longs and adds 
them together.  A variety of encodings (variable length, fixed length, or 
string) are available");
+    return io;
+  }
 }
 ''' % rand)
         fp.close()
@@ -74,7 +77,7 @@ public class StringSummation%s implement
         self.runWait("javac -cp %s:%s %s" % (
             path,
             os.path.join(ACCUMULO_HOME,'src','core','target','classes'),
-            os.path.join(ACCUMULO_HOME,'target','dynamictest%s' % 
rand,'accumulo','test','StringSummation%s.java' % rand)
+            os.path.join(ACCUMULO_HOME,'target','dynamictest%s' % 
rand,'accumulo','test','SummingCombiner%s.java' % rand)
             ))
         self.runWait("jar -cf %s -C %s accumulo/" % (
             os.path.join(ACCUMULO_HOME,'lib','ext','Aggregator%s.jar' % rand),
@@ -84,8 +87,8 @@ public class StringSummation%s implement
         self.sleep(1)
 
         # initialize the database
-        aggregator = 'accumulo.test.StringSummation%s' % rand
-        cmd = 'createtable test\nsetiter -agg -minc -majc -scan -p 10 -t 
test\ncf ' + aggregator + '\n\n'
+        combiner = 'accumulo.test.SummingCombiner%s' % rand
+        cmd = 'createtable --no-default-iterators test\nsetiter -t test -p 10 
-scan -minc -majc -n testcombineriter -class '+ combiner+'\n\ncf\n\nSTRING'
         out, err, code = self.rootShell(self.masterHost(),"%s\n" % cmd)
         self.assert_(code == 0)
 


Reply via email to