jcifs_1.3.3.examples.SmbThreadTest Maven / Gradle / Ivy
Go to download
JCIFS is an Open Source client library that implements the CIFS/SMB networking protocol in 100% Java
import jcifs.smb.SmbFile;
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbAuthException;
import java.util.Random;
import java.net.MalformedURLException;
import java.io.IOException;
public class SmbThreadTest extends Thread {
int maxDepth;
int id;
String url;
NtlmPasswordAuthentication auth;
long start_time;
static Random rnd = new Random(1234);
static long test_time = 100*1000;
static long num_sessions = 1000;
static long session_time = (test_time / num_sessions) * 400;
static boolean verbose = false;
SmbThreadTest(NtlmPasswordAuthentication auth, String url, int maxDepth, int id) {
this.url = url;
this.auth = auth;
this.maxDepth = maxDepth;
this.id = id;
this.start_time = System.currentTimeMillis();
}
void traverse( SmbFile f, int depth ) throws MalformedURLException, IOException {
if( depth == 0 ) {
return;
}
SmbFile[] l = null;
try {
if (f.exists())
l = f.listFiles();
} catch (SmbAuthException ae) {
System.err.println("SAE: " + ae.getMessage());
ae.printStackTrace( System.err );
return;
} catch (NullPointerException npe) {
System.err.println("NPE");
npe.printStackTrace( System.err );
return;
}
for(int i = 0; l != null && i < l.length; i++ ) {
try {
boolean exists = l[i].exists();
if (verbose) {
System.out.print(id);
for( int j = maxDepth - depth; j > 0; j-- ) {
System.out.print( " " );
}
System.out.println( l[i] + " " + exists );
}
if( l[i].isDirectory() ) {
traverse( l[i], depth - 1 );
}
} catch (SmbAuthException ae) {
System.err.println("SAE: " + ae.getMessage());
ae.printStackTrace( System.err );
} catch( IOException ioe ) {
System.out.println( l[i] + ":" );
ioe.printStackTrace( System.out );
}
try {
Thread.sleep(Math.abs(rnd.nextInt(2)+1));
} catch (InterruptedException e) {
}
}
}
public void run () {
SmbFile f = null;
int runs = 0;
while(true) {
try {
Thread.sleep(100);
}catch (InterruptedException e) {}
while (f == null) {
try {
f = new SmbFile(url, auth);
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}
try {
traverse(f, maxDepth);
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
runs++;
long time = System.currentTimeMillis() - start_time;
if (time > session_time) {
System.err.println(id + " exit (" + time/runs + ")");
return;
}
}
}
public static void createThreads(String url, int i, int count) {
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null);
int num = 0;
System.err.println("creating " + count + " threads");
while (num < count) {
SmbThreadTest sc = new SmbThreadTest(auth, url, 3, i * 100 + num++);
sc.start();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
}
public static void main(String[] argv) throws Exception {
for(int i = 0; i < num_sessions; i++) {
createThreads(argv[0], i+1, Math.abs(rnd.nextInt(4)+1));
sleep((test_time / num_sessions)*100);
}
sleep(6000000);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy