You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by cu...@apache.org on 2010/01/15 00:32:25 UTC

svn commit: r899471 - in /hadoop/avro/trunk: ./ lang/c++/api/ lang/c++/impl/ lang/java/src/java/org/apache/avro/io/ lang/java/src/java/org/apache/avro/io/parsing/ lang/java/src/java/org/apache/avro/io/parsing/doc-files/ lang/java/src/test/java/org/apac...

Author: cutting
Date: Thu Jan 14 23:32:24 2010
New Revision: 899471

URL: http://svn.apache.org/viewvc?rev=899471&view=rev
Log:
Reverting AVRO-313 and AVRO-316, since they cause the test-java target to fail.

Modified:
    hadoop/avro/trunk/CHANGES.txt
    hadoop/avro/trunk/lang/c++/api/ValidatingReader.hh   (props changed)
    hadoop/avro/trunk/lang/c++/impl/ValidatingReader.cc   (props changed)
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/BinaryDecoder.java   (props changed)
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/BinaryEncoder.java   (props changed)
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/BlockingBinaryEncoder.java   (props changed)
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/JsonDecoder.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/JsonEncoder.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ValidatingDecoder.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ValidatingEncoder.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/JsonGrammarGenerator.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/Parser.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/SkipParser.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/Symbol.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ValidatingGrammarGenerator.java
    hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/doc-files/   (props changed)
    hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/Perf.java
    hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestBinaryDecoder.java   (props changed)
    hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java   (contents, props changed)
    hadoop/avro/trunk/share/test/schemas/interop.avsc   (props changed)
    hadoop/avro/trunk/share/test/schemas/simple.avpr   (props changed)

Modified: hadoop/avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/CHANGES.txt?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/CHANGES.txt (original)
+++ hadoop/avro/trunk/CHANGES.txt Thu Jan 14 23:32:24 2010
@@ -224,8 +224,6 @@
 
     AVRO-315. Performance improvements to BinaryDecoder (thiru)
 
-    AVRO-316. Optiminzing inner loop functions of Avro io (thiru)
-
   BUG FIXES
  
     AVRO-176. Safeguard against bad istreams before reading. (sbanacho)

Propchange: hadoop/avro/trunk/lang/c++/api/ValidatingReader.hh
            ('svn:mergeinfo' removed)

Propchange: hadoop/avro/trunk/lang/c++/impl/ValidatingReader.cc
            ('svn:mergeinfo' removed)

Propchange: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/BinaryDecoder.java
            ('svn:mergeinfo' removed)

Propchange: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/BinaryEncoder.java
            ('svn:mergeinfo' removed)

Propchange: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/BlockingBinaryEncoder.java
            ('svn:mergeinfo' removed)

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/JsonDecoder.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/JsonDecoder.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/JsonDecoder.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/JsonDecoder.java Thu Jan 14 23:32:24 2010
@@ -389,7 +389,7 @@
         String fn = in.getCurrentName();
         if (fa.fname.equals(fn)) {
           in.nextToken();
-          return null;
+          return Symbol.CONTINUE;
         } else {
           throw new AvroTypeException("Expected field name " + fa.fname +
               " got " + in.getCurrentName());
@@ -410,7 +410,7 @@
     } else {
       throw new AvroTypeException("Unknown action symbol " + top);
     }
-    return null;
+    return Symbol.CONTINUE;
   }
 
   private AvroTypeException error(String type) {

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/JsonEncoder.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/JsonEncoder.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/JsonEncoder.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/JsonEncoder.java Thu Jan 14 23:32:24 2010
@@ -53,7 +53,7 @@
 
   @Override
   public void flush() throws IOException {
-    parser.processTrailingImplicitActions();
+    parser.processImplicitActions();
     out.flush();
   }
 
@@ -233,7 +233,7 @@
     } else {
       throw new AvroTypeException("Unknown action symbol " + top);
     }
