You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ju...@apache.org on 2012/08/23 22:30:43 UTC
svn commit: r1376682 - in /pig/trunk: CHANGES.txt
test/org/apache/pig/test/TestBuiltInBagToTupleOrString.java
Author: julien
Date: Thu Aug 23 20:30:42 2012
New Revision: 1376682
URL: http://svn.apache.org/viewvc?rev=1376682&view=rev
Log:
PIG-2848: TestBuiltInBagToTupleOrString fails now that mock.Storage enforces not overwriting output (julien)
Modified:
pig/trunk/CHANGES.txt
pig/trunk/test/org/apache/pig/test/TestBuiltInBagToTupleOrString.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1376682&r1=1376681&r2=1376682&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Thu Aug 23 20:30:42 2012
@@ -242,6 +242,8 @@ OPTIMIZATIONS
BUG FIXES
+PIG-2848: TestBuiltInBagToTupleOrString fails now that mock.Storage enforces not overwriting output (julien)
+
PIG-2884: JobControlCompiler mis-logs after reducer estimation (billgraham)
PIG-2876: Bump up Xerces version (jcoveney)
Modified: pig/trunk/test/org/apache/pig/test/TestBuiltInBagToTupleOrString.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/test/TestBuiltInBagToTupleOrString.java?rev=1376682&r1=1376681&r2=1376682&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/test/TestBuiltInBagToTupleOrString.java (original)
+++ pig/trunk/test/org/apache/pig/test/TestBuiltInBagToTupleOrString.java Thu Aug 23 20:30:42 2012
@@ -40,11 +40,11 @@ import static org.apache.pig.builtin.moc
import org.junit.Test;
/**
- *
+ *
* Test cases for BagToTuple and BagToString UDFs
- *
+ *
* @author hluu
- *
+ *
*/
public class TestBuiltInBagToTupleOrString {
private BagFactory bf = BagFactory.getInstance();
@@ -58,7 +58,7 @@ public class TestBuiltInBagToTupleOrStri
Tuple output = udf.exec(udfInput);
assertNull(output);
}
-
+
@Test
public void testBasicBagToTupleUDF() throws Exception {
@@ -202,12 +202,12 @@ public class TestBuiltInBagToTupleOrStri
// input contains tuple instead of bag
udfInput.set(0, tf.newTuple());
BagToTuple udf = new BagToTuple();
-
+
// expecting an exception because the input if of type Tuple, not DataBag
udf.exec(udfInput);
}
-
+
@Test
public void testNullInputBagToStringUDF() throws Exception {
BagToString udf = new BagToString();
@@ -216,7 +216,7 @@ public class TestBuiltInBagToTupleOrStri
String output = udf.exec(udfInput);
assertNull(output);
}
-
+
@Test(expected=org.apache.pig.backend.executionengine.ExecException.class)
public void testInvalidInputForBagToStringUDF() throws Exception {
TupleFactory tf = TupleFactory.getInstance();
@@ -224,7 +224,7 @@ public class TestBuiltInBagToTupleOrStri
// input contains tuple instead of bag
udfInput.set(0, tf.newTuple());
BagToString udf = new BagToString();
-
+
// expecting an exception because the input if of type Tuple, not DataBag
udf.exec(udfInput);
}
@@ -253,7 +253,7 @@ public class TestBuiltInBagToTupleOrStri
assertEquals("a_5_c_6", result);
}
-
+
@Test
public void testBasicBagToStringUDF() throws Exception {
BagFactory bf = BagFactory.getInstance();
@@ -307,25 +307,25 @@ public class TestBuiltInBagToTupleOrStri
udfInput.set(0, inputBag);
udfInput.set(1, "_");
String result = udf.exec(udfInput);
-
+
assertEquals("a_5_c_6_(d,7)", result);
}
-
+
@Test
public void testNestedDataElementsForBagToStringUDF() throws Exception {
DataBag inputBag = buildBagWithNestedTupleAndBag();
-
+
BagToString udf = new BagToString();
Tuple udfInput = tf.newTuple(2);
udfInput.set(0, inputBag);
udfInput.set(1, "*");
-
+
String result = udf.exec(udfInput);
assertEquals("a*5*c*6*(d,7)*{(in bag,10)}", result);
}
-
+
@Test(expected=java.lang.RuntimeException.class)
public void testInvalidZeroInputToOutputSchemaForBagToTupleStringUDF() throws Exception {
@@ -337,9 +337,9 @@ public class TestBuiltInBagToTupleOrStri
assertEquals("schema of BagToTuple input", outputSchema.getField(0).type,
DataType.CHARARRAY);
-
+
}
-
+
@Test
public void testOutputSchemaForBagToTupleStringUDF() throws Exception {
@@ -360,9 +360,9 @@ public class TestBuiltInBagToTupleOrStri
assertEquals("schema of BagToTuple input", outputSchema.getField(0).type,
DataType.CHARARRAY);
-
+
}
-
+
@Test
public void testOutputSchemaWithDefaultDelimiterForBagToTupleStringUDF() throws Exception {
@@ -382,9 +382,9 @@ public class TestBuiltInBagToTupleOrStri
assertEquals("schema of BagToTuple input", outputSchema.getField(0).type,
DataType.CHARARRAY);
-
+
}
-
+
@Test(expected=java.lang.RuntimeException.class)
public void testInvalidOutputSchemaForBagToTupleStringUDF() throws Exception {
@@ -404,17 +404,17 @@ public class TestBuiltInBagToTupleOrStri
// expecting an exception because the delimiter is not of type Data.CHARARRAY
udf.outputSchema(inputSch);
}
-
+
@Test
public void testPigScriptForBagToTupleUDF() throws Exception {
PigServer pigServer = new PigServer(ExecType.LOCAL);
Data data = resetData(pigServer);
-
+
// bag of chararray
data.set("foo", "myBag:bag{t:(l:chararray)}",
tuple(bag(tuple("a"), tuple("b"), tuple("c"))));
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage();");
- pigServer.registerQuery("B = FOREACH A GENERATE BagToTuple(myBag) as myBag;");
+ pigServer.registerQuery("B = FOREACH A GENERATE BagToTuple(myBag) as myBag;");
pigServer.registerQuery("STORE B INTO 'bar' USING mock.Storage();");
assertEquals(schema("myBag:(l:chararray)"), data.getSchema("bar"));
@@ -427,18 +427,18 @@ public class TestBuiltInBagToTupleOrStri
data.set("foo", "myBag:bag{t:(l:long)}",
tuple(bag(tuple(1), tuple(2), tuple(3))));
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage();");
- pigServer.registerQuery("B = FOREACH A GENERATE BagToTuple(myBag) as myBag;");
+ pigServer.registerQuery("B = FOREACH A GENERATE BagToTuple(myBag) as myBag;");
pigServer.registerQuery("STORE B INTO 'bar' USING mock.Storage();");
out = data.get("bar");
assertEquals(tuple(1, 2, 3), out.get(0).get(0));
}
-
+
@Test
public void testPigScriptMultipleElmementsPerTupleForBagTupleUDF() throws Exception {
PigServer pigServer = new PigServer(ExecType.LOCAL);
Data data = resetData(pigServer);
-
+
data.set("foo", "myBag:bag{t:(l:chararray)}",
tuple(bag(tuple("a", "b"), tuple("c", "d"), tuple("e", "f"))));
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage();");
@@ -448,122 +448,122 @@ public class TestBuiltInBagToTupleOrStri
List<Tuple> out = data.get("bar");
assertEquals(tuple("a", "b","c", "d", "e", "f"), out.get(0).get(0));
}
-
+
@Test
public void testPigScriptNestedTupleForBagToTupleDF() throws Exception {
PigServer pigServer = new PigServer(ExecType.LOCAL);
Data data = resetData(pigServer);
-
+
Tuple nestedTuple = tuple(bag(tuple("c"), tuple("d")));
data.set("foo", "myBag:bag{t:(l:chararray)}",
tuple(bag(tuple("a"), tuple("b"), nestedTuple, tuple("e"))));
-
+
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage();");
- pigServer.registerQuery("B = FOREACH A GENERATE BagToTuple(myBag) as myBag;");
+ pigServer.registerQuery("B = FOREACH A GENERATE BagToTuple(myBag) as myBag;");
pigServer.registerQuery("STORE B INTO 'bar' USING mock.Storage();");
List<Tuple> out = data.get("bar");
assertEquals(tuple("a", "b",bag(tuple("c"), tuple("d")), "e"), out.get(0).get(0));
-
+
}
-
+
@Test
public void testPigScriptEmptyBagForBagToTupleUDF() throws Exception {
PigServer pigServer = new PigServer(ExecType.LOCAL);
Data data = resetData(pigServer);
-
+
data.set("foo", "myBag:bag{t:(l:chararray)}",
tuple(bag()));
-
+
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage();");
- pigServer.registerQuery("B = FOREACH A GENERATE BagToTuple(myBag) as myBag;");
+ pigServer.registerQuery("B = FOREACH A GENERATE BagToTuple(myBag) as myBag;");
pigServer.registerQuery("STORE B INTO 'bar' USING mock.Storage();");
List<Tuple> out = data.get("bar");
// empty bag will generate empty tuple
assertEquals(tuple(), out.get(0).get(0));
-
+
}
-
+
@Test
public void testPigScriptrForBagToStringUDF() throws Exception {
PigServer pigServer = new PigServer(ExecType.LOCAL);
Data data = resetData(pigServer);
-
+
data.set("foo", "myBag:bag{t:(l:chararray)}",
tuple(bag(tuple("a"), tuple("b"), tuple("c"))));
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage();");
- pigServer.registerQuery("B = FOREACH A GENERATE BagToString(myBag) as myBag;");
+ pigServer.registerQuery("B = FOREACH A GENERATE BagToString(myBag) as myBag;");
pigServer.registerQuery("STORE B INTO 'bar' USING mock.Storage();");
-
- pigServer.registerQuery("C = FOREACH A GENERATE BagToString(myBag, '==') as myBag;");
- pigServer.registerQuery("STORE C INTO 'foo' USING mock.Storage();");
+
+ pigServer.registerQuery("C = FOREACH A GENERATE BagToString(myBag, '==') as myBag;");
+ pigServer.registerQuery("STORE C INTO 'baz' USING mock.Storage();");
List<Tuple> out = data.get("bar");
assertEquals(schema("myBag:chararray"), data.getSchema("bar"));
assertEquals(tuple("a_b_c"), out.get(0));
-
- out = data.get("foo");
+
+ out = data.get("baz");
assertEquals(tuple("a==b==c"), out.get(0));
}
-
+
@Test
public void testPigScriptMultipleElmementsPerTupleForBagToStringUDF() throws Exception {
PigServer pigServer = new PigServer(ExecType.LOCAL);
Data data = resetData(pigServer);
-
+
data.set("foo", "myBag:bag{t:(l:chararray)}",
tuple(bag(tuple("a", "b"), tuple("c", "d"), tuple("e", "f"))));
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage();");
pigServer.registerQuery("B = FOREACH A GENERATE BagToString(myBag) as myBag;");
pigServer.registerQuery("STORE B INTO 'bar' USING mock.Storage();");
-
+
pigServer.registerQuery("C = FOREACH A GENERATE BagToString(myBag, '^') as myBag;");
- pigServer.registerQuery("STORE C INTO 'foo' USING mock.Storage();");
+ pigServer.registerQuery("STORE C INTO 'baz' USING mock.Storage();");
List<Tuple> out = data.get("bar");
assertEquals(tuple("a_b_c_d_e_f"), out.get(0));
-
- out = data.get("foo");
+
+ out = data.get("baz");
assertEquals(tuple("a^b^c^d^e^f"), out.get(0));
}
-
+
@Test
public void testPigScriptNestedTupleForBagToStringUDF() throws Exception {
PigServer pigServer = new PigServer(ExecType.LOCAL);
Data data = resetData(pigServer);
-
+
Tuple nestedTuple = tuple(bag(tuple("c"), tuple("d")));
data.set("foo", "myBag:bag{t:(l:chararray)}",
tuple(bag(tuple("a"), tuple("b"), nestedTuple, tuple("e"))));
-
+
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage();");
- pigServer.registerQuery("B = FOREACH A GENERATE BagToString(myBag) as myBag;");
+ pigServer.registerQuery("B = FOREACH A GENERATE BagToString(myBag) as myBag;");
pigServer.registerQuery("STORE B INTO 'bar' USING mock.Storage();");
List<Tuple> out = data.get("bar");
assertEquals(tuple("a_b_{(c),(d)}_e"), out.get(0));
-
+
}
@Test
public void testPigScriptEmptyBagForBagToStringUDF() throws Exception {
PigServer pigServer = new PigServer(ExecType.LOCAL);
Data data = resetData(pigServer);
-
+
data.set("foo", "myBag:bag{t:(l:chararray)}",
tuple(bag()));
-
+
pigServer.registerQuery("A = LOAD 'foo' USING mock.Storage();");
- pigServer.registerQuery("B = FOREACH A GENERATE BagToString(myBag) as myBag;");
+ pigServer.registerQuery("B = FOREACH A GENERATE BagToString(myBag) as myBag;");
pigServer.registerQuery("STORE B INTO 'bar' USING mock.Storage();");
List<Tuple> out = data.get("bar");
// empty bag will generate empty string
assertEquals(tuple(""), out.get(0));
-
+
}
-
+
private DataBag buildBagWithNestedTupleAndBag() throws ExecException {
Tuple t1 = tf.newTuple(2);
t1.set(0, "a");