You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jd...@apache.org on 2016/05/04 09:22:10 UTC
[07/10] hive git commit: HIVE-13683 Remove erroneously included patch
file (Alan Gates)
HIVE-13683 Remove erroneously included patch file (Alan Gates)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/70fe3108
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/70fe3108
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/70fe3108
Branch: refs/heads/llap
Commit: 70fe31088639ebfdd114e026d8a332540dfbe3b2
Parents: 0b5c27f
Author: Alan Gates <ga...@hortonworks.com>
Authored: Tue May 3 15:51:44 2016 -0700
Committer: Alan Gates <ga...@hortonworks.com>
Committed: Tue May 3 15:53:19 2016 -0700
----------------------------------------------------------------------
HIVE-13509.2.patch | 478 ------------------------------------------------
1 file changed, 478 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/70fe3108/HIVE-13509.2.patch
----------------------------------------------------------------------
diff --git a/HIVE-13509.2.patch b/HIVE-13509.2.patch
deleted file mode 100644
index 930b1f7..0000000
--- a/HIVE-13509.2.patch
+++ /dev/null
@@ -1,478 +0,0 @@
-diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatConstants.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatConstants.java
-index 6b03fcb..d165e7e 100644
---- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatConstants.java
-+++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/common/HCatConstants.java
-@@ -208,4 +208,7 @@ private HCatConstants() { // restrict instantiation
- */
- public static final String HCAT_INPUT_BAD_RECORD_MIN_KEY = "hcat.input.bad.record.min";
- public static final int HCAT_INPUT_BAD_RECORD_MIN_DEFAULT = 2;
-+
-+ public static final String HCAT_INPUT_IGNORE_INVALID_PATH_KEY = "hcat.input.ignore.invalid.path";
-+ public static final boolean HCAT_INPUT_IGNORE_INVALID_PATH_DEFAULT = false;
- }
-diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/HCatBaseInputFormat.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/HCatBaseInputFormat.java
-index adfaf4e..dbbdd61 100644
---- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/HCatBaseInputFormat.java
-+++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/HCatBaseInputFormat.java
-@@ -21,11 +21,11 @@
-
- import java.io.IOException;
- import java.util.ArrayList;
-+import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.Map;
- import java.util.HashMap;
- import java.util.List;
--
- import org.apache.hadoop.conf.Configuration;
- import org.apache.hadoop.fs.FileSystem;
- import org.apache.hadoop.fs.Path;
-@@ -127,7 +127,10 @@ public static void setOutputSchema(Job job, HCatSchema hcatSchema)
- //For each matching partition, call getSplits on the underlying InputFormat
- for (PartInfo partitionInfo : partitionInfoList) {
- jobConf = HCatUtil.getJobConfFromContext(jobContext);
-- setInputPath(jobConf, partitionInfo.getLocation());
-+ List<String> setInputPath = setInputPath(jobConf, partitionInfo.getLocation());
-+ if (setInputPath.isEmpty()) {
-+ continue;
-+ }
- Map<String, String> jobProperties = partitionInfo.getJobProperties();
-
- HCatUtil.copyJobPropertiesToJobConf(jobProperties, jobConf);
-@@ -281,7 +284,7 @@ private static InputJobInfo getJobInfo(Configuration conf)
- return (InputJobInfo) HCatUtil.deserialize(jobString);
- }
-
-- private void setInputPath(JobConf jobConf, String location)
-+ private List<String> setInputPath(JobConf jobConf, String location)
- throws IOException {
-
- // ideally we should just call FileInputFormat.setInputPaths() here - but
-@@ -322,19 +325,33 @@ private void setInputPath(JobConf jobConf, String location)
- }
- pathStrings.add(location.substring(pathStart, length));
-
-- Path[] paths = StringUtils.stringToPath(pathStrings.toArray(new String[0]));
- String separator = "";
- StringBuilder str = new StringBuilder();
-
-- for (Path path : paths) {
-+ boolean ignoreInvalidPath =jobConf.getBoolean(HCatConstants.HCAT_INPUT_IGNORE_INVALID_PATH_KEY,
-+ HCatConstants.HCAT_INPUT_IGNORE_INVALID_PATH_DEFAULT);
-+ Iterator<String> pathIterator = pathStrings.iterator();
-+ while (pathIterator.hasNext()) {
-+ String pathString = pathIterator.next();
-+ if (ignoreInvalidPath && org.apache.commons.lang.StringUtils.isBlank(pathString)) {
-+ continue;
-+ }
-+ Path path = new Path(pathString);
- FileSystem fs = path.getFileSystem(jobConf);
-+ if (ignoreInvalidPath && !fs.exists(path)) {
-+ pathIterator.remove();
-+ continue;
-+ }
- final String qualifiedPath = fs.makeQualified(path).toString();
- str.append(separator)
- .append(StringUtils.escapeString(qualifiedPath));
- separator = StringUtils.COMMA_STR;
- }
-
-- jobConf.set("mapred.input.dir", str.toString());
-+ if (!ignoreInvalidPath || !pathStrings.isEmpty()) {
-+ jobConf.set("mapred.input.dir", str.toString());
-+ }
-+ return pathStrings;
- }
-
- }
-diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java
-index 2440cb5..4e23fa2 100644
---- a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java
-+++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoader.java
-@@ -66,6 +66,7 @@
- import org.apache.pig.data.Tuple;
- import org.apache.pig.impl.logicalLayer.schema.Schema;
- import org.apache.pig.impl.logicalLayer.schema.Schema.FieldSchema;
-+import org.apache.pig.impl.util.PropertiesUtil;
- import org.joda.time.DateTime;
- import org.junit.After;
- import org.junit.Before;
-@@ -102,6 +103,7 @@
- add("testReadPartitionedBasic");
- add("testProjectionsBasic");
- add("testColumnarStorePushdown2");
-+ add("testReadMissingPartitionBasicNeg");
- }});
- }};
-
-@@ -438,6 +440,59 @@ public void testReadPartitionedBasic() throws IOException, CommandNeedRetryExcep
- }
-
- @Test
-+ public void testReadMissingPartitionBasicNeg() throws IOException, CommandNeedRetryException {
-+ assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS));
-+ PigServer server = new PigServer(ExecType.LOCAL);
-+
-+ File removedPartitionDir = new File(TEST_WAREHOUSE_DIR + "/" + PARTITIONED_TABLE + "/bkt=0");
-+ if (!removeDirectory(removedPartitionDir)) {
-+ System.out.println("Test did not run because its environment could not be set.");
-+ return;
-+ }
-+ driver.run("select * from " + PARTITIONED_TABLE);
-+ ArrayList<String> valuesReadFromHiveDriver = new ArrayList<String>();
-+ driver.getResults(valuesReadFromHiveDriver);
-+ assertTrue(valuesReadFromHiveDriver.size() == 6);
-+
-+ server.registerQuery("W = load '" + PARTITIONED_TABLE + "' using org.apache.hive.hcatalog.pig.HCatLoader();");
-+ Schema dumpedWSchema = server.dumpSchema("W");
-+ List<FieldSchema> Wfields = dumpedWSchema.getFields();
-+ assertEquals(3, Wfields.size());
-+ assertTrue(Wfields.get(0).alias.equalsIgnoreCase("a"));
-+ assertTrue(Wfields.get(0).type == DataType.INTEGER);
-+ assertTrue(Wfields.get(1).alias.equalsIgnoreCase("b"));
-+ assertTrue(Wfields.get(1).type == DataType.CHARARRAY);
-+ assertTrue(Wfields.get(2).alias.equalsIgnoreCase("bkt"));
-+ assertTrue(Wfields.get(2).type == DataType.CHARARRAY);
-+
-+ try {
-+ Iterator<Tuple> WIter = server.openIterator("W");
-+ fail("Should failed in retriving an invalid partition");
-+ } catch (IOException ioe) {
-+ // expected
-+ }
-+ }
-+
-+ private static boolean removeDirectory(File dir) {
-+ boolean success = false;
-+ if (dir.isDirectory()) {
-+ File[] files = dir.listFiles();
-+ if (files != null && files.length > 0) {
-+ for (File file : files) {
-+ success = removeDirectory(file);
-+ if (!success) {
-+ return false;
-+ }
-+ }
-+ }
-+ success = dir.delete();
-+ } else {
-+ success = dir.delete();
-+ }
-+ return success;
-+ }
-+
-+ @Test
- public void testProjectionsBasic() throws IOException {
- assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS));
-
-diff --git a/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderWithProps.java b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderWithProps.java
-new file mode 100644
-index 0000000..41fe79b
---- /dev/null
-+++ b/hcatalog/hcatalog-pig-adapter/src/test/java/org/apache/hive/hcatalog/pig/TestHCatLoaderWithProps.java
-@@ -0,0 +1,305 @@
-+/**
-+ * Licensed to the Apache Software Foundation (ASF) under one
-+ * or more contributor license agreements. See the NOTICE file
-+ * distributed with this work for additional information
-+ * regarding copyright ownership. The ASF licenses this file
-+ * to you under the Apache License, Version 2.0 (the
-+ * "License"); you may not use this file except in compliance
-+ * with the License. You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing,
-+ * software distributed under the License is distributed on an
-+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-+ * KIND, either express or implied. See the License for the
-+ * specific language governing permissions and limitations
-+ * under the License.
-+ */
-+package org.apache.hive.hcatalog.pig;
-+
-+import java.io.File;
-+import java.io.FileWriter;
-+import java.io.IOException;
-+import java.io.PrintWriter;
-+import java.io.RandomAccessFile;
-+import java.sql.Date;
-+import java.sql.Timestamp;
-+import java.util.ArrayList;
-+import java.util.Collection;
-+import java.util.HashMap;
-+import java.util.HashSet;
-+import java.util.Iterator;
-+import java.util.List;
-+import java.util.Map;
-+import java.util.Properties;
-+import java.util.Set;
-+
-+import org.apache.commons.io.FileUtils;
-+import org.apache.hadoop.fs.FileSystem;
-+import org.apache.hadoop.fs.FileUtil;
-+import org.apache.hadoop.fs.Path;
-+import org.apache.hadoop.hive.cli.CliSessionState;
-+import org.apache.hadoop.hive.conf.HiveConf;
-+import org.apache.hadoop.hive.ql.CommandNeedRetryException;
-+import org.apache.hadoop.hive.ql.Driver;
-+import org.apache.hadoop.hive.ql.WindowsPathUtil;
-+import org.apache.hadoop.hive.ql.io.IOConstants;
-+import org.apache.hadoop.hive.ql.io.StorageFormats;
-+import org.apache.hadoop.hive.ql.processors.CommandProcessorResponse;
-+import org.apache.hadoop.hive.ql.session.SessionState;
-+import org.apache.hadoop.hive.serde2.ColumnProjectionUtils;
-+import org.apache.hadoop.mapreduce.Job;
-+import org.apache.hadoop.util.Shell;
-+import org.apache.hive.hcatalog.HcatTestUtils;
-+import org.apache.hive.hcatalog.common.HCatUtil;
-+import org.apache.hive.hcatalog.common.HCatConstants;
-+import org.apache.hive.hcatalog.data.Pair;
-+import org.apache.hive.hcatalog.data.schema.HCatFieldSchema;
-+import org.apache.pig.ExecType;
-+import org.apache.pig.PigRunner;
-+import org.apache.pig.PigServer;
-+import org.apache.pig.ResourceStatistics;
-+import org.apache.pig.tools.pigstats.OutputStats;
-+import org.apache.pig.tools.pigstats.PigStats;
-+import org.apache.pig.data.DataType;
-+import org.apache.pig.data.Tuple;
-+import org.apache.pig.impl.logicalLayer.schema.Schema;
-+import org.apache.pig.impl.logicalLayer.schema.Schema.FieldSchema;
-+import org.apache.pig.impl.util.PropertiesUtil;
-+import org.joda.time.DateTime;
-+import org.junit.After;
-+import org.junit.Before;
-+import org.junit.Test;
-+import org.junit.runner.RunWith;
-+import org.junit.runners.Parameterized;
-+import org.slf4j.Logger;
-+import org.slf4j.LoggerFactory;
-+
-+import static org.junit.Assert.*;
-+import static org.junit.Assume.assumeTrue;
-+
-+@RunWith(Parameterized.class)
-+public class TestHCatLoaderWithProps {
-+ private static final Logger LOG = LoggerFactory.getLogger(TestHCatLoaderWithProps.class);
-+ private static final String TEST_DATA_DIR = HCatUtil.makePathASafeFileName(System.getProperty("java.io.tmpdir") +
-+ File.separator + TestHCatLoaderWithProps.class.getCanonicalName() + "-" + System.currentTimeMillis());
-+ private static final String TEST_WAREHOUSE_DIR = TEST_DATA_DIR + "/warehouse";
-+ private static final String BASIC_FILE_NAME = TEST_DATA_DIR + "/basic.input.data";
-+
-+ private static final String BASIC_TABLE = "junit_unparted_basic";
-+ private static final String PARTITIONED_TABLE = "junit_parted_basic";
-+
-+ private Driver driver;
-+ private Map<Integer, Pair<Integer, String>> basicInputData;
-+
-+ private static final Map<String, Set<String>> DISABLED_STORAGE_FORMATS =
-+ new HashMap<String, Set<String>>() {{
-+ put(IOConstants.PARQUETFILE, new HashSet<String>() {{
-+ add("testReadMissingPartitionBasic");
-+ }});
-+ }};
-+
-+ private final String storageFormat;
-+
-+ @Parameterized.Parameters
-+ public static Collection<Object[]> generateParameters() {
-+ return StorageFormats.names();
-+ }
-+
-+ public TestHCatLoaderWithProps(String storageFormat) {
-+ this.storageFormat = storageFormat;
-+ }
-+
-+ private void dropTable(String tablename) throws IOException, CommandNeedRetryException {
-+ dropTable(tablename, driver);
-+ }
-+
-+ static void dropTable(String tablename, Driver driver) throws IOException, CommandNeedRetryException {
-+ driver.run("drop table if exists " + tablename);
-+ }
-+
-+ private void createTable(String tablename, String schema, String partitionedBy) throws IOException, CommandNeedRetryException {
-+ createTable(tablename, schema, partitionedBy, driver, storageFormat);
-+ }
-+
-+ static void createTable(String tablename, String schema, String partitionedBy, Driver driver, String storageFormat)
-+ throws IOException, CommandNeedRetryException {
-+ String createTable;
-+ createTable = "create table " + tablename + "(" + schema + ") ";
-+ if ((partitionedBy != null) && (!partitionedBy.trim().isEmpty())) {
-+ createTable = createTable + "partitioned by (" + partitionedBy + ") ";
-+ }
-+ createTable = createTable + "stored as " +storageFormat;
-+ executeStatementOnDriver(createTable, driver);
-+ }
-+
-+ private void createTable(String tablename, String schema) throws IOException, CommandNeedRetryException {
-+ createTable(tablename, schema, null);
-+ }
-+
-+ /**
-+ * Execute Hive CLI statement
-+ * @param cmd arbitrary statement to execute
-+ */
-+ static void executeStatementOnDriver(String cmd, Driver driver) throws IOException, CommandNeedRetryException {
-+ LOG.debug("Executing: " + cmd);
-+ CommandProcessorResponse cpr = driver.run(cmd);
-+ if(cpr.getResponseCode() != 0) {
-+ throw new IOException("Failed to execute \"" + cmd + "\". Driver returned " + cpr.getResponseCode() + " Error: " + cpr.getErrorMessage());
-+ }
-+ }
-+
-+ @Before
-+ public void setup() throws Exception {
-+ File f = new File(TEST_WAREHOUSE_DIR);
-+ if (f.exists()) {
-+ FileUtil.fullyDelete(f);
-+ }
-+ if (!(new File(TEST_WAREHOUSE_DIR).mkdirs())) {
-+ throw new RuntimeException("Could not create " + TEST_WAREHOUSE_DIR);
-+ }
-+
-+ HiveConf hiveConf = new HiveConf(this.getClass());
-+ hiveConf.set(HiveConf.ConfVars.PREEXECHOOKS.varname, "");
-+ hiveConf.set(HiveConf.ConfVars.POSTEXECHOOKS.varname, "");
-+ hiveConf.set(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY.varname, "false");
-+ hiveConf.set(HiveConf.ConfVars.METASTOREWAREHOUSE.varname, TEST_WAREHOUSE_DIR);
-+ hiveConf.setVar(HiveConf.ConfVars.HIVEMAPREDMODE, "nonstrict");
-+
-+ if (Shell.WINDOWS) {
-+ WindowsPathUtil.convertPathsFromWindowsToHdfs(hiveConf);
-+ }
-+
-+ driver = new Driver(hiveConf);
-+ SessionState.start(new CliSessionState(hiveConf));
-+
-+ createTable(BASIC_TABLE, "a int, b string");
-+ createTable(PARTITIONED_TABLE, "a int, b string", "bkt string");
-+
-+ int LOOP_SIZE = 3;
-+ String[] input = new String[LOOP_SIZE * LOOP_SIZE];
-+ basicInputData = new HashMap<Integer, Pair<Integer, String>>();
-+ int k = 0;
-+ for (int i = 1; i <= LOOP_SIZE; i++) {
-+ String si = i + "";
-+ for (int j = 1; j <= LOOP_SIZE; j++) {
-+ String sj = "S" + j + "S";
-+ input[k] = si + "\t" + sj;
-+ basicInputData.put(k, new Pair<Integer, String>(i, sj));
-+ k++;
-+ }
-+ }
-+ HcatTestUtils.createTestDataFile(BASIC_FILE_NAME, input);
-+
-+ PigServer server = new PigServer(ExecType.LOCAL);
-+ server.setBatchOn();
-+ int i = 0;
-+ server.registerQuery("A = load '" + BASIC_FILE_NAME + "' as (a:int, b:chararray);", ++i);
-+
-+ server.registerQuery("store A into '" + BASIC_TABLE + "' using org.apache.hive.hcatalog.pig.HCatStorer();", ++i);
-+ server.registerQuery("B = foreach A generate a,b;", ++i);
-+ server.registerQuery("B2 = filter B by a < 2;", ++i);
-+ server.registerQuery("store B2 into '" + PARTITIONED_TABLE + "' using org.apache.hive.hcatalog.pig.HCatStorer('bkt=0');", ++i);
-+
-+ server.registerQuery("C = foreach A generate a,b;", ++i);
-+ server.registerQuery("C2 = filter C by a >= 2;", ++i);
-+ server.registerQuery("store C2 into '" + PARTITIONED_TABLE + "' using org.apache.hive.hcatalog.pig.HCatStorer('bkt=1');", ++i);
-+
-+ server.executeBatch();
-+ }
-+
-+ @After
-+ public void tearDown() throws Exception {
-+ try {
-+ if (driver != null) {
-+ dropTable(BASIC_TABLE);
-+ dropTable(PARTITIONED_TABLE);
-+ }
-+ } finally {
-+ FileUtils.deleteDirectory(new File(TEST_DATA_DIR));
-+ }
-+ }
-+
-+ @Test
-+ public void testReadMissingPartitionBasic() throws IOException, CommandNeedRetryException {
-+ assumeTrue(!TestUtil.shouldSkip(storageFormat, DISABLED_STORAGE_FORMATS));
-+ Properties pigProperties = PropertiesUtil.loadDefaultProperties();
-+ pigProperties.setProperty("hcat.input.ignore.invalid.path", "true");
-+ PigServer server = new PigServer(ExecType.LOCAL, pigProperties);
-+
-+ File removedPartitionDir = new File(TEST_WAREHOUSE_DIR + "/" + PARTITIONED_TABLE + "/bkt=0");
-+ if (!removeDirectory(removedPartitionDir)) {
-+ System.out.println("Test did not run because its environment could not be set.");
-+ return;
-+ }
-+ driver.run("select * from " + PARTITIONED_TABLE);
-+ ArrayList<String> valuesReadFromHiveDriver = new ArrayList<String>();
-+ driver.getResults(valuesReadFromHiveDriver);
-+ assertTrue(valuesReadFromHiveDriver.size() == 6);
-+
-+ server.registerQuery("W = load '" + PARTITIONED_TABLE + "' using org.apache.hive.hcatalog.pig.HCatLoader();");
-+ Schema dumpedWSchema = server.dumpSchema("W");
-+ List<FieldSchema> Wfields = dumpedWSchema.getFields();
-+ assertEquals(3, Wfields.size());
-+ assertTrue(Wfields.get(0).alias.equalsIgnoreCase("a"));
-+ assertTrue(Wfields.get(0).type == DataType.INTEGER);
-+ assertTrue(Wfields.get(1).alias.equalsIgnoreCase("b"));
-+ assertTrue(Wfields.get(1).type == DataType.CHARARRAY);
-+ assertTrue(Wfields.get(2).alias.equalsIgnoreCase("bkt"));
-+ assertTrue(Wfields.get(2).type == DataType.CHARARRAY);
-+
-+ Iterator<Tuple> WIter = server.openIterator("W");
-+ Collection<Pair<Integer, String>> valuesRead = new ArrayList<Pair<Integer, String>>();
-+ while (WIter.hasNext()) {
-+ Tuple t = WIter.next();
-+ assertTrue(t.size() == 3);
-+ assertNotNull(t.get(0));
-+ assertNotNull(t.get(1));
-+ assertNotNull(t.get(2));
-+ assertTrue(t.get(0).getClass() == Integer.class);
-+ assertTrue(t.get(1).getClass() == String.class);
-+ assertTrue(t.get(2).getClass() == String.class);
-+ valuesRead.add(new Pair<Integer, String>((Integer) t.get(0), (String) t.get(1)));
-+ // the returned partition value is always 1
-+ assertEquals("1", t.get(2));
-+ }
-+ assertEquals(valuesReadFromHiveDriver.size(), valuesRead.size());
-+
-+ server.registerQuery("P1 = load '" + PARTITIONED_TABLE + "' using org.apache.hive.hcatalog.pig.HCatLoader();");
-+ server.registerQuery("P1filter = filter P1 by bkt == '0';");
-+ Iterator<Tuple> P1Iter = server.openIterator("P1filter");
-+ assertFalse(P1Iter.hasNext());
-+
-+ server.registerQuery("P2 = load '" + PARTITIONED_TABLE + "' using org.apache.hive.hcatalog.pig.HCatLoader();");
-+ server.registerQuery("P2filter = filter P2 by bkt == '1';");
-+ Iterator<Tuple> P2Iter = server.openIterator("P2filter");
-+ int count2 = 0;
-+ while (P2Iter.hasNext()) {
-+ Tuple t = P2Iter.next();
-+ assertEquals("1", t.get(2));
-+ assertTrue(((Integer) t.get(0)) > 1);
-+ count2++;
-+ }
-+ assertEquals(6, count2);
-+ }
-+
-+ private static boolean removeDirectory(File dir) {
-+ boolean success = false;
-+ if (dir.isDirectory()) {
-+ File[] files = dir.listFiles();
-+ if (files != null && files.length > 0) {
-+ for (File file : files) {
-+ success = removeDirectory(file);
-+ if (!success) {
-+ return false;
-+ }
-+ }
-+ }
-+ success = dir.delete();
-+ } else {
-+ success = dir.delete();
-+ }
-+ return success;
-+ }
-+}