-    return null;
+    return Symbol.CONTINUE;
   }
 }
 

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ResolvingDecoder.java Thu Jan 14 23:32:24 2010
@@ -157,7 +157,7 @@
   @Override
   public Symbol doAction(Symbol input, Symbol top) throws IOException {
     if (top instanceof Symbol.FieldAdjustAction) {
-      return input == Symbol.FIELD_ACTION ? top : null;
+      return input == Symbol.FIELD_ACTION ? top : Symbol.CONTINUE;
     } if (top instanceof Symbol.ResolvingAction) {
       Symbol.ResolvingAction t = (Symbol.ResolvingAction) top;
       if (t.reader != input) {
@@ -183,7 +183,7 @@
     } else {
       throw new AvroTypeException("Unknown action: " + top);
     }
-    return null;
+    return Symbol.CONTINUE;
   }
 
   @Override
@@ -198,12 +198,6 @@
       parser.pushSymbol(branches.getSymbol(in.readIndex()));
     } else if (top instanceof Symbol.ErrorAction) {
       throw new AvroTypeException(((Symbol.ErrorAction) top).msg);
-    } else if (top instanceof Symbol.DefaultStartAction) {
-      Symbol.DefaultStartAction dsa = (Symbol.DefaultStartAction) top;
-      backup = in;
-      in = (new JsonDecoder(dsa.root, new ByteArrayInputStream(dsa.contents)));
-    } else if (top == Symbol.DEFAULT_END_ACTION) {
-      in = backup;
     }
   }
 }

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ValidatingDecoder.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ValidatingDecoder.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ValidatingDecoder.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ValidatingDecoder.java Thu Jan 14 23:32:24 2010
@@ -164,7 +164,6 @@
 
   @Override
   public long arrayNext() throws IOException {
-    parser.processTrailingImplicitActions();
     long result = in.arrayNext();
     if (result == 0) {
       parser.advance(Symbol.ARRAY_END);
@@ -196,7 +195,6 @@
 
   @Override
   public long mapNext() throws IOException {
-    parser.processTrailingImplicitActions();
     long result = in.mapNext();
     if (result == 0) {
       parser.advance(Symbol.MAP_END);
@@ -226,7 +224,7 @@
   }
   
   public Symbol doAction(Symbol input, Symbol top) throws IOException {
-    return null;
+    return Symbol.CONTINUE;
   }
 }
 

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ValidatingEncoder.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ValidatingEncoder.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ValidatingEncoder.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/ValidatingEncoder.java Thu Jan 14 23:32:24 2010
@@ -192,7 +192,7 @@
 
   @Override
   public Symbol doAction(Symbol input, Symbol top) throws IOException {
-    return null;
+    return Symbol.CONTINUE;
   }
 
   /** Have we written at least one item into the current collection? */

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/JsonGrammarGenerator.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/JsonGrammarGenerator.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/JsonGrammarGenerator.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/JsonGrammarGenerator.java Thu Jan 14 23:32:24 2010
@@ -64,11 +64,13 @@
       return Symbol.seq(new Symbol.EnumLabelsAction(sc.getEnumSymbols()),
           Symbol.ENUM);
     case ARRAY:
-      return Symbol.seq(Symbol.repeat(Symbol.ARRAY_END,
+      return Symbol.seq(Symbol.ARRAY_END,
+          Symbol.repeat(Symbol.ARRAY_END,
               Symbol.ITEM_END, generate(sc.getElementType(), seen)),
           Symbol.ARRAY_START);
     case MAP:
-      return Symbol.seq(Symbol.repeat(Symbol.MAP_END,
+      return Symbol.seq(Symbol.MAP_END,
+          Symbol.repeat(Symbol.MAP_END,
               Symbol.ITEM_END, generate(sc.getValueType(), seen),
               Symbol.MAP_KEY_MARKER, Symbol.STRING),
           Symbol.MAP_START);

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/Parser.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/Parser.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/Parser.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/Parser.java Thu Jan 14 23:32:24 2010
@@ -21,7 +21,6 @@
 import java.util.Arrays;
 
 import org.apache.avro.AvroTypeException;
-import org.apache.avro.io.parsing.Symbol.ImplicitAction;
 
 /**
  * Parser is the class that maintains the stack for parsing. This class
@@ -35,16 +34,6 @@
    * provide this help.
    */
   public interface ActionHandler {
-    /**
-     * Handle the action symbol <tt>top</tt> when the <tt>input</tt> is
-     * sought to be taken off the stack.
-     * @param input The input symbol from the caller of advance
-     * @param top The symbol at the top the stack.
-     * @return  <tt>null</tt> if advance() is to continue processing the
-     * stack. If not <tt>null</tt> the return value will be returned
-     * by advance().
-     * @throws IOException
-     */
     Symbol doAction(Symbol input, Symbol top) throws IOException;
   }
 
@@ -80,39 +69,40 @@
   public final Symbol advance(Symbol input) throws IOException {
     for (; ;) {
       Symbol top = stack[--pos];
-      if (top == input) {
-        return top; // A common case
-      }
-
-      Symbol.Kind k = top.kind;
-      if (k == Symbol.Kind.IMPLICIT_ACTION) {
-        Symbol result = symbolHandler.doAction(input, top);
-        if (result != null) {
-          return result;
+      if (top.kind == Symbol.Kind.TERMINAL) {
+        if (top == input) {
+          return top; // A common case
+        } else {
+          throw new AvroTypeException("Attempt to process a "
+              + input + " when a "
+              + top + " was expected.");
         }
-      } else if (k == Symbol.Kind.TERMINAL) {
-        throw new AvroTypeException("Attempt to process a "
-                + input + " when a "
-                + top + " was expected.");
-      } else if (k == Symbol.Kind.REPEATER
-          && input == ((Symbol.Repeater) top).end) {
-        return input;
+      } else if (top.kind == Symbol.Kind.IMPLICIT_ACTION) {
+          Symbol result = symbolHandler.doAction(input, top);
+          if (result != Symbol.CONTINUE) {
+            return result;
+          }
       } else {
-        pushProduction(top);
+        pushProduction(input, top);
       }
     }
   }
   
   /**
-   * Performs any "trailing" implicit actions at the top the stack. 
+   * Performs any implicit actions at the top the stack, expanding any
+   * production (other than the root) that may be encountered.
+   * This method will fail if there are any repeaters on the stack.
+   * @throws IOException
    */
-  public final void processTrailingImplicitActions() throws IOException {
-    while (pos >= 1) {
+  public final void processImplicitActions() throws IOException {
+     while (pos > 1) {
       Symbol top = stack[pos - 1];
-      if (top.kind == Symbol.Kind.IMPLICIT_ACTION 
-        && ((Symbol.ImplicitAction) top).isTrailing) {
+      if (top.kind == Symbol.Kind.IMPLICIT_ACTION) {
         pos--;
         symbolHandler.doAction(null, top);
+      } else if (top.kind != Symbol.Kind.TERMINAL) {
+        pos--;
+        pushProduction(null, top);
       } else {
         break;
       }
@@ -126,13 +116,16 @@
    * @param input
    * @param sym
    */
-  public final void pushProduction(Symbol sym) {
-    Symbol[] p = sym.production;
-    while (pos + p.length > stack.length) {
-      expandStack();
+  public final void pushProduction(Symbol input, Symbol sym) {
+    if (sym.kind != Symbol.Kind.REPEATER ||
+        input != ((Symbol.Repeater) sym).end) {
+      Symbol[] p = sym.production;
+      while (pos + p.length > stack.length) {
+        expandStack();
+      }
+      System.arraycopy(p, 0, stack, pos, p.length);
+      pos += p.length;
     }
-    System.arraycopy(p, 0, stack, pos, p.length);
-    pos += p.length;
   }
 
   /**

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java Thu Jan 14 23:32:24 2010
@@ -98,13 +98,15 @@
         break;
 
       case ARRAY:
-        return Symbol.seq(Symbol.repeat(Symbol.ARRAY_END,
+        return Symbol.seq(Symbol.ARRAY_END,
+            Symbol.repeat(Symbol.ARRAY_END,
                 generate(writer.getElementType(),
                 reader.getElementType(), seen)),
             Symbol.ARRAY_START);
       
       case MAP:
-        return Symbol.seq(Symbol.repeat(Symbol.MAP_END,
+        return Symbol.seq(Symbol.MAP_END,
+            Symbol.repeat(Symbol.MAP_END,
                 generate(writer.getValueType(),
                 reader.getValueType(), seen), Symbol.STRING),
             Symbol.MAP_START);

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/SkipParser.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/SkipParser.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/SkipParser.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/SkipParser.java Thu Jan 14 23:32:24 2010
@@ -55,7 +55,6 @@
    * parser stack reaches the target level.
    */
   public final void skipTo(int target) throws IOException {
-    outer:
     while (target < pos) {
       Symbol top = stack[pos - 1];
       while (top.kind != Symbol.Kind.TERMINAL) {
@@ -64,9 +63,9 @@
           skipHandler.skipAction();
         } else {
           --pos;
-          pushProduction(top);
+          pushProduction(null, top);
         }
-        continue outer;
+        top = stack[pos - 1];
       }
       skipHandler.skipTopSymbol();
     }
@@ -79,7 +78,7 @@
     int target = pos;
     Symbol repeater = stack[--pos];
     assert repeater.kind == Symbol.Kind.REPEATER;
-    pushProduction(repeater);
+    pushProduction(null, repeater);
     skipTo(target);
   }
 

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/Symbol.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/Symbol.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/Symbol.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/Symbol.java Thu Jan 14 23:32:24 2010
@@ -143,21 +143,9 @@
     public String toString() { return printName; }
   }
 
-  public static class ImplicitAction extends Symbol {
-    /**
-     * Set to <tt>true</tt> if and only if this implicit action is 
-     * a trailing action. That is, it is an action that follows
-     * real symbol. E.g {@link Symbol#DEFAULT_END_ACTION}.
-     */
-    public final boolean isTrailing;
-
+  private static class ImplicitAction extends Symbol {
     private ImplicitAction() {
-      this(false);
-    }
-    
-    private ImplicitAction(boolean isTrailing) {
       super(Kind.IMPLICIT_ACTION);
-      this.isTrailing = isTrailing;
     }
   }
   
@@ -379,14 +367,15 @@
   public static final Symbol ITEM_END = new Symbol.Terminal("item-end");
 
   /* a pseudo terminal used by parsers */
+  public static final Symbol CONTINUE = new Symbol.Terminal("continue");
   public static final Symbol FIELD_ACTION =
     new Symbol.Terminal("field-action");
 
-  public static final Symbol RECORD_START = new ImplicitAction(false);
-  public static final Symbol RECORD_END = new ImplicitAction(true);
-  public static final Symbol UNION_END = new ImplicitAction(true);
+  public static final Symbol RECORD_START = new ImplicitAction();
+  public static final Symbol RECORD_END = new ImplicitAction();
+  public static final Symbol UNION_END = new ImplicitAction();
   
-  public static final Symbol DEFAULT_END_ACTION = new ImplicitAction(true);
+  public static final Symbol DEFAULT_END_ACTION = new ImplicitAction();
   public static final Symbol MAP_KEY_MARKER =
     new Symbol.Terminal("map-key-marker");
 }

Modified: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ValidatingGrammarGenerator.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ValidatingGrammarGenerator.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ValidatingGrammarGenerator.java (original)
+++ hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ValidatingGrammarGenerator.java Thu Jan 14 23:32:24 2010
@@ -71,10 +71,12 @@
       return Symbol.seq(new Symbol.IntCheckAction(sc.getEnumSymbols().size()),
           Symbol.ENUM);
     case ARRAY:
-      return Symbol.seq(Symbol.repeat(Symbol.ARRAY_END, generate(sc.getElementType(), seen)),
+      return Symbol.seq(Symbol.ARRAY_END,
+          Symbol.repeat(Symbol.ARRAY_END, generate(sc.getElementType(), seen)),
           Symbol.ARRAY_START);
     case MAP:
-      return Symbol.seq(Symbol.repeat(Symbol.MAP_END,
+      return Symbol.seq(Symbol.MAP_END,
+          Symbol.repeat(Symbol.MAP_END,
               generate(sc.getValueType(), seen), Symbol.STRING),
           Symbol.MAP_START);
     case RECORD: {

Propchange: hadoop/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/doc-files/
            ('svn:mergeinfo' removed)

Modified: hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/Perf.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/Perf.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/Perf.java (original)
+++ hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/Perf.java Thu Jan 14 23:32:24 2010
@@ -20,13 +20,8 @@
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
 import java.util.Random;
 
-import junit.extensions.RepeatedTest;
-
 import org.apache.avro.Schema;
 
 /**
@@ -39,45 +34,39 @@
   
   
   public static void main(String[] args) throws IOException {
-    List<Test> tests = new ArrayList<Test>();
-    for (String arg : args) {
-      if (arg.equals("-i")) {
-        tests.add(new ReadInt());
-      } else if (arg.equals("-f")) {
-        tests.add(new ReadFloat());
-      } else if (arg.equals("-d")) {
-        tests.add(new ReadDouble());
-      } else if (arg.equals("-l")) {
-        tests.add(new ReadLong());
-      } else if (arg.equals("-R")) {
-        tests.add(new RepeaterTest());
-      } else {
-        usage();
-      }
-    }
-    if (tests.isEmpty()) {
-      tests.addAll(Arrays.asList(new Test[] {
-         new ReadInt(), new ReadLong(), new ReadFloat(), new ReadDouble(),
-         new RepeaterTest(),
-      }));
+    Test[] tests = null;
+    if (args.length == 0) {
+      tests = new Test[] { new ReadInt(),
+          new ReadLong(), new ReadFloat(), new ReadDouble() };
+    } else if (args.length == 1) {
+      if (args[0].equals("-i")) {
+        tests = new Test[] { new ReadInt() };
+      } else if (args[0].equals("-f")) {
+        tests = new Test[] { new ReadFloat() };
+      } else if (args[0].equals("-d")) {
+        tests = new Test[] { new ReadDouble() };
+      } else if (args[0].equals("-l")) {
+        tests = new Test[] { new ReadLong() };
+      }
+    } else {
+      usage();
+      System.exit(1);
     }
     
     for (Test t : tests) {
-      // warmup JVM
-      // System.out.println("Warming up...");
+      // warmup JVM 
       for (int i = 0; i < CYCLES; i++) {
-        t.test();
+        t.read();
       }
       // test
       long s = 0;
       for (int i = 0; i < CYCLES; i++) {
-        long l = t.test();
+        long l = t.read();
         // System.out.println("** " + l);
         s += l;
       }
-      s /= 1000;
-      System.out.println(t.name + "(" + t.schema + "): " + s/1000 + " ms, "
-          +  ((CYCLES * (double)COUNT) / s) + " million numbers decoded/sec" );
+       s /= 1000;
+      System.out.println(t.name + "(" + t.schema + "): " + s/1000 + " ms, " +  (CYCLES * (double)COUNT)/s + " million numbers decoded /sec" );
     }
   }
   
@@ -85,7 +74,6 @@
     public final String name;
     public final Schema schema;
     protected byte[] data;
-    
     public Test(String name, String json) throws IOException {
       this.name = name;
       this.schema = Schema.parse(json);
@@ -94,9 +82,8 @@
       genData(e);
       data = bao.toByteArray();
     }
-    
-    public final long test() throws IOException {
-      Decoder d = getDecoder();
+    public final long read() throws IOException {
+      Decoder d = new BinaryDecoder(new ByteArrayInputStream(data));
       long t = System.nanoTime();
       for (long l = d.readArrayStart(); l > 0; l = d.arrayNext()) {
         for (int j = 0; j < l; j++) {
@@ -105,22 +92,13 @@
       }
       return (System.nanoTime() - t);
     }
-
-    protected Decoder getDecoder() throws IOException {
-      return new BinaryDecoder(new ByteArrayInputStream(data));
-    }
-
     abstract void genData(Encoder e) throws IOException;
     abstract void readInternal(Decoder d) throws IOException;
   }
   
   private static class ReadInt extends Test {
     public ReadInt() throws IOException {
-      this("ReadInt", "{ \"type\": \"array\", \"items\": \"int\"} ");
-    }
-
-    public ReadInt(String name, String json) throws IOException {
-      super(name, json);
+      super("ReadInt", "{ \"type\": \"array\", \"items\": \"int\"} ");
     }
     @Override void genData(Encoder e) throws IOException {
       e.writeArrayStart();
@@ -201,26 +179,11 @@
       d.readDouble();
     }
   }
-  
-  private static class RepeaterTest extends ReadInt {
-      public RepeaterTest() throws IOException {
-        super("RepeaterTest",
-            "{ \"type\": \"array\", \"items\": \"int\"} ");
-      }
-
-      @Override
-      public Decoder getDecoder() throws IOException {
-        return new ValidatingDecoder(schema, super.getDecoder());
-      }
-    }
-
   private static void usage() {
     System.out.println("Usage: Perf { -i | -l | -f | -d }");
     System.out.println("    -i      measures readInt() performance");
     System.out.println("    -l      measures readLong() performance");
     System.out.println("    -f      measures readFloat() performance");
     System.out.println("    -d      measures readDouble() performance");
-    System.out.println("    -R      measures repeater performance in "
-        + "validating encoder");
   }
 }

Propchange: hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestBinaryDecoder.java
            ('svn:mergeinfo' removed)

Modified: hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java?rev=899471&r1=899470&r2=899471&view=diff
==============================================================================
--- hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java (original)
+++ hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java Thu Jan 14 23:32:24 2010
@@ -95,13 +95,6 @@
           "{\"type\":\"record\",\"name\":\"r\",\"fields\":["
           + "{\"name\":\"f\", \"type\":\"int\", \"default\": 100}]}", "I",
           new Object[] { 100 } },
-        // default string value
-        { "{\"type\":\"record\",\"name\":\"r\",\"fields\":[]}", "",
-            new Object[] { },
-            "{\"type\":\"record\",\"name\":\"r\",\"fields\":["
-            + "{\"name\":\"f\", \"type\":\"string\", \"default\": \"hello\"}]}",
-            "S50",
-            new Object[] { "hello" } },
         { "{\"type\":\"record\",\"name\":\"r\",\"fields\":["
             + "{\"name\":\"f2\", \"type\":\"int\"}]}", "I",
           new Object[] { 10 },
@@ -110,36 +103,18 @@
           + "{\"name\":\"f2\", \"type\":\"int\"}]}", "II",
           new Object[] { 10, 101 } },
         { "{\"type\":\"record\",\"name\":\"outer\",\"fields\":["
-            + "{\"name\": \"g1\", "
-            + "\"type\":{\"type\":\"record\",\"name\":\"inner\",\"fields\":["
-            + "{\"name\":\"f2\", \"type\":\"int\"}]}}, "
+            + "{\"name\": \"g1\", " +
+                        "\"type\":{\"type\":\"record\",\"name\":\"inner\",\"fields\":["
+                + "{\"name\":\"f2\", \"type\":\"int\"}]}}, "
             + "{\"name\": \"g2\", \"type\": \"long\"}]}", "IL",
           new Object[] { 10, 11L },
           "{\"type\":\"record\",\"name\":\"outer\",\"fields\":["
-            + "{\"name\": \"g1\", "
-            + "\"type\":{\"type\":\"record\",\"name\":\"inner\",\"fields\":["
-            + "{\"name\":\"f1\", \"type\":\"int\", \"default\": 101},"
-            + "{\"name\":\"f2\", \"type\":\"int\"}]}}, "
+            + "{\"name\": \"g1\", " +
+                        "\"type\":{\"type\":\"record\",\"name\":\"inner\",\"fields\":["
+                + "{\"name\":\"f1\", \"type\":\"int\", \"default\": 101},"
+                + "{\"name\":\"f2\", \"type\":\"int\"}]}}, "
           + "{\"name\": \"g2\", \"type\": \"long\"}]}}", "IIL",
           new Object[] { 10, 101, 11L } },
-        // Default + array
-        { "{\"type\": \"array\", \"items\":" +
-            "{\"type\":\"record\",\"name\":\"r\",\"fields\":[]}}", "[c1s]",
-          new Object[] { },
-          "{\"type\": \"array\", \"items\":"
-            + "{\"type\":\"record\",\"name\":\"r\",\"fields\":["
-            + "{\"name\":\"f\", \"type\":\"int\", \"default\": 100}]}}",
-          "[c1sI]",
-          new Object[] { 100 } },
-        // Default + map
-        { "{\"type\": \"map\", \"values\":" +
-            "{\"type\":\"record\",\"name\":\"r\",\"fields\":[]}}", "{c1sS10}",
-          new Object[] { "key" },
-          "{\"type\": \"map\", \"values\":"
-            + "{\"type\":\"record\",\"name\":\"r\",\"fields\":["
-            + "{\"name\":\"f\", \"type\":\"int\", \"default\": 100}]}}",
-          "{c1sS10I}",
-          new Object[] { "key", 100 } },
     };
   }
 }

Propchange: hadoop/avro/trunk/lang/java/src/test/java/org/apache/avro/io/TestResolvingIOResolving.java
            ('svn:mergeinfo' removed)

Propchange: hadoop/avro/trunk/share/test/schemas/interop.avsc
            ('svn:mergeinfo' removed)

Propchange: hadoop/avro/trunk/share/test/schemas/simple.avpr
            ('svn:mergeinfo' removed)