You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by bf...@apache.org on 2011/10/06 20:00:58 UTC
svn commit: r1179726 - in /oodt/trunk/protocol/protocol-sftp: ./
src/test/org/apache/oodt/cas/protocol/sftp/ src/testdata/
src/testdata/sshTestDir/
Author: bfoster
Date: Thu Oct 6 18:00:58 2011
New Revision: 1179726
URL: http://svn.apache.org/viewvc?rev=1179726&view=rev
Log:
- fixed test failing problem... made test not depend on source path... and made port used to bring up server verified as unused before being used.
Removed:
oodt/trunk/protocol/protocol-sftp/src/testdata/sshTestDir/
Modified:
oodt/trunk/protocol/protocol-sftp/pom.xml
oodt/trunk/protocol/protocol-sftp/src/test/org/apache/oodt/cas/protocol/sftp/DummyAuthenticationProvider.java
oodt/trunk/protocol/protocol-sftp/src/test/org/apache/oodt/cas/protocol/sftp/TestJschSftpProtocol.java
oodt/trunk/protocol/protocol-sftp/src/testdata/server.xml
Modified: oodt/trunk/protocol/protocol-sftp/pom.xml
URL: http://svn.apache.org/viewvc/oodt/trunk/protocol/protocol-sftp/pom.xml?rev=1179726&r1=1179725&r2=1179726&view=diff
==============================================================================
--- oodt/trunk/protocol/protocol-sftp/pom.xml (original)
+++ oodt/trunk/protocol/protocol-sftp/pom.xml Thu Oct 6 18:00:58 2011
@@ -85,6 +85,21 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.0.3</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.mina</groupId>
+ <artifactId>mina-core</artifactId>
+ <version>2.0.4</version>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
Modified: oodt/trunk/protocol/protocol-sftp/src/test/org/apache/oodt/cas/protocol/sftp/DummyAuthenticationProvider.java
URL: http://svn.apache.org/viewvc/oodt/trunk/protocol/protocol-sftp/src/test/org/apache/oodt/cas/protocol/sftp/DummyAuthenticationProvider.java?rev=1179726&r1=1179725&r2=1179726&view=diff
==============================================================================
--- oodt/trunk/protocol/protocol-sftp/src/test/org/apache/oodt/cas/protocol/sftp/DummyAuthenticationProvider.java (original)
+++ oodt/trunk/protocol/protocol-sftp/src/test/org/apache/oodt/cas/protocol/sftp/DummyAuthenticationProvider.java Thu Oct 6 18:00:58 2011
@@ -18,9 +18,14 @@ package org.apache.oodt.cas.protocol.sft
//JDK imports
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.PrintStream;
+import java.util.HashMap;
+import java.util.UUID;
//Apache imports
+import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -38,8 +43,11 @@ public class DummyAuthenticationProvider
Log log = LogFactory.getLog(DummyAuthenticationProvider.class);
+ private HashMap<String, String> userHomeDirs;
+
public DummyAuthenticationProvider() {
log.error("DummyAuthenticationProvider is in use. This is only for testing.");
+ userHomeDirs = new HashMap<String, String>();
}
@Override
@@ -50,7 +58,11 @@ public class DummyAuthenticationProvider
@Override
public String getHomeDirectory(String username) throws IOException {
- return new File("src/testdata").getAbsolutePath();
+ String homeDir = userHomeDirs.get(username);
+ if (homeDir != null) {
+ return homeDir;
+ }
+ return setupHomeDir(username);
}
@Override
@@ -69,4 +81,27 @@ public class DummyAuthenticationProvider
return true;
}
+ private String setupHomeDir(String username) throws IOException {
+ File tempFile = File.createTempFile("bogus", "bogus");
+ File tmpDir = tempFile.getParentFile();
+ tempFile.delete();
+ FileUtils.forceDeleteOnExit(tmpDir);
+ File homeDirFile = new File(tmpDir, "JschSftpTest/" + UUID.randomUUID());
+ File sshTestDir = new File(homeDirFile, "sshTestDir");
+ sshTestDir.mkdirs();
+ PrintStream ps = null;
+ try {
+ ps = new PrintStream(new FileOutputStream(new File(sshTestDir, "sshTestFile")));
+ ps.println("This is a ");
+ ps.println("test");
+ ps.println("file to test SFTP GET");
+ } catch (IOException e) {
+ throw e;
+ } finally {
+ try { ps.close(); } catch (Exception ignore) {}
+ }
+ System.out.println("HOME: " + homeDirFile.getAbsolutePath());
+ userHomeDirs.put(username, homeDirFile.getAbsolutePath());
+ return homeDirFile.getAbsolutePath();
+ }
}
Modified: oodt/trunk/protocol/protocol-sftp/src/test/org/apache/oodt/cas/protocol/sftp/TestJschSftpProtocol.java
URL: http://svn.apache.org/viewvc/oodt/trunk/protocol/protocol-sftp/src/test/org/apache/oodt/cas/protocol/sftp/TestJschSftpProtocol.java?rev=1179726&r1=1179725&r2=1179726&view=diff
==============================================================================
--- oodt/trunk/protocol/protocol-sftp/src/test/org/apache/oodt/cas/protocol/sftp/TestJschSftpProtocol.java (original)
+++ oodt/trunk/protocol/protocol-sftp/src/test/org/apache/oodt/cas/protocol/sftp/TestJschSftpProtocol.java Thu Oct 6 18:00:58 2011
@@ -19,19 +19,26 @@ package org.apache.oodt.cas.protocol.sft
//JUnit imports
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
+import javax.xml.parsers.ParserConfigurationException;
+
//OODT imports
import org.apache.commons.io.FileUtils;
+import org.apache.mina.util.AvailablePortFinder;
import org.apache.oodt.cas.protocol.ProtocolFile;
import org.apache.oodt.cas.protocol.exceptions.ProtocolException;
import org.apache.oodt.cas.protocol.sftp.auth.HostKeyAuthentication;
import org.apache.oodt.cas.protocol.util.ProtocolFileFilter;
+import org.xml.sax.SAXException;
//SshTools imports
import com.sshtools.daemon.SshDaemon;
+import com.sshtools.daemon.configuration.PlatformConfiguration;
+import com.sshtools.daemon.configuration.ServerConfiguration;
import com.sshtools.daemon.configuration.XmlServerConfigurationContext;
import com.sshtools.j2ssh.configuration.ConfigurationException;
import com.sshtools.j2ssh.configuration.ConfigurationLoader;
@@ -46,15 +53,51 @@ import junit.framework.TestCase;
*/
public class TestJschSftpProtocol extends TestCase {
- private static final int PORT = 2022;
-
- public void testPass() { }
-
+ private TestServerConfiguration serverConfig;
+ private PlatformConfiguration platformConfig;
+
@Override
public void setUp() {
- XmlServerConfigurationContext context = new XmlServerConfigurationContext();
- context.setServerConfigurationResource("src/testdata/server.xml");
- context.setPlatformConfigurationResource("src/testdata/platform.xml");
+ XmlServerConfigurationContext context = new XmlServerConfigurationContext() {
+
+ @Override
+ public void initialize() throws ConfigurationException {
+ try {
+ serverConfig = new TestServerConfiguration(ConfigurationLoader.loadFile("src/testdata/server.xml"));
+ } catch (Exception e) {
+ throw new ConfigurationException(e.getMessage());
+ }
+ try {
+ platformConfig = new PlatformConfiguration(ConfigurationLoader.loadFile("src/testdata/platform.xml")) {};
+ } catch (Exception e) {
+ throw new ConfigurationException(e.getMessage());
+ }
+ }
+
+ @Override
+ public boolean isConfigurationAvailable(@SuppressWarnings("rawtypes") Class cls) {
+ try {
+ getConfiguration(cls);
+ return true;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+ @Override
+ public Object getConfiguration(@SuppressWarnings("rawtypes") Class cls) throws ConfigurationException {
+ if (ServerConfiguration.class.equals(cls)) {
+ return serverConfig;
+ } else if (PlatformConfiguration.class.equals(cls)) {
+ return platformConfig;
+ } else {
+ throw new ConfigurationException(cls.getName()
+ + " configuration not available");
+ }
+ }
+ };
+// context.setServerConfigurationResource("src/testdata/server.xml");
+// context.setPlatformConfigurationResource("src/testdata/platform.xml");
try {
ConfigurationLoader.initialize(false, context);
} catch (ConfigurationException e1) {
@@ -67,14 +110,14 @@ public class TestJschSftpProtocol extend
try {
SshDaemon.start();
} catch (Exception e) {
- try { SshDaemon.stop(); } catch (Exception ignore) {}
+ try { SshDaemon.stop(); } catch (Exception ignore) { e.printStackTrace(); }
fail("Failed to start SSH daemon");
}
}
});
}
-
+
@Override
public void tearDown() {
try {
@@ -83,29 +126,32 @@ public class TestJschSftpProtocol extend
fail("Failed to stop SSH daemon");
}
}
-
- public void XtestCDandPWDandLS() throws IOException, ProtocolException {
- JschSftpProtocol sftpProtocol = new JschSftpProtocol(PORT);
+
+ public void testCDandPWDandLS() throws IOException, ProtocolException {
+ JschSftpProtocol sftpProtocol = new JschSftpProtocol(serverConfig.getPort());
sftpProtocol.connect("localhost", new HostKeyAuthentication("bfoster", "",
- new File("src/testdata/sample-dsa.pub").getAbsoluteFile().getAbsolutePath()));
+ new File("src/testdata/sample-dsa.pub").getAbsoluteFile()
+ .getAbsolutePath()));
ProtocolFile homeDir = sftpProtocol.pwd();
ProtocolFile testDir = new ProtocolFile(homeDir, "sshTestDir", true);
sftpProtocol.cd(testDir);
assertEquals(testDir, sftpProtocol.pwd());
- List<ProtocolFile> lsResults = new ArrayList<ProtocolFile>(sftpProtocol.ls(new ProtocolFileFilter() {
- public boolean accept(ProtocolFile file) {
- return file.getName().equals("sshTestFile");
- }
- }));
+ List<ProtocolFile> lsResults = new ArrayList<ProtocolFile>(
+ sftpProtocol.ls(new ProtocolFileFilter() {
+ public boolean accept(ProtocolFile file) {
+ return file.getName().equals("sshTestFile");
+ }
+ }));
assertEquals(1, lsResults.size());
ProtocolFile testFile = lsResults.get(0);
assertEquals(new ProtocolFile(testDir, "sshTestFile", false), testFile);
}
-
- public void XtestGET() throws ProtocolException, IOException {
- JschSftpProtocol sftpProtocol = new JschSftpProtocol(PORT);
+
+ public void testGET() throws ProtocolException, IOException {
+ JschSftpProtocol sftpProtocol = new JschSftpProtocol(serverConfig.getPort());
sftpProtocol.connect("localhost", new HostKeyAuthentication("bfoster", "",
- new File("src/testdata/sample-dsa.pub").getAbsoluteFile().getAbsolutePath()));
+ new File("src/testdata/sample-dsa.pub").getAbsoluteFile()
+ .getAbsolutePath()));
File bogusFile = File.createTempFile("bogus", "bogus");
File tmpFile = new File(bogusFile.getParentFile(), "TestJschSftpProtocol");
bogusFile.delete();
@@ -113,7 +159,36 @@ public class TestJschSftpProtocol extend
sftpProtocol.cd(new ProtocolFile("sshTestDir", true));
File testDownloadFile = new File(tmpFile, "testDownloadFile");
sftpProtocol.get(new ProtocolFile("sshTestFile", false), testDownloadFile);
- assertTrue(FileUtils.contentEquals(new File("src/testdata/sshTestDir/sshTestFile"), testDownloadFile));
+ assertTrue(FileUtils.contentEquals(new File(
+ "src/testdata/sshTestDir/sshTestFile"), testDownloadFile));
FileUtils.forceDelete(tmpFile);
}
+
+ private class TestServerConfiguration extends ServerConfiguration {
+
+ int commandPort = -1;
+ int port = -1;
+
+ public TestServerConfiguration(InputStream is) throws SAXException, ParserConfigurationException, IOException {
+ super(is);
+ }
+
+ @Override
+ public int getCommandPort() {
+ if (commandPort == -1) {
+ return commandPort = AvailablePortFinder.getNextAvailable(12222);
+ } else {
+ return commandPort;
+ }
+ }
+
+ @Override
+ public int getPort() {
+ if (port == -1) {
+ return port = AvailablePortFinder.getNextAvailable(2022);
+ } else {
+ return port;
+ }
+ }
+ }
}
Modified: oodt/trunk/protocol/protocol-sftp/src/testdata/server.xml
URL: http://svn.apache.org/viewvc/oodt/trunk/protocol/protocol-sftp/src/testdata/server.xml?rev=1179726&r1=1179725&r2=1179726&view=diff
==============================================================================
--- oodt/trunk/protocol/protocol-sftp/src/testdata/server.xml (original)
+++ oodt/trunk/protocol/protocol-sftp/src/testdata/server.xml Thu Oct 6 18:00:58 2011
@@ -2,7 +2,7 @@
<ServerConfiguration>
<!-- this key needs generating by the provided keygen tool -->
<ServerHostKey PrivateKeyFile="src/testdata/sample-dsa.key"/>
- <Port>2022</Port>
+ <Port>2323</Port>
<!-- UserConfigDirectory>src/testdata</UserConfigDirectory -->
<!-- add other authentication methods as desired -->
<AllowedAuthentication>password</AllowedAuthentication>