FileDocCategorySizeDatePackage
ScpTest.javaAPI DocApache Ant 1.705737Wed Dec 13 06:16:20 GMT 2006org.apache.tools.ant.taskdefs.optional.ssh

ScpTest

public class ScpTest extends TestCase
This is a unit test for the Scp task in Ant. It must be configured with command line options in order for it to work. Here are the options: scp.tmp This is a local path to a temporary directory for this task to use. scp.host This is the remote location of the form: "user:password@host:/path/to/directory" scp.port The port of the listening SSH service. Defaults to 22. (optional) scp.known.hosts The file containing the public keys of known hosts. Must be a SSH2 version file, but supports RSA and DSA keys. If it is not present this task setTrust() to true. (optional)

Fields Summary
private File
tempDir
private String
sshHostUri
private int
port
private String
knownHosts
private List
cleanUpList
Constructors Summary
public ScpTest(String testname)


       
        super(testname);
    
Methods Summary
public voidaddCleanup(java.io.File file)

        cleanUpList.add( file );
    
private voidcompareFiles(java.io.File src, java.io.File dest)

        FilesMatch match = new FilesMatch();
        match.setFile1( src );
        match.setFile2( dest );

        assertTrue( "Assert files are equal.", match.eval() );
    
private ScpcreateTask()

        Scp scp = new Scp();
        Project p = new Project();
        p.init();
        scp.setProject( p );
        if( knownHosts != null ) {
            scp.setKnownhosts( knownHosts );
        } else {
            scp.setTrust( true );
        }
        scp.setPort( port );
        return scp;
    
private java.io.FilecreateTemporaryFile()

        File uploadFile;
        uploadFile = File.createTempFile( "scp", "test", tempDir );
        FileWriter writer = new FileWriter( uploadFile );
        writer.write("Can you hear me now?\n");
        writer.close();
        addCleanup( uploadFile );
        return uploadFile;
    
protected voidsetUp()

        cleanUpList.clear();
    
protected voidtearDown()

        for( Iterator i = cleanUpList.iterator(); i.hasNext(); ) {
            File file = (File) i.next();
            file.delete();
        }
    
public voidtestMultiUploadAndDownload()

        List uploadList = new ArrayList();
        for( int i = 0; i < 5; i++ ) {
            uploadList.add( createTemporaryFile() );
        }

        Scp scp = createTask();
        FilenameSelector selector = new FilenameSelector();
        selector.setName( "scp*" );
        FileSet fileset = new FileSet();
        fileset.setDir( tempDir );
        fileset.addFilename( selector );
        scp.addFileset( fileset );
        scp.setTodir( sshHostUri );
        scp.execute();

        File multi = new File( tempDir, "multi" );
        multi.mkdir();
        addCleanup( multi );

        Scp scp2 = createTask();
        scp2.setFile( sshHostUri + "/scp*" );
        scp2.setTodir( multi.getPath() );
        scp2.execute();

        FilesMatch match = new FilesMatch();
        for( Iterator i = uploadList.iterator(); i.hasNext(); ) {
            File f = (File)i.next();
            match.setFile1( f );
            File f2 = new File( multi, f.getName() );
            match.setFile2( f2 );
            assertTrue("Assert file '" + f.getPath() + "' and file '" +
                    f2.getPath() + "'", match.eval() );
        }
    
public voidtestSingleFileUploadAndDownload()

        File uploadFile = createTemporaryFile();

        Scp scpTask = createTask();
        scpTask.setFile( uploadFile.getPath() );
        scpTask.setTodir( sshHostUri );
        scpTask.execute();

        File testFile = new File( tempDir.getPath() + File.separator +
                "download-testSingleFileUploadAndDownload.test" );
        addCleanup( testFile );
        assertTrue( "Assert that the testFile does not exist.",
                !testFile.exists() );

        scpTask.setFile( sshHostUri + "/" + uploadFile.getName() );
        scpTask.setTodir( testFile.getPath() );
        scpTask.execute();

        assertTrue( "Assert that the testFile exists.", testFile.exists() );
        compareFiles( uploadFile, testFile );