5
import java.util.regex.*;
7
public class wcs_benchmark {
8
static String hostname;
9
static int wcs_port = 5280;
11
static int offset = 0;
13
static HttpURLConnection httpcon;
14
static String sids[]; // he we store the sids from logged in users
16
/* default values as they are used in jabber testsuite */
17
static String user_prefix = "test_";
18
static String pass = "password";
21
static int num_threads = 16;
22
static Thread threads[];
24
static String default_message = "HalloWelt";
26
public static void usage() {
27
System.out.println("java wcs_benchmark <host>:[port] <users> [offset]");
31
public static String getURL(String url) {
33
httpcon = (HttpURLConnection)(new URL("http",hostname,wcs_port,url)).openConnection();
34
// System.out.println(httpcon.getResponseMessage());
35
BufferedReader br = new BufferedReader(new InputStreamReader(httpcon.getInputStream()));
39
while ((content = br.readLine()) != null) { retval += content; }
43
} catch (IOException e) {
44
System.err.println(e.toString());
49
public static void main(String args[]) {
50
/* do some command line parsing */
52
if (args.length < 2 || args.length > 3)
55
if (args[0].indexOf(':') != -1) {
56
hostname = args[0].substring(0,args[0].indexOf(':'));
57
wcs_port = (new Integer(args[0].substring(args[0].indexOf(':')+1))).intValue();
61
users = (new Integer(args[1])).intValue();
62
sids = new String[users];
65
offset = new Integer(args[2]).intValue();
67
threads = new Thread[num_threads];
73
System.out.print("Logging in "+ users+" users ");
74
Date starttime = new Date();
76
Pattern sid = Pattern.compile(".*jabber.sid='(.*)';.*");
78
for (int i=offset; i<users+offset; i++) {
79
String url = "/login-sid.js?jid="+user_prefix+i+"@"+hostname+"&pass="+pass;
81
Matcher m = sid.matcher(getURL(url));
83
sids[i-offset] = m.group(1);
85
System.err.println("Couldn't get sid for user test_"+i);
90
getURL("/presence.js?sid="+sids[i-offset]+"&status=available");
93
getURL("/roster.js?sid="+sids[i-offset]);
95
System.out.print(".");
98
Date endtime = new Date();
100
System.out.println(" done (" + (endtime.getTime()-starttime.getTime())/1000.0 + "sec.)");
102
// for (int i=0;i<sids.length;i++)
103
// System.out.println(sids[i]);
106
* created workers and let them work
108
// for (int i=0; i<threads.length; i++)
109
// threads[i] = new Thread(new BenchmarkWorker(i));
110
// for (int i=0; i<threads.length; i++)
111
// threads[i].start();
112
// for (int i=0; i<threads.length; i++)
113
// threads[i].join();
116
int request_counter = 0;
118
java.util.Random rand = new java.util.Random();
119
starttime = new Date();
120
int num_requests = 10000;
121
while (request_counter++ < num_requests) {
123
if (request_counter%10==0) {
124
urls = new String[4];
125
urls[0] = "/logout-sid.js?sid=";
126
urls[1] = "/login-sid.js";
127
urls[2] = "/presence.js?sid=";
128
urls[3] = "/roster.js?sid=";
129
System.out.print(" L");
130
} else if (request_counter%3==0) {
131
urls = new String[1];
132
urls[0] = "/message.js?body="+default_message+"&sid=";
133
System.out.print(" M");
135
urls = new String[1];
136
urls[0] = "/cache.js?sid=";
140
int user = rand.nextInt(users);
141
// System.out.print(" "+user);
143
for (int i=0; i<urls.length; i++) {
145
if (urls[i].indexOf("login-sid") != -1) {
146
url = urls[i] + "?jid="+user_prefix+user+"@"+hostname+"&pass="+pass;
147
Matcher m = sid.matcher(getURL(url));
149
sids[i] = m.group(1);
151
System.err.println("Couldn't get sid for user test_"+i);
155
url = urls[i] + sids[user];
161
endtime = new Date();
162
double duration = (endtime.getTime()-starttime.getTime())/1000.0;
164
System.out.println(" 1000 requests served in " + duration + "sec. ("+num_requests/duration+"/sec)");
170
System.out.print("Logging out users ");
171
for (int i=0; i<users; i++) {
172
String url = "/logout-sid.js?sid="+sids[i];
174
System.out.print('.');
176
System.out.println(" done.");