diff --git a/src/helma/xmlrpc/test/AsyncBenchmark.java b/src/helma/xmlrpc/test/AsyncBenchmark.java new file mode 100644 index 00000000..a99fc194 --- /dev/null +++ b/src/helma/xmlrpc/test/AsyncBenchmark.java @@ -0,0 +1,104 @@ +/** + * Copyright 1999 Hannes Wallnoefer + */ + +package helma.xmlrpc.test; + +import helma.xmlrpc.*; +import java.util.*; +import java.io.IOException; +import java.net.URL; + +public class AsyncBenchmark implements Runnable { + + XmlRpcClient client; + static String url; + static int clients = 16; + static int loops = 100; + + int calls = 0; + + int gCalls = 0, gErrors = 0; + long start; + + + public AsyncBenchmark () throws Exception { + client = new XmlRpcClientLite (url); + + Vector args = new Vector (); + // Some JITs (Symantec, IBM) have problems with several Threads + // starting all at the same time. + // This initial XML-RPC call seems to pacify them. + args.addElement (new Integer (123)); + client.execute ("math.abs", args); + + start = System.currentTimeMillis (); + + for (int i=0; i 0 && args.length < 3) { + url = args[0]; + XmlRpc.setKeepAlive (true); + if (args.length == 2) + XmlRpc.setDriver (args[1]); + new AsyncBenchmark (); + } else { + System.err.println ("Usage: java helma.xmlrpc.Benchmark URL [SAXDriver]"); + } + } + + class Callback implements AsyncCallback { + + + int n; + + public Callback (Integer n) { + this.n = Math.abs (n.intValue()); + } + + public synchronized void handleResult (Object result, URL url, String method) { + if (n == ((Integer) result).intValue ()) + gCalls += 1; + else + gErrors += 1; + if (gCalls + gErrors >= clients*loops) + printStats (); + } + + public synchronized void handleError (Exception exception, URL url, String method) { + System.err.println (exception); + exception.printStackTrace (); + gErrors += 1; + if (gCalls + gErrors >= clients*loops) + printStats (); + } + + public void printStats () { + System.err.println (""); + System.err.println (gCalls+" calls, "+gErrors+" errors in "+(System.currentTimeMillis()-start)+" millis"); + System.err.println ((1000*(gCalls+gErrors)/(System.currentTimeMillis()-start))+" calls per second"); + } + +} + + +} diff --git a/src/helma/xmlrpc/test/Benchmark.java b/src/helma/xmlrpc/test/Benchmark.java new file mode 100644 index 00000000..f876c4c4 --- /dev/null +++ b/src/helma/xmlrpc/test/Benchmark.java @@ -0,0 +1,107 @@ +/** + * Copyright 1999 Hannes Wallnoefer + */ + +package helma.xmlrpc.test; + +import helma.xmlrpc.*; +import java.util.*; +import java.io.IOException; + +public class Benchmark implements Runnable { + + XmlRpcClient client; + static String url; + static int clients = 16; + static int loops = 100; + + int gCalls = 0, gErrors = 0; + + Date date; + + public Benchmark () throws Exception { + client = new XmlRpcClientLite (url); + + Vector args = new Vector (); + // Some JITs (Symantec, IBM) have problems with several Threads + // starting all at the same time. + // This initial XML-RPC call seems to pacify them. + args.addElement (new Integer (123)); + client.execute ("math.abs", args); + date = new Date (); + date = new Date ((date.getTime()/1000)*1000); + + for (int i=0; i 0 && args.length < 3) { + url = args[0]; + XmlRpc.setKeepAlive (true); + if (args.length == 2) + XmlRpc.setDriver (args[1]); + new Benchmark (); + } else { + System.err.println ("Usage: java helma.xmlrpc.Benchmark URL [SAXDriver]"); + } + } + +} diff --git a/src/helma/xmlrpc/test/TestBase64.java b/src/helma/xmlrpc/test/TestBase64.java new file mode 100644 index 00000000..dc885d86 --- /dev/null +++ b/src/helma/xmlrpc/test/TestBase64.java @@ -0,0 +1,94 @@ +/** + * Copyright 1999 Hannes Wallnoefer + */ + +package helma.xmlrpc.test; + +import helma.xmlrpc.*; +import java.util.*; +import java.io.IOException; + +public class TestBase64 implements Runnable { + + XmlRpcClient client; + static String url; + static int clients = 1; // 6; + static int loops = 1; //00; + + int gCalls = 0, gErrors = 0; + + byte[] data; + + public TestBase64 () throws Exception { + client = new XmlRpcClientLite (url); + + Vector args = new Vector (); + // Some JITs (Symantec, IBM) have problems with several Threads + // starting all at the same time. + // This initial XML-RPC call seems to pacify them. + args.addElement (new Integer (123)); + client.execute ("math.abs", args); + + data = new byte[20000]; + for (int j=0; j 0 && args.length < 3) { + url = args[0]; + XmlRpc.setKeepAlive (true); + // XmlRpc.setDebug (true); + if (args.length == 2) + XmlRpc.setDriver (args[1]); + new TestBase64 (); + } else { + System.err.println ("Usage: java helma.xmlrpc.Benchmark URL [SAXDriver]"); + } + } + +}