You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ch...@apache.org on 2012/11/07 06:58:06 UTC
svn commit: r1406469 [5/10] - in /pig/trunk: ./ test/org/apache/pig/test/
Modified: pig/trunk/test/org/apache/pig/test/TestNewPlanPruneMapKeys.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestNewPlanPruneMapKeys.java?rev=1406469&r1=1406468&r2=1406469&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestNewPlanPruneMapKeys.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestNewPlanPruneMapKeys.java Wed Nov 7 05:58:04 2012
@@ -18,6 +18,11 @@
package org.apache.pig.test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
@@ -27,13 +32,10 @@ import java.util.Map;
import java.util.Properties;
import java.util.Set;
-import junit.framework.TestCase;
-
import org.apache.pig.ExecType;
import org.apache.pig.PigServer;
import org.apache.pig.backend.hadoop.executionengine.physicalLayer.plans.PhysicalPlan;
import org.apache.pig.impl.PigContext;
-import org.apache.pig.impl.plan.VisitorException;
import org.apache.pig.newplan.Operator;
import org.apache.pig.newplan.OperatorPlan;
import org.apache.pig.newplan.logical.optimizer.LogicalPlanPrinter;
@@ -45,104 +47,104 @@ import org.apache.pig.newplan.logical.ru
import org.apache.pig.newplan.optimizer.PlanOptimizer;
import org.apache.pig.newplan.optimizer.PlanTransformListener;
import org.apache.pig.newplan.optimizer.Rule;
+import org.junit.Test;
-public class TestNewPlanPruneMapKeys extends TestCase {
+public class TestNewPlanPruneMapKeys {
PigContext pc = new PigContext(ExecType.LOCAL, new Properties());
-
+
private org.apache.pig.newplan.logical.relational.LogicalPlan migratePlan(String query) throws Exception{
PigServer pigServer = new PigServer( pc );
- org.apache.pig.newplan.logical.relational.LogicalPlan newPlan =
- Util.buildLp(pigServer, query);
-
- try {
- // run filter rule
- Set<Rule> s = new HashSet<Rule>();
- List<Set<Rule>> ls = new ArrayList<Set<Rule>>();
- ls.add(s);
- // Add the PruneMap Filter
- Rule r = new ColumnMapKeyPrune("PruneMapKeys");
- s.add(r);
-
- printPlan((org.apache.pig.newplan.logical.relational.LogicalPlan)newPlan);
-
- // Run the optimizer
- MyPlanOptimizer optimizer = new MyPlanOptimizer(newPlan, ls, 3);
- optimizer.addPlanTransformListener(new ProjectionPatcher());
- optimizer.addPlanTransformListener(new SchemaPatcher());
- optimizer.optimize();
-
- return newPlan;
- }catch(Exception e) {
- throw new VisitorException(e);
- }
+ org.apache.pig.newplan.logical.relational.LogicalPlan newPlan =
+ Util.buildLp(pigServer, query);
+
+ // run filter rule
+ Set<Rule> s = new HashSet<Rule>();
+ List<Set<Rule>> ls = new ArrayList<Set<Rule>>();
+ ls.add(s);
+ // Add the PruneMap Filter
+ Rule r = new ColumnMapKeyPrune("PruneMapKeys");
+ s.add(r);
+
+ printPlan((org.apache.pig.newplan.logical.relational.LogicalPlan)newPlan);
+
+ // Run the optimizer
+ MyPlanOptimizer optimizer = new MyPlanOptimizer(newPlan, ls, 3);
+ optimizer.addPlanTransformListener(new ProjectionPatcher());
+ optimizer.addPlanTransformListener(new SchemaPatcher());
+ optimizer.optimize();
+
+ return newPlan;
}
-
+
public class MyPlanOptimizer extends PlanOptimizer {
protected MyPlanOptimizer(OperatorPlan p, List<Set<Rule>> rs,
int iterations) {
- super(p, rs, iterations);
+ super(p, rs, iterations);
}
-
+
public void addPlanTransformListener(PlanTransformListener listener) {
super.addPlanTransformListener(listener);
}
-
+
}
-
+
+ @Test
@SuppressWarnings("unchecked")
public void testSimplePlan() throws Exception {
String query = "a =load 'd.txt' as (a:map[], b:int, c:float);" +
"b = filter a by a#'name' == 'hello';" +
- "store b into 'empty';";
-
+ "store b into 'empty';";
+
org.apache.pig.newplan.logical.relational.LogicalPlan newLogicalPlan = migratePlan(query);
-
+
List<Operator> sources = newLogicalPlan.getSources();
assertEquals( 1, sources.size() );
for( Operator source : sources ) {
- Map<Long,Set<String>> annotation =
+ Map<Long,Set<String>> annotation =
(Map<Long, Set<String>>) source.getAnnotation(MapKeysPruneHelper.REQUIRED_MAPKEYS);
assertTrue(annotation == null || annotation.isEmpty() );
}
}
-
+
+ @Test
@SuppressWarnings("unchecked")
public void testSimplePlan2() throws Exception {
String query = "a =load 'd.txt' as (a:map[], b:int, c:float);" +
"b = filter a by a#'name' == 'hello';" +
"c = foreach b generate b,c;" +
- "store c into 'empty';";
-
+ "store c into 'empty';";
+
org.apache.pig.newplan.logical.relational.LogicalPlan newLogicalPlan = migratePlan(query);
-
+
assertEquals( 1, newLogicalPlan.getSources().size() );
LOLoad load = (LOLoad) newLogicalPlan.getSources().get(0);
- Map<Long,Set<String>> annotation =
+ Map<Long,Set<String>> annotation =
(Map<Long, Set<String>>) load.getAnnotation(MapKeysPruneHelper.REQUIRED_MAPKEYS);
- assertTrue( annotation != null );
+ assertNotNull(annotation);
assertEquals( 1, annotation.keySet().size() );
Integer[] keySet = annotation.keySet().toArray( new Integer[0] );
assertEquals( new Integer(0), keySet[0] );
Set<String> keys = annotation.get(0);
assertEquals( 1, keys.size() );
- assertEquals( "name", keys.toArray( new String[0] )[0] );
+ assertEquals( "name", keys.toArray( new String[0] )[0] );
}
-
+
+ @Test
@SuppressWarnings("unchecked")
public void testSimplePlan3() throws Exception {
String query = "a =load 'd.txt' as (a:map[], b:int, c:float);" +
"b = filter a by a#'name' == 'hello';" +
"c = foreach b generate a#'age',b,c;" +
- "store c into 'empty';";
-
+ "store c into 'empty';";
+
org.apache.pig.newplan.logical.relational.LogicalPlan newLogicalPlan = migratePlan(query);
-
+
assertEquals( 1, newLogicalPlan.getSources().size() );
LOLoad load = (LOLoad) newLogicalPlan.getSources().get(0);
- Map<Long,Set<String>> annotation =
+ Map<Long,Set<String>> annotation =
(Map<Long, Set<String>>) load.getAnnotation(MapKeysPruneHelper.REQUIRED_MAPKEYS);
- assertTrue( annotation != null );
+ assertNotNull(annotation);
assertEquals( 1, annotation.keySet().size() );
Integer[] keySet = annotation.keySet().toArray( new Integer[0] );
assertEquals( new Integer(0), keySet[0] );
@@ -151,101 +153,106 @@ public class TestNewPlanPruneMapKeys ext
assertTrue( keys.contains("name") );
assertTrue( keys.contains("age"));
}
-
+
+ @Test
@SuppressWarnings("unchecked")
public void testSimplePlan4() throws Exception {
String query = "a =load 'd.txt' as (a:map[], b:int, c:float);" +
"b = filter a by a#'name' == 'hello';" +
"c = foreach b generate a#'age',a,b,c;" +
- "store c into 'empty';";
-
+ "store c into 'empty';";
+
org.apache.pig.newplan.logical.relational.LogicalPlan newLogicalPlan = migratePlan(query);
-
+
List<Operator> sources = newLogicalPlan.getSources();
assertEquals( 1, sources.size() );
for( Operator source : sources ) {
- Map<Long,Set<String>> annotation =
+ Map<Long,Set<String>> annotation =
(Map<Long, Set<String>>) source.getAnnotation(MapKeysPruneHelper.REQUIRED_MAPKEYS);
assertTrue(annotation == null || annotation.isEmpty() );
}
}
-
+
+ @Test
@SuppressWarnings("unchecked")
public void testSimplePlan5() throws Exception {
String query = "a =load 'd.txt' as (a:chararray, b:int, c:float);" +
"b = filter a by a == 'hello';" +
"c = foreach b generate a,b,c;" +
- "store c into 'empty';";
-
+ "store c into 'empty';";
+
org.apache.pig.newplan.logical.relational.LogicalPlan newLogicalPlan = migratePlan(query);
-
+
List<Operator> sources = newLogicalPlan.getSources();
assertEquals( 1, sources.size() );
for( Operator source : sources ) {
- Map<Long,Set<String>> annotation =
+ Map<Long,Set<String>> annotation =
(Map<Long, Set<String>>) source.getAnnotation(MapKeysPruneHelper.REQUIRED_MAPKEYS);
- assertTrue(annotation == null );
+ assertNull(annotation);
}
}
-
+
+ @Test
@SuppressWarnings("unchecked")
public void testSimplePlan6() throws Exception {
String query = "a =load 'd.txt';" +
"b = filter a by $0 == 'hello';" +
"c = foreach b generate $0,$1,$2;" +
- "store c into 'empty';";
-
+ "store c into 'empty';";
+
org.apache.pig.newplan.logical.relational.LogicalPlan newLogicalPlan = migratePlan(query);
-
+
List<Operator> sources = newLogicalPlan.getSources();
assertEquals( 1, sources.size() );
for( Operator source : sources ) {
- Map<Long,Set<String>> annotation =
+ Map<Long,Set<String>> annotation =
(Map<Long, Set<String>>) source.getAnnotation(MapKeysPruneHelper.REQUIRED_MAPKEYS);
assertTrue(annotation == null );
}
}
-
+
+ @Test
@SuppressWarnings("unchecked")
public void testSimplePlan7() throws Exception {
String query = "a =load 'd.txt';" +
"a1 = load 'b.txt' as (a:map[],b:int, c:float);" +
"b = join a by $0, a1 by a#'name';" +
"c = foreach b generate $0,$1,$2;" +
- "store c into 'empty';";
-
+ "store c into 'empty';";
+
org.apache.pig.newplan.logical.relational.LogicalPlan newLogicalPlan = migratePlan(query);
printPlan( newLogicalPlan );
-
+
List<Operator> sources = newLogicalPlan.getSources();
assertEquals( 2, sources.size() );
for( Operator source : sources ) {
- Map<Long,Set<String>> annotation =
+ Map<Long,Set<String>> annotation =
(Map<Long, Set<String>>) source.getAnnotation(MapKeysPruneHelper.REQUIRED_MAPKEYS);
assertTrue( annotation == null || annotation.isEmpty() );
}
}
+ @Test
@SuppressWarnings("unchecked")
public void testSimplePlan8() throws Exception {
String query = "a =load 'd.txt';" +
"a1 = load 'b.txt' as (a:chararray,b:int, c:float);" +
"b = join a by $0, a1 by a;" +
"c = foreach b generate $0,$1,$2;" +
- "store c into 'empty';";
-
+ "store c into 'empty';";
+
org.apache.pig.newplan.logical.relational.LogicalPlan newLogicalPlan = migratePlan(query);
printPlan(newLogicalPlan);
-
+
List<Operator> sources = newLogicalPlan.getSources();
assertEquals( 2, sources.size() );
for( Operator source : sources ) {
- Map<Long,Set<String>> annotation =
+ Map<Long,Set<String>> annotation =
(Map<Long, Set<String>>) source.getAnnotation(MapKeysPruneHelper.REQUIRED_MAPKEYS);
assertTrue( annotation == null || annotation.isEmpty() );
}
}
-
+
public void printPlan(org.apache.pig.newplan.logical.relational.LogicalPlan logicalPlan ) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(out);
@@ -253,7 +260,7 @@ public class TestNewPlanPruneMapKeys ext
pp.visit();
System.err.println(out.toString());
}
-
+
public void printPlan(PhysicalPlan physicalPlan) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(out);
Modified: pig/trunk/test/org/apache/pig/test/TestNewPlanRule.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestNewPlanRule.java?rev=1406469&r1=1406468&r2=1406469&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestNewPlanRule.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestNewPlanRule.java Wed Nov 7 05:58:04 2012
@@ -18,6 +18,10 @@
package org.apache.pig.test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
+
import java.util.List;
import org.apache.pig.impl.logicalLayer.FrontendException;
@@ -27,19 +31,19 @@ import org.apache.pig.newplan.OperatorPl
import org.apache.pig.newplan.PlanVisitor;
import org.apache.pig.newplan.optimizer.Rule;
import org.apache.pig.newplan.optimizer.Transformer;
+import org.junit.Before;
+import org.junit.Test;
-import junit.framework.TestCase;
-
-public class TestNewPlanRule extends TestCase {
+public class TestNewPlanRule {
private static class SillyRule extends Rule {
-
+
public SillyRule(String n, OperatorPlan p) {
- super(n, p);
+ super(n, p);
}
-
+
@Override
- public Transformer getNewTransformer() {
+ public Transformer getNewTransformer() {
return null;
}
@@ -48,11 +52,11 @@ public class TestNewPlanRule extends Tes
// TODO Auto-generated method stub
return null;
}
-
+
}
-
+
private static class SillyPlan extends BaseOperatorPlan {
-
+
SillyPlan() {
super();
}
@@ -63,14 +67,14 @@ public class TestNewPlanRule extends Tes
}
}
-
+
private static class OP extends Operator {
OP(String n, OperatorPlan p) {
- super(n, p);
+ super(n, p);
}
public void accept(PlanVisitor v) {
-
+
}
@Override
@@ -78,41 +82,42 @@ public class TestNewPlanRule extends Tes
return false;
}
}
-
+
private static class OP_Load extends OP {
OP_Load(String n, OperatorPlan p) {
- super(n, p);
+ super(n, p);
}
}
-
+
private static class OP_Filter extends OP {
OP_Filter(String n, OperatorPlan p) {
- super(n, p);
+ super(n, p);
}
}
-
+
private static class OP_Split extends OP {
OP_Split(String n, OperatorPlan p) {
- super(n, p);
+ super(n, p);
}
}
-
+
private static class OP_Store extends OP {
OP_Store(String n, OperatorPlan p) {
- super(n, p);
+ super(n, p);
}
}
-
+
private static class OP_Join extends OP {
OP_Join(String n, OperatorPlan p) {
- super(n, p);
+ super(n, p);
}
}
-
+
OperatorPlan plan = null;
Operator join;
-
+
+ @Before
public void setUp() {
plan = new SillyPlan();
Operator l1 = new OP_Load("p1", plan);
@@ -135,7 +140,7 @@ public class TestNewPlanRule extends Tes
plan.add(s1);
Operator s2 = new OP_Store("s2", plan);
plan.add(s2);
-
+
// load --|-join - filter - filter - split |- filter - store
// load --| |- filter - store
plan.connect(l1, j1);
@@ -146,25 +151,25 @@ public class TestNewPlanRule extends Tes
plan.connect(t1, f3);
plan.connect(t1, f4);
plan.connect(f3, s1);
- plan.connect(f4, s2);
-
+ plan.connect(f4, s2);
+
join = j1;
}
-
-
- public void testMultiNode() throws Exception {
+
+ @Test
+ public void testMultiNode() throws Exception {
// load --|-join - filter - filter - split |- filter - store
- // load --|
+ // load --|
// load -- filter-|
Operator l3 = new OP_Load("p3", plan);
Operator f5 = new OP_Filter("f5", plan);
plan.add(l3);
plan.add(f5);
plan.connect(l3, f5);
-
+
plan.connect(f5, join);
-
-
+
+
OperatorPlan pattern = new SillyPlan();
Operator op1 = new OP_Load("mmm1", pattern);
Operator op2 = new OP_Filter("mmm2", pattern);
@@ -174,155 +179,157 @@ public class TestNewPlanRule extends Tes
pattern.add(op3);
pattern.connect(op1, op3);
pattern.connect(op2, op3);
-
+
Rule r = new SillyRule("basic", pattern);
List<OperatorPlan> l = r.match(plan);
assertEquals(1, l.size());
OperatorPlan match = l.get(0);
- assertEquals(match.size(), 3);
- assertEquals(match.getSinks().size(), 1);
- assertEquals(match.getSinks().get(0), join);
-
- assertEquals(match.getSources().size(), 2);
+ assertEquals(3, match.size());
+ assertEquals(1, match.getSinks().size());
+ assertEquals(join, match.getSinks().get(0));
+
+ assertEquals(2, match.getSources().size());
assertTrue(match.getSources().get(0).getClass().equals(OP_Load.class) || match.getSources().get(0).equals(f5) );
assertTrue(match.getSources().get(1).getClass().equals(OP_Load.class) || match.getSources().get(1).equals(f5) );
assertNotSame(match.getSources().get(0), match.getSources().get(1));
}
-
+
+ @Test
public void testSingleNodeMatch() throws FrontendException {
- // search for Load
+ // search for Load
OperatorPlan pattern = new SillyPlan();
pattern.add(new OP_Load("mmm", pattern));
-
+
Rule r = new SillyRule("basic", pattern);
List<OperatorPlan> l = r.match(plan);
- assertEquals(l.size(), 2);
-
+ assertEquals(2, l.size());
+
Operator m1 = l.get(0).getSources().get(0);
assertTrue(m1.getName().equals("p1") || m1.getName().equals("p2"));
- assertEquals(l.get(0).size(), 1);
-
+ assertEquals(1, l.get(0).size());
+
Operator m2 = l.get(1).getSources().get(0);
assertTrue(m2.getName().equals("p1") || m2.getName().equals("p2"));
- assertEquals(l.get(1).size(), 1);
+ assertEquals(1, l.get(1).size());
assertNotSame(m1.getName(), m2.getName());
-
+
// search for filter
pattern = new SillyPlan();
pattern.add(new OP_Filter("mmm",pattern));
r = new SillyRule("basic", pattern);
l = r.match(plan);
- assertEquals(l.size(), 4);
-
+ assertEquals(4, l.size());
+
m1 = l.get(0).getSources().get(0);
- assertTrue(m1.getName().equals("f1") || m1.getName().equals("f2")
+ assertTrue(m1.getName().equals("f1") || m1.getName().equals("f2")
|| m1.getName().equals("f3") || m1.getName().equals("f4"));
- assertEquals(l.get(0).size(), 1);
-
+ assertEquals(1, l.get(0).size());
+
m2 = l.get(1).getSources().get(0);
- assertTrue(m1.getName().equals("f1") || m1.getName().equals("f2")
+ assertTrue(m1.getName().equals("f1") || m1.getName().equals("f2")
|| m1.getName().equals("f3") || m1.getName().equals("f4"));
- assertEquals(l.get(1).size(), 1);
+ assertEquals(1, l.get(1).size());
assertNotSame(m1.getName(), m2.getName());
-
+
// search for store
pattern = new SillyPlan();
pattern.add(new OP_Store("mmm",pattern));
r = new SillyRule("basic", pattern);
l = r.match(plan);
assertEquals(l.size(), 2);
-
+
m1 = l.get(0).getSources().get(0);
assertTrue(m1.getName().equals("s1") || m1.getName().equals("s2"));
assertEquals(l.get(0).size(), 1);
-
+
m2 = l.get(1).getSources().get(0);
assertTrue(m2.getName().equals("s1") || m2.getName().equals("s2"));
assertEquals(l.get(1).size(), 1);
assertNotSame(m1.getName(), m2.getName());
-
+
// search for split
pattern = new SillyPlan();
pattern.add(new OP_Split("mmm",pattern));
r = new SillyRule("basic", pattern);
l = r.match(plan);
assertEquals(l.size(), 1);
-
+
m1 = l.get(0).getSources().get(0);
assertTrue(m1.getName().equals("t1"));
assertEquals(l.get(0).size(), 1);
-
+
// search for join
pattern = new SillyPlan();
pattern.add(new OP_Join("mmm",pattern));
r = new SillyRule("basic", pattern);
l = r.match(plan);
assertEquals(l.size(), 1);
-
+
m1 = l.get(0).getSources().get(0);
assertTrue(m1.getName().equals("j1"));
assertEquals(l.get(0).size(), 1);
-
+
}
-
+
+ @Test
public void testTwoNodeMatch() throws FrontendException {
- // search for 2 Loads at the same time
+ // search for 2 Loads at the same time
OperatorPlan pattern = new SillyPlan();
pattern.add(new OP_Load("mmm1", pattern));
pattern.add(new OP_Load("mmm2", pattern));
-
+
Rule r = new SillyRule("basic", pattern);
List<OperatorPlan> l = r.match(plan);
assertEquals(l.size(), 1);
-
+
assertEquals(l.get(0).getSources().size(), 2);
assertEquals(l.get(0).getSinks().size(), 2);
assertEquals(l.get(0).size(), 2);
-
+
Operator m1 = l.get(0).getSources().get(0);
assertTrue(m1.getName().equals("p1") || m1.getName().equals("p2"));
Operator m2 = l.get(0).getSources().get(1);
- assertTrue(m2.getName().equals("p1") || m2.getName().equals("p2"));
+ assertTrue(m2.getName().equals("p1") || m2.getName().equals("p2"));
assertNotSame(m1.getName(), m2.getName());
-
-
+
+
// search for join then filter
pattern = new SillyPlan();
Operator s1 = new OP_Join("mmm1", pattern);
Operator s2 = new OP_Filter("mmm2", pattern);
pattern.add(s1);
- pattern.add(s2);
+ pattern.add(s2);
pattern.connect(s1, s2);
-
+
r = new SillyRule("basic", pattern);
l = r.match(plan);
- assertEquals(l.size(), 1);
-
- assertEquals(l.get(0).getSources().size(), 1);
- assertEquals(l.get(0).getSinks().size(), 1);
- assertEquals(l.get(0).size(), 2);
-
+ assertEquals(1, l.size());
+
+ assertEquals(1, l.get(0).getSources().size());
+ assertEquals(1, l.get(0).getSinks().size());
+ assertEquals(2, l.get(0).size());
+
m1 = l.get(0).getSources().get(0);
assertTrue(m1.getName().equals("j1"));
m2 = l.get(0).getSinks().get(0);
- assertTrue(m2.getName().equals("f1"));
-
-
+ assertTrue(m2.getName().equals("f1"));
+
+
// search for filter, then store
pattern = new SillyPlan();
s1 = new OP_Filter("mmm1", pattern);
- s2 = new OP_Store("mmm2", pattern);
+ s2 = new OP_Store("mmm2", pattern);
pattern.add(s1);
- pattern.add(s2);
- pattern.connect(s1, s2);
-
+ pattern.add(s2);
+ pattern.connect(s1, s2);
+
r = new SillyRule("basic", pattern);
l = r.match(plan);
assertEquals(2, l.size());
-
- assertEquals(l.get(0).getSources().size(), 1);
- assertEquals(l.get(0).getSinks().size(), 1);
-
+
+ assertEquals(1, l.get(0).getSources().size());
+ assertEquals(1, l.get(0).getSinks().size());
+
// search for 2 loads, then join
pattern = new SillyPlan();
s1 = new OP_Load("mmm1", pattern);
@@ -333,37 +340,39 @@ public class TestNewPlanRule extends Tes
pattern.add(s3);
pattern.connect(s1, s3);
pattern.connect(s2, s3);
-
+
r = new SillyRule("basic", pattern);
l = r.match(plan);
assertEquals(l.size(), 1);
-
+
// search for split then 2 filters
pattern = new SillyPlan();
s1 = new OP_Split("mmm1", pattern);
s2 = new OP_Filter("mmm2", pattern);
s3 = new OP_Filter("mmm3", pattern);
pattern.add(s1);
- pattern.add(s2);
+ pattern.add(s2);
pattern.add(s3);
pattern.connect(s1, s2);
pattern.connect(s1, s3);
-
+
r = new SillyRule("basic", pattern);
l = r.match(plan);
assertEquals(1, l.size());
-
- assertEquals(l.get(0).getSources().size(), 1);
- assertEquals(l.get(0).getSinks().size(), 2);
- assertEquals(l.get(0).size(), 3);
-
+
+ assertEquals(1, l.get(0).getSources().size());
+ assertEquals(2, l.get(0).getSinks().size());
+ assertEquals(3, l.get(0).size());
+
m1 = l.get(0).getSources().get(0);
- assertTrue(m1.getName().equals("t1"));
+ assertEquals("t1", m1.getName());
m2 = l.get(0).getSinks().get(0);
- assertTrue(m2.getName().equals("f3") || m2.getName().equals("f4"));
+ assertTrue(m2.getName().equals("f3") || m2.getName().equals("f4"));
m2 = l.get(0).getSinks().get(1);
- assertTrue(m2.getName().equals("f3") || m2.getName().equals("f4"));
+ assertTrue(m2.getName().equals("f3") || m2.getName().equals("f4"));
}
+
+ @Test
public void testThreeNodeMatch() throws FrontendException {
// load --| |- filter - store
// load --|-join - filter - filter - split |- filter - store
@@ -388,31 +397,30 @@ public class TestNewPlanRule extends Tes
Operator s3 = new OP_Filter("mmm3", pattern);
Operator s4 = new OP_Filter("mmm4", pattern);
pattern.add(s1);
- pattern.add(s2);
+ pattern.add(s2);
pattern.add(s3);
pattern.add(s4);
pattern.connect(s1, s2);
pattern.connect(s1, s3);
pattern.connect(s1, s4);
-
+
Rule r = new SillyRule("basic", pattern);
List<OperatorPlan> l = r.match(plan);
assertEquals(1, l.size());
-
+
assertEquals(1, l.get(0).getSources().size());
assertEquals(3, l.get(0).getSinks().size());
assertEquals(4, l.get(0).size());
-
+
Operator m1,m2;
m1 = l.get(0).getSources().get(0);
- assertTrue(m1.getName().equals("j1"));
+ assertEquals("j1", m1.getName());
for( int i=0; i < 3; i++ ) {
m2 = l.get(0).getSinks().get(i);
- assertTrue(m2.getName().equals("f1")
- || m2.getName().equals("f5")
- || m2.getName().equals("f6")
- );
+ assertTrue(m2.getName().equals("f1")
+ || m2.getName().equals("f5")
+ || m2.getName().equals("f6")
+ );
}
}
-
-}
+}
\ No newline at end of file
Modified: pig/trunk/test/org/apache/pig/test/TestNullConstant.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestNullConstant.java?rev=1406469&r1=1406468&r2=1406469&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestNullConstant.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestNullConstant.java Wed Nov 7 05:58:04 2012
@@ -18,65 +18,55 @@
package org.apache.pig.test;
+import static org.apache.pig.builtin.mock.Storage.resetData;
+import static org.apache.pig.builtin.mock.Storage.tuple;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
-import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
-import junit.framework.TestCase;
-
import org.apache.pig.ExecType;
import org.apache.pig.PigServer;
import org.apache.pig.backend.executionengine.ExecException;
+import org.apache.pig.builtin.mock.Storage.Data;
import org.apache.pig.data.DataBag;
import org.apache.pig.data.Tuple;
-import org.junit.AfterClass;
+import org.apache.pig.impl.logicalLayer.FrontendException;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-@RunWith(JUnit4.class)
-public class TestNullConstant extends TestCase {
-
- static MiniCluster cluster = MiniCluster.buildCluster();
+public class TestNullConstant {
private PigServer pigServer;
@Before
- @Override
public void setUp() throws Exception{
- pigServer = new PigServer(ExecType.MAPREDUCE, cluster.getProperties());
- }
-
- @AfterClass
- public static void oneTimeTearDown() throws Exception {
- cluster.shutDown();
+ pigServer = new PigServer(ExecType.LOCAL);
}
-
+
@Test
public void testArithExpressions() throws IOException, ExecException {
- String inputFileName = "testArithExpressions-input.txt";
- Util.createInputFile(cluster, inputFileName,
- new String[] {"10\t11.0"});
- pigServer.registerQuery("a = load '" + inputFileName + "' as (x:int, y:double);");
+ Data data = resetData(pigServer);
+ data.set("foo", tuple(10, 11.0));
+
+ pigServer.registerQuery("a = load 'foo' using mock.Storage() as (x:int, y:double);");
pigServer.registerQuery("b = foreach a generate x + null, x * null, x / null, x - null, null % x, " +
- "y + null, y * null, y / null, y - null;");
+ "y + null, y * null, y / null, y - null;");
Iterator<Tuple> it = pigServer.openIterator("b");
Tuple t = it.next();
for (int i = 0; i < 9; i++) {
- assertEquals(null, t.get(i));
+ assertNull(t.get(i));
}
- Util.deleteFile(cluster, inputFileName);
}
-
+
@Test
public void testBinCond() throws IOException, ExecException {
- String inputFileName = "testBinCond-input.txt";
- Util.createInputFile(cluster, inputFileName,
- new String[] {"10\t11.0"});
- pigServer.registerQuery("a = load '" + inputFileName + "' as (x:int, y:double);");
+ Data data = resetData(pigServer);
+ data.set("foo", tuple(10, 11.0));
+
+ pigServer.registerQuery("a = load 'foo' using mock.Storage() as (x:int, y:double);");
pigServer.registerQuery("b = foreach a generate (2 > 1? null : 1), ( 2 < 1 ? null : 1), (2 > 1 ? 1 : null), ( 2 < 1 ? 1 : null);");
Iterator<Tuple> it = pigServer.openIterator("b");
Tuple t = it.next();
@@ -84,7 +74,7 @@ public class TestNullConstant extends Te
for (int i = 0; i < 4; i++) {
assertEquals(result[i], t.get(i));
}
-
+
// is null and is not null test
pigServer.registerQuery("b = foreach a generate (null is null ? 1 : 2), ( null is not null ? 2 : 1);");
it = pigServer.openIterator("b");
@@ -92,16 +82,14 @@ public class TestNullConstant extends Te
for (int i = 0; i < 2; i++) {
assertEquals(1, t.get(i));
}
- Util.deleteFile(cluster, inputFileName);
-
}
@Test
public void testForeachGenerate() throws ExecException, IOException {
- String inputFileName = "testForeachGenerate-input.txt";
- Util.createInputFile(cluster, inputFileName,
- new String[] {"10\t11.0"});
- pigServer.registerQuery("a = load '" + inputFileName + "' as (x:int, y:double);");
+ Data data = resetData(pigServer);
+ data.set("foo", tuple(10, 11.0));
+
+ pigServer.registerQuery("a = load 'foo' using mock.Storage() as (x:int, y:double);");
pigServer.registerQuery("b = foreach a generate x, null, y, null;");
Iterator<Tuple> it = pigServer.openIterator("b");
Tuple t = it.next();
@@ -109,27 +97,22 @@ public class TestNullConstant extends Te
for (int i = 0; i < 4; i++) {
assertEquals(result[i], t.get(i));
}
- Util.deleteFile(cluster, inputFileName);
-
}
-
+
@Test
public void testOuterJoin() throws IOException, ExecException {
- String inputFileName1 = "testOuterJoin-input1.txt";
- Util.createInputFile(cluster, inputFileName1,
- new String[] {"10\twill_join", "11\twill_not_join"});
- String inputFileName2 = "testOuterJoin-input2.txt";
- Util.createInputFile(cluster, inputFileName2,
- new String[] {"10\twill_join", "12\twill_not_join"});
- pigServer.registerQuery("a = load '" + inputFileName1 + "' as (x:int, y:chararray);");
- pigServer.registerQuery("b = load '" + inputFileName2 + "' as (u:int, v:chararray);");
+ Data data = resetData(pigServer);
+ data.set("foo_left", tuple(10, "will_join"), tuple(11, "will_not_join"));
+ data.set("foo_right", tuple(10, "will_join"), tuple(12, "will_not_join"));
+ pigServer.registerQuery("a = load 'foo_left' using mock.Storage() as (x:int, y:chararray);");
+ pigServer.registerQuery("b = load 'foo_right' using mock.Storage() as (u:int, v:chararray);");
pigServer.registerQuery("c = cogroup a by x, b by u;");
pigServer.registerQuery("d = foreach c generate flatten((SIZE(a) == 0 ? null: a)), flatten((SIZE(b) == 0 ? null : b));");
Iterator<Tuple> it = pigServer.openIterator("d");
Object[][] results = new Object[][]{{10, "will_join", 10, "will_join"}, {11, "will_not_join", null}, {null, 12, "will_not_join"}};
int i = 0;
while(it.hasNext()) {
-
+
Tuple t = it.next();
Object[] result = results[i++];
assertEquals(result.length, t.size());
@@ -137,69 +120,56 @@ public class TestNullConstant extends Te
assertEquals(result[j], t.get(j));
}
}
- Util.deleteFile(cluster, inputFileName1);
- Util.deleteFile(cluster, inputFileName2);
}
-
+
@Test
public void testConcatAndSize() throws IOException, ExecException {
- String inputFileName = "testConcatAndSize-input.txt";
- Util.createInputFile(cluster, inputFileName,
- new String[] {"10\t11.0\tstring"});
- pigServer.registerQuery("a = load '" + inputFileName + "' as (x:int, y:double, str:chararray);");
+ Data data = resetData(pigServer);
+ data.set("foo", tuple(10, 11.0, "will_join"));
+
+ pigServer.registerQuery("a = load 'foo' using mock.Storage() as (x:int, y:double, str:chararray);");
pigServer.registerQuery("b = foreach a generate SIZE(null), CONCAT(str, null), " +
- "CONCAT(null, str);");
+ "CONCAT(null, str);");
Iterator<Tuple> it = pigServer.openIterator("b");
Tuple t = it.next();
for (int i = 0; i < 3; i++) {
- assertEquals(null, t.get(i));
+ assertNull(t.get(i));
}
- Util.deleteFile(cluster, inputFileName);
}
@Test
public void testExplicitCast() throws IOException, ExecException {
- String inputFileName = "testExplicitCast-input.txt";
- Util.createInputFile(cluster, inputFileName,
- new String[] {"10\t11.0\tstring"});
- pigServer.registerQuery("a = load '" + inputFileName + "' as (x:int, y:double, str:chararray);");
+ Data data = resetData(pigServer);
+ data.set("foo", tuple(10, 11.0, "will_join"));
+
+ pigServer.registerQuery("a = load 'foo' using mock.Storage() as (x:int, y:double, str:chararray);");
pigServer.registerQuery("b = foreach a generate (int)null, (double)null, (chararray)null, (map[])null;");
Iterator<Tuple> it = pigServer.openIterator("b");
Tuple t = it.next();
for (int i = 0; i < 3; i++) {
- assertEquals(null, t.get(i));
+ assertNull(t.get(i));
}
- Util.deleteFile(cluster, inputFileName);
}
-
+
@Test
public void testComplexNullConstants() throws IOException, ExecException {
- String inputFileName = "testComplexNullConstants-input.txt";
- Util.createInputFile(cluster, inputFileName,
- new String[] {"10\t11.0\tstring"});
- pigServer.registerQuery("a = load '" + inputFileName + "' as (x:int, y:double, str:chararray);");
+ Data data = resetData(pigServer);
+ data.set("foo", tuple(10, 11.0, "will_join"));
+
+ pigServer.registerQuery("a = load 'foo' using mock.Storage() as (x:int, y:double, str:chararray);");
pigServer.registerQuery("b = foreach a generate {(null)}, ['2'#null];");
Iterator<Tuple> it = pigServer.openIterator("b");
Tuple t = it.next();
- assertEquals(null, ((DataBag)t.get(0)).iterator().next().get(0));
- assertEquals(null, ((Map<String, Object>)t.get(1)).get("2"));
- Util.deleteFile(cluster, inputFileName);
+ assertNull(((DataBag)t.get(0)).iterator().next().get(0));
+ assertNull(((Map<String, Object>)t.get(1)).get("2"));
}
- @Test
+ @Test(expected = FrontendException.class)
public void testMapNullKeyFailure() throws IOException {
- String inputFileName = "testMapNullKeyFailure-input.txt";
- Util.createInputFile(cluster, inputFileName,
- new String[] {"10\t11.0\tstring"});
- pigServer.registerQuery("a = load '" + inputFileName + "' as (x:int, y:double, str:chararray);");
-
- boolean exceptionOccured = false;
- try {
- pigServer.registerQuery("b = foreach a generate [null#'2'];");
- } catch(Exception e) {
- exceptionOccured = true;
- }
- Util.deleteFile(cluster, inputFileName);
- if(!exceptionOccured) fail();
+ Data data = resetData(pigServer);
+ data.set("foo", tuple(10, 11.0, "will_join"));
+
+ pigServer.registerQuery("a = load 'foo' using mock.Storage() as (x:int, y:double, str:chararray);");
+ pigServer.registerQuery("b = foreach a generate [null#'2'];");
}
}
Modified: pig/trunk/test/org/apache/pig/test/TestOrderBy2.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestOrderBy2.java?rev=1406469&r1=1406468&r2=1406469&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestOrderBy2.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestOrderBy2.java Wed Nov 7 05:58:04 2012
@@ -17,75 +17,85 @@
*/
package org.apache.pig.test;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.PrintStream;
+import static org.apache.pig.builtin.mock.Storage.resetData;
+import static org.apache.pig.builtin.mock.Storage.tuple;
+import static org.junit.Assert.assertEquals;
+
import java.io.IOException;
import java.text.DecimalFormat;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.ArrayList;
-
-import junit.framework.TestCase;
-import junit.framework.Assert;
-
-import org.junit.Test;
+import org.apache.pig.ExecType;
import org.apache.pig.PigServer;
-import org.apache.pig.test.utils.TestHelper;
import org.apache.pig.backend.executionengine.ExecException;
+import org.apache.pig.builtin.mock.Storage.Data;
import org.apache.pig.data.DataType;
import org.apache.pig.data.Tuple;
+import org.apache.pig.impl.logicalLayer.schema.Schema;
+import org.junit.Before;
+import org.junit.Test;
-public class TestOrderBy2 extends TestCase {
-
- private String initString = "mapreduce";
- MiniCluster cluster = MiniCluster.buildCluster();
+import com.google.common.collect.Lists;
- private PigServer pig ;
+public class TestOrderBy2 {
+ private PigServer pig;
- public TestOrderBy2() throws Throwable {
- pig = new PigServer(initString) ;
+ @Before
+ public void setUp() throws Exception {
+ pig = new PigServer(ExecType.LOCAL);
+
+ Schema s = new Schema();
+ s.add(new Schema.FieldSchema(null, DataType.CHARARRAY));
+ s.add(new Schema.FieldSchema(null, DataType.CHARARRAY));
+ Data data = resetData(pig);
+ data.set("foo1", s, genDataSetFile1());
+
+ s = new Schema();
+ s.add(new Schema.FieldSchema(null, DataType.CHARARRAY));
+ s.add(new Schema.FieldSchema(null, DataType.CHARARRAY));
+ data.set("foo2", s, genDataSetFile2());
+
+ s = new Schema();
+ s.add(new Schema.FieldSchema(null, DataType.CHARARRAY));
+ s.add(new Schema.FieldSchema(null, DataType.CHARARRAY));
+ data.set("foo3", s, genDataSetFile3());
}
//////////////////////// Simple Order Tests ///////////////////////
@Test
public void testTopLevelOrderBy_Col0_ASC_NoUsing() throws Exception {
- File tmpFile = genDataSetFile1() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY $0;",
+ runTest("myid = order (load 'foo1' using mock.Storage()) BY $0;",
new int[] { 0 } ,
new boolean[] { false } ) ;
}
@Test
public void testTopLevelOrderBy_Col0_DESC_NoUsing() throws Exception {
- File tmpFile = genDataSetFile1() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY $0 DESC ;",
+ runTest("myid = order (load 'foo1' using mock.Storage()) BY $0 DESC ;",
new int[] { 0 } ,
new boolean[] { true } ) ;
}
@Test
public void testTopLeveleeOrderBy_Col1_ASC_NoUsing() throws Exception {
- File tmpFile = genDataSetFile1() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY $1 ASC ;",
+ runTest("myid = order (load 'foo1' using mock.Storage()) BY $1 ASC ;",
new int[] { 1 } ,
new boolean[] { false } ) ;
}
@Test
public void testTopLeveleeOrderBy_Col1_DESC_NoUsing() throws Exception {
- File tmpFile = genDataSetFile1() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY $1 DESC ;",
+ runTest("myid = order (load 'foo1' using mock.Storage()) BY $1 DESC ;",
new int[] { 1 } ,
new boolean[] { true } ) ;
}
@Test
public void testTopLeveleeOrderBy_Col0Col1_NoUsing() throws Exception {
- File tmpFile = genDataSetFile2() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY $0, $1 ;",
+ runTest("myid = order (load 'foo2' using mock.Storage()) BY $0, $1 ;",
new int[] { 0, 1 } ,
new boolean[] { false, false } ) ;
}
@@ -93,16 +103,14 @@ public class TestOrderBy2 extends TestCa
@Test
public void testTopLeveleeOrderBy_Col0Col1_DESC_NoUsing() throws Exception {
- File tmpFile = genDataSetFile2() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY $0 DESC, $1 DESC ;",
+ runTest("myid = order (load 'foo2' using mock.Storage()) BY $0 DESC, $1 DESC ;",
new int[] { 0, 1 } ,
new boolean[] { true, true } ) ;
}
@Test
public void testTopLeveleeOrderBy_Col1Col0_NoUsing() throws Exception {
- File tmpFile = genDataSetFile3() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY $1, $0 ;",
+ runTest("myid = order (load 'foo3' using mock.Storage()) BY $1, $0 ;",
new int[] { 1, 0 } ,
new boolean[] { false, false } ) ;
}
@@ -110,35 +118,31 @@ public class TestOrderBy2 extends TestCa
@Test
public void testTopLeveleeOrderBy_Col1Col0_DESC_NoUsing() throws Exception {
- File tmpFile = genDataSetFile3() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY $1 DESC, $0 DESC ;",
+ runTest("myid = order (load 'foo3' using mock.Storage()) BY $1 DESC, $0 DESC ;",
new int[] { 1, 0 } ,
new boolean[] { true, true } ) ;
}
@Test
public void testTopLeveleeOrderBy_Col1Col0_ASCDESC_NoUsing() throws Exception {
- File tmpFile = genDataSetFile3() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY $1 ASC, $0 DESC ;",
+ runTest("myid = order (load 'foo3' using mock.Storage()) BY $1 ASC, $0 DESC ;",
new int[] { 1, 0 } ,
new boolean[] { false, true } ) ;
}
//////////////////////// Star Order Tests ///////////////////////
-
+
@Test
public void testTopLevelOrderBy_Star_NoUsing() throws Exception {
- File tmpFile = genDataSetFile3() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY * ; ",
+ runTest("myid = order (load 'foo3' using mock.Storage()) BY * ; ",
new int[] { 0, 1 } ,
new boolean[] { false, false } ) ;
}
@Test
public void testTopLevelOrderBy_Star_DESC_NoUsing() throws Exception {
- File tmpFile = genDataSetFile3() ;
- runTest("myid = order (load 'file:" + tmpFile + "') BY * DESC ; ",
+ runTest("myid = order (load 'foo3' using mock.Storage()) BY * DESC ; ",
new int[] { 0, 1 } ,
new boolean[] { true, true } ) ;
}
@@ -156,7 +160,7 @@ public class TestOrderBy2 extends TestCa
boolean[] descFlags)
throws ExecException {
- Assert.assertEquals("checkOrder params have to be of the same size",
+ assertEquals("checkOrder params have to be of the same size",
sortCols.length, descFlags.length);
List<String> error = new ArrayList<String>() ;
@@ -202,7 +206,7 @@ public class TestOrderBy2 extends TestCa
lastTuple = current ;
}
- Assert.assertTrue(error.size()==0);
+ assertEquals(0, error.size());
}
@@ -223,58 +227,47 @@ public class TestOrderBy2 extends TestCa
/***
* For generating a sample dataset
*/
- private File genDataSetFile1() throws IOException {
-
+ private List<Tuple> genDataSetFile1() throws IOException {
int dataLength = 256;
- String[][] data = new String[dataLength][] ;
+ List<Tuple> tuples = Lists.newArrayList();
DecimalFormat formatter = new DecimalFormat("0000000");
-
for (int i = 0; i < dataLength; i++) {
- data[i] = new String[2] ;
- data[i][0] = formatter.format(i);
- data[i][1] = formatter.format(dataLength - i - 1);
+ tuples.add(tuple(formatter.format(i), formatter.format(dataLength - i - 1)));
}
- return TestHelper.createTempFile(data) ;
+ return tuples;
}
/***
* For generating a sample dataset
*/
- private File genDataSetFile2() throws IOException {
-
+ private List<Tuple> genDataSetFile2() throws IOException {
int dataLength = 256;
- String[][] data = new String[dataLength][] ;
+ List<Tuple> tuples = Lists.newArrayList();
DecimalFormat formatter = new DecimalFormat("0000000");
-
for (int i = 0; i < dataLength; i++) {
- data[i] = new String[2] ;
- data[i][0] = formatter.format(i % 20);
- data[i][1] = formatter.format(dataLength - i - 1);
+ tuples.add(tuple(formatter.format(i % 20), formatter.format(dataLength - i - 1)));
}
- return TestHelper.createTempFile(data) ;
+ return tuples;
}
/***
* For generating a sample dataset
*/
- private File genDataSetFile3() throws IOException {
+ private List<Tuple> genDataSetFile3() throws IOException {
int dataLength = 256;
- String[][] data = new String[dataLength][] ;
+ List<Tuple> tuples = Lists.newArrayList();
DecimalFormat formatter = new DecimalFormat("0000000");
-
for (int i = 0; i < dataLength; i++) {
- data[i] = new String[2] ;
- data[i][0] = formatter.format(i);
- data[i][1] = formatter.format(i % 20);
+ tuples.add(tuple(formatter.format(i), formatter.format(i % 20)));
}
- return TestHelper.createTempFile(data) ;
+ return tuples;
}
-}
+}
\ No newline at end of file
Modified: pig/trunk/test/org/apache/pig/test/TestOrderBy3.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestOrderBy3.java?rev=1406469&r1=1406468&r2=1406469&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestOrderBy3.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestOrderBy3.java Wed Nov 7 05:58:04 2012
@@ -19,41 +19,27 @@ package org.apache.pig.test;
import static org.apache.pig.builtin.mock.Storage.resetData;
import static org.apache.pig.builtin.mock.Storage.tuple;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
-import java.util.List;
import java.util.Random;
-import junit.framework.TestCase;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.pig.ExecType;
import org.apache.pig.PigServer;
-import org.apache.pig.backend.executionengine.ExecException;
import org.apache.pig.builtin.mock.Storage.Data;
import org.apache.pig.data.DataType;
import org.apache.pig.data.Tuple;
-import org.apache.pig.data.TupleFactory;
-import org.apache.pig.impl.io.FileLocalizer;
+import org.apache.pig.impl.logicalLayer.schema.Schema;
import org.apache.pig.test.utils.GenRandomData;
-import org.junit.After;
-import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-@RunWith(JUnit4.class)
-public class TestOrderBy3 extends TestCase {
+public class TestOrderBy3 {
private final Log log = LogFactory.getLog(getClass());
private static PigServer pigServer;
@@ -61,46 +47,30 @@ public class TestOrderBy3 extends TestCa
private static final int MAX = 10;
- private PigServer pig;
-
- @Override
@Before
public void setUp() throws Exception {
ArrayList<Tuple> tuples = new ArrayList<Tuple>();
- try {
- log.info("Setting up");
+ log.info("Setting up");
- pigServer = new PigServer("local");
- data = resetData(pigServer);
+ pigServer = new PigServer(ExecType.LOCAL);
+ data = resetData(pigServer);
- Random r = new Random();
- for (int i = 0; i < MAX; i++) {
- tuples.add(tuple(i,GenRandomData.genRandString(r)));
- }
-
- data.set("test", tuples);
-
- } catch (ExecException e) {
- IOException ioe = new IOException("Failed to create Pig Server");
- ioe.initCause(e);
- throw ioe;
+ Random r = new Random();
+ for (int i = 0; i < MAX; i++) {
+ tuples.add(tuple(i,GenRandomData.genRandString(r)));
}
- }
- @Override
- @After
- public void tearDown() throws Exception {
- }
-
- @AfterClass
- public static void oneTimeTearDown() throws Exception {
+ Schema s = new Schema();
+ s.add(new Schema.FieldSchema("index", DataType.INTEGER));
+ s.add(new Schema.FieldSchema("name", DataType.CHARARRAY));
+ data.set("test", s, tuples);
}
public void testNames(boolean ascOrdering) throws Exception {
String order = (ascOrdering) ? "ASC" : "DESC";
- String query = "A = load 'test' USING mock.Storage() as (index:int, name:chararray);" +
+ String query = "A = load 'test' USING mock.Storage();" +
"B = order A by name " + order + ";" +
"store B into 'result' using mock.Storage();";
@@ -126,7 +96,7 @@ public class TestOrderBy3 extends TestCa
System.out.println("RESULT: " + value1 + "," + value2 + " = "
+ comparision);
- assertEquals(true, resultComparision);
+ assertTrue(resultComparision);
if(!it.hasNext()) break;
@@ -139,7 +109,7 @@ public class TestOrderBy3 extends TestCa
String order = (ascOrdering) ? "ASC" : "DESC";
- String query = "A = load 'test' USING mock.Storage() as (index:int, name:chararray);" +
+ String query = "A = load 'test' USING mock.Storage();" +
"B = order A by index " + order + ";" +
"store B into 'result' using mock.Storage();";
@@ -147,7 +117,6 @@ public class TestOrderBy3 extends TestCa
Iterator<Tuple> it = data.get("result").iterator();
-
int toCompare, value;
for (int i = 0; i < MAX; i++) {
@@ -183,5 +152,4 @@ public class TestOrderBy3 extends TestCa
public void testValuesDESC() throws Exception {
testNames(false);
}
-
-}
+}
\ No newline at end of file
Modified: pig/trunk/test/org/apache/pig/test/TestPOBinCond.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestPOBinCond.java?rev=1406469&r1=1406468&r2=1406469&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestPOBinCond.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestPOBinCond.java Wed Nov 7 05:58:04 2012
@@ -17,13 +17,18 @@
*/
package org.apache.pig.test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
import java.util.Iterator;
import java.util.Random;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.PrintStream;
import org.apache.pig.backend.executionengine.ExecException;
+import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.ConstantExpression;
+import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.EqualToExpr;
+import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POBinCond;
+import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject;
+import org.apache.pig.backend.hadoop.executionengine.physicalLayer.plans.PhysicalPlan;
import org.apache.pig.data.BagFactory;
import org.apache.pig.data.DataBag;
import org.apache.pig.data.DataType;
@@ -31,21 +36,14 @@ import org.apache.pig.data.DefaultBagFac
import org.apache.pig.data.Tuple;
import org.apache.pig.data.TupleFactory;
import org.apache.pig.impl.plan.OperatorKey;
-import org.apache.pig.backend.hadoop.executionengine.physicalLayer.plans.PhysicalPlan;
-import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.ConstantExpression;
-import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.ExpressionOperator;
-import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POBinCond;
-import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject;
-import org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.EqualToExpr;
import org.apache.pig.impl.plan.PlanException;
import org.apache.pig.test.utils.GenPhyOp;
import org.joda.time.DateTime;
import org.junit.Before;
+import org.junit.Test;
-import junit.framework.TestCase;
-
-public class TestPOBinCond extends TestCase {
- Random r = new Random();
+public class TestPOBinCond {
+ Random r = new Random(42L);
DataBag bag = BagFactory.getInstance().newDefaultBag();
DataBag bagDefault = BagFactory.getInstance().newDefaultBag();
DataBag bagWithNull = BagFactory.getInstance().newDefaultBag();
@@ -56,26 +54,24 @@ public class TestPOBinCond extends TestC
/***
* POBinCondition tests
- *
+ *
* (r1, 1, 0 )
* (r2, 1, 0 )
* (r3, 1, 0 )
* ...
* (rn, 1, 0 )
- *
+ *
* where r is a random number ( r1 .. rn )
- *
+ *
* The POBinCondition to test is: Integer(result)= ( r == 1 )? Ingeger(1), Ingeger(0);
* but the condition can be of any datatype: Interger, Float, Double...
- *
+ *
* @throws ExecException
*/
-
+
@Before
- @Override
public void setUp() {
-
- //default bag as shown above
+ //default bag as shown above
for(int i = 0; i < 10; i ++) {
Tuple t = TupleFactory.getInstance().newTuple();
t.append(r.nextInt(2));
@@ -83,13 +79,12 @@ public class TestPOBinCond extends TestC
t.append(0);
bagDefault.add(t);
}
-
+
//same as default bag but contains nulls
for(int i = 0; i < 10; i ++) {
Tuple t = TupleFactory.getInstance().newTuple();
if (r.nextInt(4)%3 == 0){
- t.append(null);
-
+ t.append(null);
}else{
t.append(r.nextInt(2));
}
@@ -98,36 +93,35 @@ public class TestPOBinCond extends TestC
bagWithNull.add(t);
}
-
- //r is a boolean
+
+ //r is a boolean
for(int i = 0; i < 10; i ++) {
Tuple t = TupleFactory.getInstance().newTuple();
if (r.nextInt(2)%2 == 0 ){
- t.append(true);
+ t.append(true);
} else {
- t.append(false);
+ t.append(false);
}
t.append(1);
t.append(0);
bagWithBoolean.add(t);
+ }
- }
-
//r is a boolean with nulls
for(int i = 0; i < 10; i ++) {
Tuple t = TupleFactory.getInstance().newTuple();
if (r.nextInt(3)%2 == 0){
-
- t.append(null);
-
+
+ t.append(null);
+
}else{
-
- if (r.nextInt(2)%2 == 0 ){
- t.append(true);
- } else {
- t.append(false);
- }
+
+ if (r.nextInt(2)%2 == 0 ){
+ t.append(true);
+ } else {
+ t.append(false);
+ }
}
t.append(1);
@@ -136,35 +130,35 @@ public class TestPOBinCond extends TestC
}
-
+
}
-
+
/* ORIGINAL TEST
public void testPOBinCond() throws ExecException, PlanException {
ConstantExpression rt = (ConstantExpression) GenPhyOp.exprConst();
rt.setValue(1);
rt.setResultType(DataType.INTEGER);
-
+
POProject prj1 = GenPhyOp.exprProject();
prj1.setColumn(0);
prj1.setResultType(DataType.INTEGER);
-
+
EqualToExpr equal = (EqualToExpr) GenPhyOp.compEqualToExpr();
equal.setLhs(prj1);
equal.setRhs(rt);
equal.setOperandType(DataType.INTEGER);
-
+
POProject prjLhs = GenPhyOp.exprProject();
prjLhs.setResultType(DataType.INTEGER);
prjLhs.setColumn(1);
-
+
POProject prjRhs = GenPhyOp.exprProject();
prjRhs.setResultType(DataType.INTEGER);
prjRhs.setColumn(2);
-
+
POBinCond op = new POBinCond(new OperatorKey("", r.nextLong()), -1, equal, prjLhs, prjRhs);
op.setResultType(DataType.INTEGER);
-
+
PhysicalPlan plan = new PhysicalPlan();
plan.add(op);
plan.add(prjLhs);
@@ -173,12 +167,12 @@ public class TestPOBinCond extends TestC
plan.connect(equal, op);
plan.connect(prjLhs, op);
plan.connect(prjRhs, op);
-
+
plan.add(prj1);
plan.add(rt);
plan.connect(prj1, equal);
plan.connect(rt, equal);
-
+
for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
Tuple t = it.next();
plan.attachInput(t);
@@ -186,11 +180,12 @@ public class TestPOBinCond extends TestC
assertEquals(1, i | (Integer)op.getNext(i).result);
// System.out.println(t + " " + op.getNext(i).result.toString());
}
-
-
+
+
}
*/
-
+
+ @Test
public void testPOBinCondWithBoolean() throws ExecException, PlanException {
bag = getBag(DataType.BOOLEAN);
TestPoBinCondHelper testHelper = new TestPoBinCondHelper(
@@ -208,13 +203,13 @@ public class TestPOBinCond extends TestC
}
}
+ @Test
public void testPOBinCondWithInteger() throws ExecException, PlanException {
-
- bag= getBag(DataType.INTEGER);
- TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.INTEGER, new Integer(1) );
-
- for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
- Tuple t = it.next();
+
+ bag= getBag(DataType.INTEGER);
+ TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.INTEGER, new Integer(1) );
+
+ for (Tuple t : bag) {
testHelper.getPlan().attachInput(t);
Integer value = (Integer) t.get(0);
int expected = (value.intValue() == 1)? 1:0 ;
@@ -224,13 +219,13 @@ public class TestPOBinCond extends TestC
}
}
-
+
+ @Test
public void testPOBinCondWithLong() throws ExecException, PlanException {
- bag= getBag(DataType.LONG);
- TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.LONG, new Long(1L) );
-
- for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
- Tuple t = it.next();
+ bag= getBag(DataType.LONG);
+ TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.LONG, new Long(1L) );
+
+ for (Tuple t : bag) {
testHelper.getPlan().attachInput(t);
Long value = (Long) t.get(0);
int expected = (value.longValue() == 1L )? 1:0 ;
@@ -241,48 +236,49 @@ public class TestPOBinCond extends TestC
}
}
+ @Test
public void testPOBinCondWithFloat() throws ExecException, PlanException {
-
- bag= getBag(DataType.FLOAT);
- TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.FLOAT, new Float(1.0f) );
-
- for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
- Tuple t = it.next();
- testHelper.getPlan().attachInput(t);
- Float value = (Float) t.get(0);
- int expected = (value.floatValue() == 1.0f )? 1:0 ;
- Integer dummy = new Integer(0);
- Integer result=(Integer)testHelper.getOperator().getNext(dummy).result;
- int actual = result.intValue();
- assertEquals( expected, actual );
- }
- }
-
+ bag= getBag(DataType.FLOAT);
+ TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.FLOAT, new Float(1.0f) );
+
+ for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
+ Tuple t = it.next();
+ testHelper.getPlan().attachInput(t);
+ Float value = (Float) t.get(0);
+ int expected = (value.floatValue() == 1.0f )? 1:0 ;
+ Integer dummy = new Integer(0);
+ Integer result=(Integer)testHelper.getOperator().getNext(dummy).result;
+ int actual = result.intValue();
+ assertEquals( expected, actual );
+ }
+
+ }
+
+ @Test
public void testPOBinCondWithDouble() throws ExecException, PlanException {
-
- bag= getBag(DataType.DOUBLE);
- TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.DOUBLE, new Double(1.0) );
-
- for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
- Tuple t = it.next();
- testHelper.getPlan().attachInput(t);
- Double value = (Double) t.get(0);
- int expected = (value.doubleValue() == 1.0 )? 1:0 ;
- Integer dummy = new Integer(0);
- Integer result=(Integer)testHelper.getOperator().getNext(dummy).result;
- int actual = result.intValue();
- assertEquals( expected, actual );
- }
+
+ bag= getBag(DataType.DOUBLE);
+ TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.DOUBLE, new Double(1.0) );
+
+ for (Tuple t : bag) {
+ testHelper.getPlan().attachInput(t);
+ Double value = (Double) t.get(0);
+ int expected = (value.doubleValue() == 1.0 )? 1:0 ;
+ Integer dummy = new Integer(0);
+ Integer result=(Integer)testHelper.getOperator().getNext(dummy).result;
+ int actual = result.intValue();
+ assertEquals( expected, actual );
+ }
}
+ @Test
public void testPOBinCondWithDateTime() throws ExecException, PlanException {
bag= getBag(DataType.DATETIME);
TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.DATETIME, new DateTime(1L) );
-
- for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
- Tuple t = it.next();
+
+ for (Tuple t : bag) {
testHelper.getPlan().attachInput(t);
DateTime value = (DateTime) t.get(0);
int expected = value.equals(new DateTime(1L))? 1:0 ;
@@ -293,13 +289,13 @@ public class TestPOBinCond extends TestC
}
}
+ @Test
public void testPOBinCondIntWithNull() throws ExecException, PlanException {
-
- bag= getBagWithNulls(DataType.INTEGER);
- TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.INTEGER, new Integer(1) );
-
- for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
- Tuple t = it.next();
+
+ bag= getBagWithNulls(DataType.INTEGER);
+ TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.INTEGER, new Integer(1) );
+
+ for (Tuple t : bag) {
testHelper.getPlan().attachInput(t);
Integer value = null;
Integer result;
@@ -317,86 +313,86 @@ public class TestPOBinCond extends TestC
actual = result.intValue();
assertEquals(expected, actual);
} else {
- assertEquals(null, result);
+ assertNull(result);
}
-
+
}
}
-
+
+ @Test
public void testPOBinCondLongWithNull() throws ExecException, PlanException {
-
- bag= getBagWithNulls(DataType.LONG);
- TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.LONG, new Long(1L) );
-
- for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
- Tuple t = it.next();
- testHelper.getPlan().attachInput(t);
-
- Long value=null;
- if ( t.get(0)!=null){
- value = (Long) t.get(0);
- }
- Integer dummy = new Integer(0);
- Integer result=(Integer)testHelper.getOperator().getNext(dummy).result;
- int expected;
- int actual;
- if ( value!=null ) {
- expected=(value.intValue() == 1)? 1:0 ;
- actual = result.intValue();
- assertEquals( expected, actual );
- } else {
- assertEquals( null, result );
- }
- }
- }
-
+
+ bag= getBagWithNulls(DataType.LONG);
+ TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.LONG, new Long(1L) );
+
+ for (Tuple t : bag) {
+ testHelper.getPlan().attachInput(t);
+
+ Long value=null;
+ if ( t.get(0)!=null){
+ value = (Long) t.get(0);
+ }
+ Integer dummy = new Integer(0);
+ Integer result=(Integer)testHelper.getOperator().getNext(dummy).result;
+ int expected;
+ int actual;
+ if ( value!=null ) {
+ expected=(value.intValue() == 1)? 1:0 ;
+ actual = result.intValue();
+ assertEquals( expected, actual );
+ } else {
+ assertNull(result);
+ }
+ }
+ }
+
+ @Test
public void testPOBinCondDoubleWithNull() throws ExecException, PlanException {
-
- bag= getBagWithNulls(DataType.DOUBLE);
- TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.DOUBLE, new Double(1.0) );
-
- for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
- Tuple t = it.next();
- testHelper.getPlan().attachInput(t);
-
- Double value=null;
- if ( t.get(0)!=null){
- value = (Double) t.get(0);
- }
- Integer dummy = new Integer(0);
- Integer result=(Integer)testHelper.getOperator().getNext(dummy).result;
-
- int expected;
- int actual;
- if ( value!=null ) {
- expected=(value.intValue() == 1)? 1:0 ;
- actual = result.intValue();
- assertEquals( expected, actual );
- } else {
- assertEquals( null, result );
- }
-
- }
+ bag= getBagWithNulls(DataType.DOUBLE);
+ TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.DOUBLE, new Double(1.0) );
+
+ for (Tuple t : bag) {
+ testHelper.getPlan().attachInput(t);
+
+ Double value=null;
+ if ( t.get(0)!=null){
+ value = (Double) t.get(0);
+ }
+ Integer dummy = new Integer(0);
+ Integer result=(Integer)testHelper.getOperator().getNext(dummy).result;
+
+ int expected;
+ int actual;
+ if ( value!=null ) {
+ expected=(value.intValue() == 1)? 1:0 ;
+ actual = result.intValue();
+ assertEquals( expected, actual );
+ } else {
+ assertNull(result);
+ }
+
+
+ }
- }
+ }
+ @Test
public void testPOBinCondDateTimeWithNull() throws ExecException, PlanException {
-
+
bag= getBagWithNulls(DataType.DATETIME);
TestPoBinCondHelper testHelper= new TestPoBinCondHelper(DataType.DATETIME, new DateTime(1L) );
- for(Iterator<Tuple> it = bag.iterator(); it.hasNext(); ) {
- Tuple t = it.next();
+ for (Tuple t : bag) {
testHelper.getPlan().attachInput(t);
-
+
DateTime value=null;
if ( t.get(0)!=null){
value = (DateTime) t.get(0);
}
Integer dummy = new Integer(0);
- Integer result=(Integer)testHelper.getOperator().getNext(dummy).result;
+ Integer result=(Integer)testHelper.getOperator().getNext(dummy).result;
int expected;
int actual;
if ( value!=null ) {
@@ -404,78 +400,78 @@ public class TestPOBinCond extends TestC
actual = result.intValue();
assertEquals( expected, actual );
} else {
- assertEquals( null, result );
+ assertNull(result);
}
}
}
-
+
protected class TestPoBinCondHelper {
-
- PhysicalPlan plan= null;
- POBinCond op= null;
-
-
- public <U> TestPoBinCondHelper( byte type, U value ) throws ExecException, PlanException {
-
-
- ConstantExpression rt = (ConstantExpression) GenPhyOp.exprConst();
- rt.setValue(value);
- rt.setResultType(type);
-
- POProject prj1 = GenPhyOp.exprProject();
- prj1.setColumn(0);
- prj1.setResultType(type);
-
-
- EqualToExpr equal = (EqualToExpr) GenPhyOp.compEqualToExpr();
- equal.setLhs(prj1);
- equal.setRhs(rt);
- equal.setOperandType(type);
-
- POProject prjLhs = GenPhyOp.exprProject();
- prjLhs.setResultType(DataType.INTEGER);
- prjLhs.setColumn(1);
-
- POProject prjRhs =prjRhs = GenPhyOp.exprProject();
- prjRhs.setResultType(DataType.INTEGER);
- prjRhs.setColumn(2);
-
- op = new POBinCond(new OperatorKey("", r.nextLong()), -1, equal, prjLhs, prjRhs);
- op.setResultType(DataType.INTEGER);
-
- plan= new PhysicalPlan();
- plan.add(op);
- plan.add(prjLhs);
- plan.add(prjRhs);
- plan.add(equal);
- plan.connect(equal, op);
- plan.connect(prjLhs, op);
- plan.connect(prjRhs, op);
-
- plan.add(prj1);
- plan.add(rt);
- plan.connect(prj1, equal);
- plan.connect(rt, equal);
-
- // File tmpFile = File.createTempFile("test", ".txt" );
- //PrintStream ps = new PrintStream(new FileOutputStream(tmpFile));
- //plan.explain(ps);
- //ps.close();
-
- }
-
- public PhysicalPlan getPlan(){
- return plan;
- }
-
-
- public POBinCond getOperator(){
- return op;
- }
+ PhysicalPlan plan= null;
+ POBinCond op= null;
+
+
+ public <U> TestPoBinCondHelper( byte type, U value ) throws ExecException, PlanException {
+
+
+ ConstantExpression rt = (ConstantExpression) GenPhyOp.exprConst();
+ rt.setValue(value);
+ rt.setResultType(type);
+
+ POProject prj1 = GenPhyOp.exprProject();
+ prj1.setColumn(0);
+ prj1.setResultType(type);
+
+
+ EqualToExpr equal = (EqualToExpr) GenPhyOp.compEqualToExpr();
+ equal.setLhs(prj1);
+ equal.setRhs(rt);
+ equal.setOperandType(type);
+
+ POProject prjLhs = GenPhyOp.exprProject();
+ prjLhs.setResultType(DataType.INTEGER);
+ prjLhs.setColumn(1);
+
+ POProject prjRhs =prjRhs = GenPhyOp.exprProject();
+ prjRhs.setResultType(DataType.INTEGER);
+ prjRhs.setColumn(2);
+
+ op = new POBinCond(new OperatorKey("", r.nextLong()), -1, equal, prjLhs, prjRhs);
+ op.setResultType(DataType.INTEGER);
+
+ plan= new PhysicalPlan();
+ plan.add(op);
+ plan.add(prjLhs);
+ plan.add(prjRhs);
+ plan.add(equal);
+ plan.connect(equal, op);
+ plan.connect(prjLhs, op);
+ plan.connect(prjRhs, op);
+
+ plan.add(prj1);
+ plan.add(rt);
+ plan.connect(prj1, equal);
+ plan.connect(rt, equal);
+
+ // File tmpFile = File.createTempFile("test", ".txt" );
+ //PrintStream ps = new PrintStream(new FileOutputStream(tmpFile));
+ //plan.explain(ps);
+ //ps.close();
+
+ }
+
+ public PhysicalPlan getPlan(){
+ return plan;
+ }
+
+
+ public POBinCond getOperator(){
+ return op;
+ }
+
+
+ }
- }
-
private DataBag getBag(byte type) {
DataBag bag = DefaultBagFactory.getInstance().newDefaultBag();
for(int i = 0; i < 10; i ++) {
@@ -503,16 +499,16 @@ public class TestPOBinCond extends TestC
t.append(1);
t.append(0);
bag.add(t);
- }
- return bag;
+ }
+ return bag;
}
-
+
private DataBag getBagWithNulls(byte type) {
DataBag bag = DefaultBagFactory.getInstance().newDefaultBag();
for(int i = 0; i < 10; i ++) {
Tuple t = TupleFactory.getInstance().newTuple();
if (r.nextInt(4)%3 == 0){
- t.append(null);
+ t.append(null);
}else{
switch(type) {
case DataType.BOOLEAN:
@@ -521,7 +517,7 @@ public class TestPOBinCond extends TestC
case DataType.INTEGER:
t.append(r.nextInt(2));
break;
- case DataType.LONG:
+ case DataType.LONG:
t.append(r.nextLong() % 2L);
break;
case DataType.FLOAT:
@@ -534,7 +530,7 @@ public class TestPOBinCond extends TestC
t.append(new DateTime(r.nextLong() % 2L));
break;
}
- }
+ }
t.append(1);
t.append(0);
bag.add(t);
Modified: pig/trunk/test/org/apache/pig/test/TestPODistinct.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestPODistinct.java?rev=1406469&r1=1406468&r2=1406469&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestPODistinct.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestPODistinct.java Wed Nov 7 05:58:04 2012
@@ -18,44 +18,36 @@
package org.apache.pig.test;
+import static org.junit.Assert.assertEquals;
+
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random;
-import junit.framework.TestCase;
-
import org.apache.pig.backend.executionengine.ExecException;
+import org.apache.pig.backend.hadoop.executionengine.physicalLayer.POStatus;
+import org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator;
+import org.apache.pig.backend.hadoop.executionengine.physicalLayer.Result;
+import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.PODistinct;
import org.apache.pig.data.BagFactory;
import org.apache.pig.data.DataBag;
import org.apache.pig.data.Tuple;
import org.apache.pig.data.TupleFactory;
import org.apache.pig.impl.plan.OperatorKey;
-import org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator;
-import org.apache.pig.backend.hadoop.executionengine.physicalLayer.POStatus;
-import org.apache.pig.backend.hadoop.executionengine.physicalLayer.Result;
-import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.PODistinct;
-import org.apache.pig.test.PORead;
-import org.junit.Before;
import org.junit.Test;
-public class TestPODistinct extends TestCase {
- DataBag input = BagFactory.getInstance().newDefaultBag();
+public class TestPODistinct {
+ DataBag input = BagFactory.getInstance().newDefaultBag();
Random r = new Random();
final int MAX_VALUE = 10;
final int MAX_SAMPLES = 100;
- @Before
- public void setUp() {
- // System.out.println();
- }
-
-
@Test
public void testPODistictWithInt() throws ExecException {
-
- input = BagFactory.getInstance().newDefaultBag();
+
+ input = BagFactory.getInstance().newDefaultBag();
TupleFactory tf = TupleFactory.getInstance();
for (int i = 0; i < MAX_SAMPLES; i++) {
Tuple t = tf.newTuple();
@@ -64,12 +56,13 @@ public class TestPODistinct extends Test
// System.out.println(t);
}
- confirmDistinct();
+ confirmDistinct();
}
+ @Test
public void testPODistictWithNullValues() throws ExecException {
-
- input = BagFactory.getInstance().newDefaultBag();
+
+ input = BagFactory.getInstance().newDefaultBag();
TupleFactory tf = TupleFactory.getInstance();
for (int i = 0; i < MAX_SAMPLES; i++) {
Tuple t = tf.newTuple();
@@ -78,12 +71,13 @@ public class TestPODistinct extends Test
// System.out.println(t);
}
- confirmDistinct();
+ confirmDistinct();
}
-
+
+ @Test
public void testPODistictWithIntAndNullValues() throws ExecException {
-
- input = BagFactory.getInstance().newDefaultBag();
+
+ input = BagFactory.getInstance().newDefaultBag();
TupleFactory tf = TupleFactory.getInstance();
for (int i = 0; i < MAX_SAMPLES; i++) {
Tuple t = tf.newTuple();
@@ -95,12 +89,13 @@ public class TestPODistinct extends Test
// System.out.println(t);
}
- confirmDistinct();
+ confirmDistinct();
}
-
+
+ @Test
public void testPODistictWithIntNullValues() throws ExecException {
-
- input = BagFactory.getInstance().newDefaultBag();
+
+ input = BagFactory.getInstance().newDefaultBag();
TupleFactory tf = TupleFactory.getInstance();
for (int i = 0; i < MAX_SAMPLES; i++) {
Tuple t = tf.newTuple();
@@ -110,11 +105,13 @@ public class TestPODistinct extends Test
// System.out.println(t);
}
- confirmDistinct();
+ confirmDistinct();
}
+
+ @Test
public void testPODistictWithNullIntValues() throws ExecException {
-
- input = BagFactory.getInstance().newDefaultBag();
+
+ input = BagFactory.getInstance().newDefaultBag();
TupleFactory tf = TupleFactory.getInstance();
for (int i = 0; i < MAX_SAMPLES; i++) {
Tuple t = tf.newTuple();
@@ -124,17 +121,18 @@ public class TestPODistinct extends Test
// System.out.println(t);
}
- confirmDistinct();
+ confirmDistinct();
}
-
+
+ @Test
public void testPODistictArityWithNullValues() throws ExecException {
-
- input = BagFactory.getInstance().newDefaultBag();
+
+ input = BagFactory.getInstance().newDefaultBag();
TupleFactory tf = TupleFactory.getInstance();
for (int i = 0; i < MAX_SAMPLES; i++) {
Tuple t = tf.newTuple();
if ( r.nextInt(MAX_VALUE) % 3 == 0 ){
- t.append(null);
+ t.append(null);
}
t.append(r.nextInt(MAX_VALUE));
t.append(r.nextInt(MAX_VALUE));
@@ -142,35 +140,35 @@ public class TestPODistinct extends Test
// System.out.println(t);
}
- confirmDistinct();
+ confirmDistinct();
}
public void confirmDistinct() throws ExecException {
-
- PORead read = new PORead(new OperatorKey("", r.nextLong()), input);
- List<PhysicalOperator> inputs = new LinkedList<PhysicalOperator>();
- inputs.add(read);
- PODistinct distinct = new PODistinct(new OperatorKey("", r.nextLong()),
- -1, inputs);
- Map<Tuple, Integer> output = new HashMap<Tuple, Integer>();
- Tuple t = null;
- Result res = distinct.getNext(t);
- t = (Tuple) res.result;
- while (res.returnStatus != POStatus.STATUS_EOP) {
- if (output.containsKey(t)) {
- int i = output.get(t);
- output.put(t, ++i);
- } else {
- output.put(t, 1);
- }
- res = distinct.getNext(t);
- t = (Tuple) res.result;
- }
- for (Map.Entry<Tuple, Integer> e : output.entrySet()) {
- int i = e.getValue();
- // System.out.println(e.getKey());
- assertEquals(1, i);
- }
+
+ PORead read = new PORead(new OperatorKey("", r.nextLong()), input);
+ List<PhysicalOperator> inputs = new LinkedList<PhysicalOperator>();
+ inputs.add(read);
+ PODistinct distinct = new PODistinct(new OperatorKey("", r.nextLong()),
+ -1, inputs);
+ Map<Tuple, Integer> output = new HashMap<Tuple, Integer>();
+ Tuple t = null;
+ Result res = distinct.getNext(t);
+ t = (Tuple) res.result;
+ while (res.returnStatus != POStatus.STATUS_EOP) {
+ if (output.containsKey(t)) {
+ int i = output.get(t);
+ output.put(t, ++i);
+ } else {
+ output.put(t, 1);
+ }
+ res = distinct.getNext(t);
+ t = (Tuple) res.result;
+ }
+ for (Map.Entry<Tuple, Integer> e : output.entrySet()) {
+ int i = e.getValue();
+ // System.out.println(e.getKey());
+ assertEquals(1, i);
+ }
}
}