You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2014/09/16 19:37:19 UTC
svn commit: r1625341 [12/12] - in /hive/branches/llap: ./
common/src/java/org/apache/hadoop/hive/common/
common/src/java/org/apache/hadoop/hive/conf/
contrib/src/test/results/clientpositive/ data/conf/tez/ data/files/
hbase-handler/ itests/hive-unit-ha...
Modified: hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java
URL: http://svn.apache.org/viewvc/hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java?rev=1625341&r1=1625340&r2=1625341&view=diff
==============================================================================
--- hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java (original)
+++ hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java Tue Sep 16 17:37:13 2014
@@ -26,10 +26,12 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
+import org.apache.thrift.TUnion;
/**
* ObjectInspectorFactory is the primary way to create new ObjectInspector
@@ -111,7 +113,8 @@ public final class ObjectInspectorFactor
if (t instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) t;
// List?
- if (List.class.isAssignableFrom((Class<?>) pt.getRawType())) {
+ if (List.class.isAssignableFrom((Class<?>) pt.getRawType()) ||
+ Set.class.isAssignableFrom((Class<?>) pt.getRawType())) {
return getStandardListObjectInspector(getReflectionObjectInspector(pt
.getActualTypeArguments()[0], options));
}
@@ -172,7 +175,7 @@ public final class ObjectInspectorFactor
oi = new ReflectionStructObjectInspector();
break;
case THRIFT:
- oi = new ThriftStructObjectInspector();
+ oi = TUnion.class.isAssignableFrom(c) ? new ThriftUnionObjectInspector() : new ThriftStructObjectInspector();
break;
case PROTOCOL_BUFFERS:
oi = new ProtocolBuffersStructObjectInspector();
@@ -181,20 +184,13 @@ public final class ObjectInspectorFactor
throw new RuntimeException(ObjectInspectorFactory.class.getName()
+ ": internal error.");
}
+
// put it into the cache BEFORE it is initialized to make sure we can catch
// recursive types.
objectInspectorCache.put(t, oi);
- Field[] fields = ObjectInspectorUtils.getDeclaredNonStaticFields(c);
- ArrayList<ObjectInspector> structFieldObjectInspectors = new ArrayList<ObjectInspector>(
- fields.length);
- for (int i = 0; i < fields.length; i++) {
- if (!oi.shouldIgnoreField(fields[i].getName())) {
- structFieldObjectInspectors.add(getReflectionObjectInspector(fields[i]
- .getGenericType(), options));
- }
- }
- oi.init(c, structFieldObjectInspectors);
+ oi.init(c, options);
return oi;
+
}
static ConcurrentHashMap<ObjectInspector, StandardListObjectInspector> cachedStandardListObjectInspector =
Modified: hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java?rev=1625341&r1=1625340&r2=1625341&view=diff
==============================================================================
--- hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java (original)
+++ hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java Tue Sep 16 17:37:13 2014
@@ -44,6 +44,7 @@ public class ReflectionStructObjectInspe
public static class MyField implements StructField {
protected int fieldID;
protected Field field;
+
protected ObjectInspector fieldObjectInspector;
protected MyField() {
@@ -116,12 +117,13 @@ public class ReflectionStructObjectInspe
* The reason that this method is not recursive by itself is because we want
* to allow recursive types.
*/
- void init(Class<?> objectClass,
- List<ObjectInspector> structFieldObjectInspectors) {
- assert (!List.class.isAssignableFrom(objectClass));
- assert (!Map.class.isAssignableFrom(objectClass));
+ protected void init(Class<?> objectClass,
+ ObjectInspectorFactory.ObjectInspectorOptions options) {
+ verifyObjectClassType(objectClass);
this.objectClass = objectClass;
+ final List<? extends ObjectInspector> structFieldObjectInspectors = extractFieldObjectInspectors(objectClass, options);
+
Field[] reflectionFields = ObjectInspectorUtils
.getDeclaredNonStaticFields(objectClass);
fields = new ArrayList<MyField>(structFieldObjectInspectors.size());
@@ -205,4 +207,23 @@ public class ReflectionStructObjectInspe
return struct;
}
+ protected List<? extends ObjectInspector> extractFieldObjectInspectors(Class<?> clazz,
+ ObjectInspectorFactory.ObjectInspectorOptions options) {
+ Field[] fields = ObjectInspectorUtils.getDeclaredNonStaticFields(clazz);
+ ArrayList<ObjectInspector> structFieldObjectInspectors = new ArrayList<ObjectInspector>(
+ fields.length);
+ for (int i = 0; i < fields.length; i++) {
+ if (!shouldIgnoreField(fields[i].getName())) {
+ structFieldObjectInspectors.add(ObjectInspectorFactory.getReflectionObjectInspector(fields[i]
+ .getGenericType(), options));
+ }
+ }
+ return structFieldObjectInspectors;
+ }
+
+
+ protected void verifyObjectClassType(Class<?> objectClass) {
+ assert (!List.class.isAssignableFrom(objectClass));
+ assert (!Map.class.isAssignableFrom(objectClass));
+ }
}
Modified: hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardListObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardListObjectInspector.java?rev=1625341&r1=1625340&r2=1625341&view=diff
==============================================================================
--- hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardListObjectInspector.java (original)
+++ hive/branches/llap/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardListObjectInspector.java Tue Sep 16 17:37:13 2014
@@ -20,6 +20,7 @@ package org.apache.hadoop.hive.serde2.ob
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
/**
* DefaultListObjectInspector works on list data that is stored as a Java List
@@ -53,52 +54,64 @@ public class StandardListObjectInspector
}
// with data
+ @SuppressWarnings({ "rawtypes", "unchecked" })
public Object getListElement(Object data, int index) {
if (data == null) {
return null;
}
- // We support both List<Object> and Object[]
+ // We support List<Object>, Set<Object> and Object[]
// so we have to do differently.
- boolean isArray = ! (data instanceof List);
- if (isArray) {
- Object[] list = (Object[]) data;
- if (index < 0 || index >= list.length) {
- return null;
- }
- return list[index];
- } else {
- List<?> list = (List<?>) data;
- if (index < 0 || index >= list.size()) {
- return null;
+ if (! (data instanceof List)) {
+ if (! (data instanceof Set)) {
+ Object[] list = (Object[]) data;
+ if (index < 0 || index >= list.length) {
+ return null;
+ }
+ return list[index];
+ } else {
+ data = new ArrayList((Set<?>) data);
}
- return list.get(index);
}
+ List<?> list = (List<?>) data;
+ if (index < 0 || index >= list.size()) {
+ return null;
+ }
+ return list.get(index);
}
public int getListLength(Object data) {
if (data == null) {
return -1;
}
- // We support both List<Object> and Object[]
+ // We support List<Object>, Set<Object> and Object[]
// so we have to do differently.
- boolean isArray = ! (data instanceof List);
- if (isArray) {
- Object[] list = (Object[]) data;
- return list.length;
+ if (! (data instanceof List)) {
+ if (! (data instanceof Set)) {
+ Object[] list = (Object[]) data;
+ return list.length;
+ } else {
+ Set<?> set = (Set<?>) data;
+ return set.size();
+ }
} else {
List<?> list = (List<?>) data;
return list.size();
}
}
+ @SuppressWarnings({ "rawtypes", "unchecked" })
public List<?> getList(Object data) {
if (data == null) {
return null;
}
- // We support both List<Object> and Object[]
+ // We support List<Object>, Set<Object> and Object[]
// so we have to do differently.
if (! (data instanceof List)) {
- data = java.util.Arrays.asList((Object[]) data);
+ if (! (data instanceof Set)) {
+ data = java.util.Arrays.asList((Object[]) data);
+ } else {
+ data = new ArrayList((Set<?>) data);
+ }
}
List<?> list = (List<?>) data;
return list;
Modified: hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorUtils.java
URL: http://svn.apache.org/viewvc/hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorUtils.java?rev=1625341&r1=1625340&r2=1625341&view=diff
==============================================================================
--- hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorUtils.java (original)
+++ hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestObjectInspectorUtils.java Tue Sep 16 17:37:13 2014
@@ -46,7 +46,7 @@ public class TestObjectInspectorUtils ex
StructObjectInspector soi = (StructObjectInspector) ObjectInspectorUtils
.getStandardObjectInspector(oi1);
List<? extends StructField> fields = soi.getAllStructFieldRefs();
- assertEquals(6, fields.size());
+ assertEquals(10, fields.size());
assertEquals(fields.get(0), soi.getStructFieldRef("aint"));
// null
@@ -75,7 +75,7 @@ public class TestObjectInspectorUtils ex
assertEquals(c4, soi.getStructFieldData(c, fields.get(4)));
assertNull(soi.getStructFieldData(c, fields.get(5)));
ArrayList<Object> cfields = new ArrayList<Object>();
- for (int i = 0; i < 6; i++) {
+ for (int i = 0; i < 10; i++) {
cfields.add(soi.getStructFieldData(c, fields.get(i)));
}
assertEquals(cfields, soi.getStructFieldsDataAsList(c));
Modified: hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestThriftObjectInspectors.java
URL: http://svn.apache.org/viewvc/hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestThriftObjectInspectors.java?rev=1625341&r1=1625340&r2=1625341&view=diff
==============================================================================
--- hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestThriftObjectInspectors.java (original)
+++ hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/objectinspector/TestThriftObjectInspectors.java Tue Sep 16 17:37:13 2014
@@ -19,7 +19,9 @@ package org.apache.hadoop.hive.serde2.ob
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import junit.framework.TestCase;
@@ -27,6 +29,7 @@ import org.apache.hadoop.hive.serde2.obj
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.thrift.test.Complex;
import org.apache.hadoop.hive.serde2.thrift.test.IntString;
+import org.apache.hadoop.hive.serde2.thrift.test.SetIntString;
/**
* TestThriftObjectInspectors.
@@ -49,7 +52,7 @@ public class TestThriftObjectInspectors
assertEquals(Category.STRUCT, oi1.getCategory());
StructObjectInspector soi = (StructObjectInspector) oi1;
List<? extends StructField> fields = soi.getAllStructFieldRefs();
- assertEquals(6, fields.size());
+ assertEquals(10, fields.size());
assertEquals(fields.get(0), soi.getStructFieldRef("aint"));
// null
@@ -68,6 +71,10 @@ public class TestThriftObjectInspectors
List<IntString> c4 = new ArrayList<IntString>();
c.setLintString(c4);
c.setMStringString(null);
+ c.setAttributes(null);
+ c.setUnionField1(null);
+ c.setUnionField2(null);
+ c.setUnionField3(null);
assertEquals(1, soi.getStructFieldData(c, fields.get(0)));
assertEquals("test", soi.getStructFieldData(c, fields.get(1)));
@@ -75,8 +82,13 @@ public class TestThriftObjectInspectors
assertEquals(c3, soi.getStructFieldData(c, fields.get(3)));
assertEquals(c4, soi.getStructFieldData(c, fields.get(4)));
assertNull(soi.getStructFieldData(c, fields.get(5)));
+ assertNull(soi.getStructFieldData(c, fields.get(6)));
+ assertNull(soi.getStructFieldData(c, fields.get(7)));
+ assertNull(soi.getStructFieldData(c, fields.get(8)));
+ assertNull(soi.getStructFieldData(c, fields.get(9)));
+
ArrayList<Object> cfields = new ArrayList<Object>();
- for (int i = 0; i < 6; i++) {
+ for (int i = 0; i < 10; i++) {
cfields.add(soi.getStructFieldData(c, fields.get(i)));
}
assertEquals(cfields, soi.getStructFieldsDataAsList(c));
@@ -109,4 +121,70 @@ public class TestThriftObjectInspectors
throw e;
}
}
+
+ @SuppressWarnings("unchecked")
+ public void testThriftSetObjectInspector() throws Throwable {
+
+ try {
+ ObjectInspector oi1 = ObjectInspectorFactory
+ .getReflectionObjectInspector(SetIntString.class,
+ ObjectInspectorFactory.ObjectInspectorOptions.THRIFT);
+ ObjectInspector oi2 = ObjectInspectorFactory
+ .getReflectionObjectInspector(SetIntString.class,
+ ObjectInspectorFactory.ObjectInspectorOptions.THRIFT);
+ assertEquals(oi1, oi2);
+
+ // metadata
+ assertEquals(Category.STRUCT, oi1.getCategory());
+ StructObjectInspector soi = (StructObjectInspector) oi1;
+ List<? extends StructField> fields = soi.getAllStructFieldRefs();
+ assertEquals(2, fields.size());
+ assertEquals(fields.get(0), soi.getStructFieldRef("sIntString"));
+ assertEquals(fields.get(1), soi.getStructFieldRef("aString"));
+
+ // null
+ for (int i = 0; i < fields.size(); i++) {
+ assertNull(soi.getStructFieldData(null, fields.get(i)));
+ }
+
+ // real object
+ IntString s1 = new IntString();
+ s1.setMyint(1);
+ s1.setMyString("test");
+ s1.setUnderscore_int(2);
+
+ Set<IntString> set1 = new HashSet<IntString>();
+ set1.add(s1);
+
+ SetIntString s = new SetIntString();
+ s.setSIntString(set1);
+ s.setAString("setString");
+
+ assertEquals(set1, soi.getStructFieldData(s, fields.get(0)));
+ assertEquals("setString", soi.getStructFieldData(s, fields.get(1)));
+
+ // sub fields
+ assertEquals(
+ ObjectInspectorFactory
+ .getStandardListObjectInspector(ObjectInspectorFactory
+ .getReflectionObjectInspector(IntString.class,
+ ObjectInspectorFactory.ObjectInspectorOptions.THRIFT)),
+ fields.get(0).getFieldObjectInspector());
+ assertEquals(PrimitiveObjectInspectorFactory.javaStringObjectInspector,
+ fields.get(1).getFieldObjectInspector());
+
+ // compare set fields
+ ListObjectInspector loi = (ListObjectInspector) fields.get(0).getFieldObjectInspector();
+ assertEquals(1, loi.getListLength(set1));
+ List<IntString> list = (List<IntString>) loi.getList(set1);
+ assertEquals(1, list.size());
+ s1 = (IntString) loi.getListElement(list, 0);
+ assertEquals(1, s1.getMyint());
+ assertEquals("test", s1.getMyString());
+ assertEquals(2, s1.getUnderscore_int());
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
}
Modified: hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/thrift_test/CreateSequenceFile.java
URL: http://svn.apache.org/viewvc/hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/thrift_test/CreateSequenceFile.java?rev=1625341&r1=1625340&r2=1625341&view=diff
==============================================================================
--- hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/thrift_test/CreateSequenceFile.java (original)
+++ hive/branches/llap/serde/src/test/org/apache/hadoop/hive/serde2/thrift_test/CreateSequenceFile.java Tue Sep 16 17:37:13 2014
@@ -19,6 +19,7 @@
package org.apache.hadoop.hive.serde2.thrift_test;
import java.util.ArrayList;
+import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
@@ -28,6 +29,7 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.serde2.ByteStream;
import org.apache.hadoop.hive.serde2.thrift.test.Complex;
import org.apache.hadoop.hive.serde2.thrift.test.IntString;
+import org.apache.hadoop.hive.serde2.thrift.test.PropValueUnion;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Writable;
@@ -125,16 +127,23 @@ public final class CreateSequenceFile {
islist.add(new IntString(i * i, "" + i * i * i, i));
HashMap<String, String> hash = new HashMap<String, String>();
hash.put("key_" + i, "value_" + i);
+ Map<String, Map<String, Map<String,PropValueUnion>>> unionMap = new HashMap<String, Map<String, Map<String,PropValueUnion>>>();
+ Map<String, Map<String, PropValueUnion>> erMap = new HashMap<String, Map<String, PropValueUnion>>();
+ Map<String, PropValueUnion> attrMap = new HashMap<String, PropValueUnion>();
+
+ erMap.put("erVal" + i, attrMap);
+ attrMap.put("value_" + i, PropValueUnion.doubleValue(1.0));
+ unionMap.put("key_" + i, erMap);
Complex complex = new Complex(rand.nextInt(), "record_"
- + (new Integer(i)).toString(), alist, slist, islist, hash);
+ + (new Integer(i)).toString(), alist, slist, islist, hash, unionMap, PropValueUnion.stringValue("test" + i), PropValueUnion.unionMStringString(hash), PropValueUnion.lString(slist));
Writable value = serializer.serialize(complex);
writer.append(key, value);
}
// Add an all-null record
- Complex complex = new Complex(0, null, null, null, null, null);
+ Complex complex = new Complex(0, null, null, null, null, null, null, null, null, null);
Writable value = serializer.serialize(complex);
writer.append(key, value);
Modified: hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/PTest.java
URL: http://svn.apache.org/viewvc/hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/PTest.java?rev=1625341&r1=1625340&r2=1625341&view=diff
==============================================================================
--- hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/PTest.java (original)
+++ hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/PTest.java Tue Sep 16 17:37:13 2014
@@ -347,7 +347,7 @@ public class PTest {
executionContext = executionContextProvider.createExecutionContext();
LocalCommandFactory localCommandFactory = new LocalCommandFactory(LOG);
PTest ptest = new PTest(conf, executionContext, buildTag, logDir,
- localCommandFactory, new SSHCommandExecutor(LOG),
+ localCommandFactory, new SSHCommandExecutor(LOG, localCommandFactory, conf.getSshOpts()),
new RSyncCommandExecutor(LOG, 10, localCommandFactory), LOG);
exitCode = ptest.run();
} finally {
Modified: hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/conf/TestConfiguration.java
URL: http://svn.apache.org/viewvc/hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/conf/TestConfiguration.java?rev=1625341&r1=1625340&r2=1625341&view=diff
==============================================================================
--- hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/conf/TestConfiguration.java (original)
+++ hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/conf/TestConfiguration.java Tue Sep 16 17:37:13 2014
@@ -55,6 +55,7 @@ public class TestConfiguration {
private static final String JIRA_USER = "jiraUser";
private static final String JIRA_PASSWORD = "jiraPassword";
private static final String JENKINS_URL = "jenkinsURL";
+ private static final String SSH_OPTS = "sshOpts";
private static final String LOGS_URL = "logsURL";
private static final String TEST_CASE_PROPERTY_NAME = "testCasePropertyName";
private static final String BUILD_TOOL = "buildTool";
@@ -75,6 +76,7 @@ public class TestConfiguration {
private String javaHome;
private String javaHomeForTests;
private String branch;
+ private String sshOpts;
private final String jenkinsURL;
private final String logsURL;
private final String jiraUrl;
@@ -122,10 +124,14 @@ public class TestConfiguration {
jenkinsURL = context.getString(JENKINS_URL, "https://builds.apache.org/job").trim();
logsURL = context.getString(LOGS_URL, "").trim();
testCasePropertyName = context.getString(TEST_CASE_PROPERTY_NAME, "testcase").trim();
+ sshOpts = context.getString(SSH_OPTS, "").trim();
}
public Context getContext() {
return context;
}
+ public String getSshOpts() {
+ return sshOpts;
+ }
public String getJenkinsURL() {
return jenkinsURL;
}
Modified: hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/ssh/SSHCommandExecutor.java
URL: http://svn.apache.org/viewvc/hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/ssh/SSHCommandExecutor.java?rev=1625341&r1=1625340&r2=1625341&view=diff
==============================================================================
--- hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/ssh/SSHCommandExecutor.java (original)
+++ hive/branches/llap/testutils/ptest2/src/main/java/org/apache/hive/ptest/execution/ssh/SSHCommandExecutor.java Tue Sep 16 17:37:13 2014
@@ -30,15 +30,17 @@ public class SSHCommandExecutor {
private final Logger mLogger;
private final LocalCommandFactory mLocalCommandFactory;
+ private final String mSshOpts;
private volatile boolean mShutdown;
-
- public SSHCommandExecutor(Logger logger, LocalCommandFactory localCommandFactory) {
+
+ public SSHCommandExecutor(Logger logger, LocalCommandFactory localCommandFactory, String sshOpts) {
mLogger = logger;
- mShutdown = false;
mLocalCommandFactory = localCommandFactory;
+ mSshOpts = sshOpts;
+ mShutdown = false;
}
public SSHCommandExecutor(Logger logger) {
- this(logger, new LocalCommandFactory(logger));
+ this(logger, new LocalCommandFactory(logger), "");
}
/**
* Execute the given command via the ssh command line tool. If the command
@@ -47,8 +49,8 @@ public class SSHCommandExecutor {
public void execute(SSHCommand command) {
CollectPolicy collector = new CollectPolicy();
try {
- String commandText = String.format("ssh -v -i %s -l %s %s '%s'", command.getPrivateKey(),
- command.getUser(), command.getHost(), command.getCommand());
+ String commandText = String.format("ssh -v -i %s %s -l %s %s '%s'", command.getPrivateKey(),
+ mSshOpts, command.getUser(), command.getHost(), command.getCommand());
int attempts = 0;
boolean retry;
LocalCommand cmd;
@@ -83,4 +85,4 @@ public class SSHCommandExecutor {
public void shutdownNow() {
this.mShutdown = true;
}
-}
\ No newline at end of file
+}
Modified: hive/branches/llap/testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/ssh/TestSSHCommandExecutor.java
URL: http://svn.apache.org/viewvc/hive/branches/llap/testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/ssh/TestSSHCommandExecutor.java?rev=1625341&r1=1625340&r2=1625341&view=diff
==============================================================================
--- hive/branches/llap/testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/ssh/TestSSHCommandExecutor.java (original)
+++ hive/branches/llap/testutils/ptest2/src/test/java/org/apache/hive/ptest/execution/ssh/TestSSHCommandExecutor.java Tue Sep 16 17:37:13 2014
@@ -50,7 +50,8 @@ public class TestSSHCommandExecutor {
public void testShutdownBeforeWaitFor() throws Exception {
LocalCommand localCommand = mock(LocalCommand.class);
localCommandFactory.setInstance(localCommand);
- SSHCommandExecutor executor = new SSHCommandExecutor(LOG, localCommandFactory);
+ SSHCommandExecutor executor = new SSHCommandExecutor(LOG, localCommandFactory,
+ "-o StrictHostKeyChecking=no");
Assert.assertFalse(executor.isShutdown());
executor.shutdownNow();
SSHCommand command = new SSHCommand(executor, "privateKey", "user", "host", 1, "whoami");
@@ -66,7 +67,8 @@ public class TestSSHCommandExecutor {
public void testShutdownDuringWaitFor() throws Exception {
LocalCommand localCommand = mock(LocalCommand.class);
localCommandFactory.setInstance(localCommand);
- final SSHCommandExecutor executor = new SSHCommandExecutor(LOG, localCommandFactory);
+ final SSHCommandExecutor executor = new SSHCommandExecutor(LOG, localCommandFactory,
+ "-o StrictHostKeyChecking=no");
Assert.assertFalse(executor.isShutdown());
when(localCommand.getExitCode()).thenAnswer(new Answer<Integer>() {
@Override
@@ -84,4 +86,4 @@ public class TestSSHCommandExecutor {
}
verify(localCommand, never()).kill();
}
-}
\ No newline at end of file
+}