import java.io.*;
import jcifs.smb.*;
import java.util.*;
class Worker extends Thread {
Torture1 t;
Exception e;
Worker( Torture1 t ) {
this.t = t;
e = null;
}
public void run() {
try {
t.torture();
} catch( Exception e ) {
this.e = e;
}
}
}
public class Torture1 {
Properties prp;
Torture1( Properties prp ) {
this.prp = prp;
}
void compare( SmbFile f1, SmbFile f2 ) throws Exception {
if( f1.isDirectory() && f2.isDirectory() ) {
SmbFile[] dirents = f1.listFiles();
SmbFile f;
for( int i = 0; i < dirents.length; i++ ) {
f = new SmbFile( f2, dirents[i].getName() );
compare( dirents[i], f );
}
}
if( f1.isDirectory() != f2.isDirectory() ) {
System.err.println( "directory comparison failed" );
}
if( f1.isFile() != f2.isFile() ) {
System.err.println( "file comparison failed" );
}
if( f1.getType() != f2.getType() ) {
System.err.println( "type comparison failed" );
}
if( f1.getName().equals( f2.getName() ) == false ) {
System.err.println( "name comparison failed: " + f1.getName() + " " + f2.getName() );
}
if( f1.length() != f2.length() ) {
System.err.println( "length comparison failed: " + f1.length() + " " + f2.length() );
}
}
void torture() throws Exception {
String domain, username, password, server, share, directory;
NtlmPasswordAuthentication ntlm;
domain = prp.getProperty( "torture.dst.domain" );
username = prp.getProperty( "torture.dst.username" );
password = prp.getProperty( "torture.dst.password" );
ntlm = new NtlmPasswordAuthentication( domain, username, password );
server = prp.getProperty( "torture.dst.server" );
share = prp.getProperty( "torture.dst.share" );
directory = prp.getProperty( "torture.dst.directory" );
SmbFile dst = new SmbFile( "smb://", ntlm );
dst = new SmbFile( dst, server );
dst = new SmbFile( dst, share );
dst = new SmbFile( dst, directory );
SmbFile src = new SmbFile( prp.getProperty( "torture.src.url" ));
System.err.println( src + " --> " + dst );
System.in.read();
if( dst.exists() ) {
dst.delete();
}
src.copyTo( dst );
System.err.println( "CopyTo done" );
System.in.read();
compare( src, dst );
System.err.println( "Test Complete" );
}
public static void main( String[] argv ) throws Exception {
Properties prp = new Properties();
prp.load( new FileInputStream( "torture.prp" ));
Torture1 t = new Torture1( prp );
Worker w = new Worker( t );
w.start();
w.join();
if( w.e != null ) {
throw w.e;
}
}
}