?? stresstester.java
字號:
// Copyright (c) 2000 Just Objects B.V. <just@justobjects.nl>// Distributable under LGPL license. See terms of license at gnu.org.package nl.justobjects.pushlet.test;import nl.justobjects.pushlet.client.PushletClient;import nl.justobjects.pushlet.client.PushletClientListener;import nl.justobjects.pushlet.core.Event;import nl.justobjects.pushlet.core.Protocol;import nl.justobjects.pushlet.util.PushletException;import nl.justobjects.pushlet.util.Rand;import java.util.HashMap;import java.util.Map;/** * Tester to demonstrate Pushlet use in Java applications. * <p/> * This program does two things: * (1) it subscribes to the subject "test/ping" * (2) it publishes an Event with subject "/test/ping" every few seconds. * * @author Just van den Broecke - Just Objects © * @version $Id: StressTester.java,v 1.2 2007/11/09 13:16:57 justb Exp $ */public class StressTester implements Protocol { static private String host = "localhost"; static private int port = 8080; static private int TESTER_COUNT = 10; private static final String SUBJECT = "/test/ping"; private static final long MIN_PUBLISH_INTERVAL_MILLIS = 200; private static final long MAX_PUBLISH_INTERVAL_MILLIS = 1000; private static final long MIN_SUBSCRIBER_INTERVAL_MILLIS = 500; private static final long MAX_SUBSCRIBER_INTERVAL_MILLIS = 1000; public StressTester() { } public void run() { new EventPublisher().start(); new EventSubscriber().start(); } /** * Generic print. */ public void err(String s) { System.out.println("[StressTester] ERROR" + s); } /** * Generic print. */ public void p(String s) { System.out.println("[StressTester] " + s); } private class EventSubscriber extends Thread implements PushletClientListener { private PushletClient pushletClient; public void run() { while (true) { // Create and start a Pushlet client; we receive callbacks // through onHeartbeat() and onData(). try { pushletClient = new PushletClient(host, port); // pushletClient.setDebug(true); pushletClient.join(); pushletClient.listen(this, Protocol.MODE_STREAM); //p("listening"); // Test subscribe/unsubscribe String subscriptionId = pushletClient.subscribe(SUBJECT); pushletClient.unsubscribe(subscriptionId); // The real subscribe subscriptionId = pushletClient.subscribe(SUBJECT); //p("sleeping"); sleepRandom(); //p("leaving"); pushletClient.unsubscribe(subscriptionId); pushletClient.leave(); } catch (Throwable t) { err("Error in EventSubscriber t=" + t); return; } } } /** * Error occurred. */ public void onError(String message) { // p(message); } /** * Abort event from server. */ public void onAbort(Event theEvent) { //p("onAbort received: " + theEvent); } /** * Data event from server. */ public void onData(Event theEvent) { // Calculate round trip delay long then = Long.parseLong(theEvent.getField("time")); long delay = System.currentTimeMillis() - then; p("onData: ping #" + theEvent.getField("seqNr") + " in " + delay + " ms"); } /** * Heartbeat event from server. */ public void onHeartbeat(Event theEvent) { //p("onHeartbeat received: " + theEvent); } private void sleepRandom() throws InterruptedException { Thread.sleep(Rand.randomLong(MIN_SUBSCRIBER_INTERVAL_MILLIS, MAX_SUBSCRIBER_INTERVAL_MILLIS)); } } private class EventPublisher extends Thread { private PushletClient pushletClient; public void run() { // Create and start a Pushlet client; we receive callbacks // through onHeartbeat() and onData(). try { pushletClient = new PushletClient(host, port); pushletClient.join(); // p("pushletClient started"); } catch (PushletException pe) { err("Error in EventPublisher pe=" + pe); return; } // Publish an event to the server every N seconds. Map eventData = new HashMap(2); int seqNr = 1; while (true) { try { // Create event data eventData.put("seqNr", "" + seqNr++); eventData.put("time", "" + System.currentTimeMillis()); // POST event to pushlet server pushletClient.publish(SUBJECT, eventData); Thread.sleep(Rand.randomLong(MIN_PUBLISH_INTERVAL_MILLIS, MAX_PUBLISH_INTERVAL_MILLIS)); } catch (Exception e) { p("EventPublisher exception: " + e); return; } } } } /** * Main program. */ public static void main(String args[]) { if (args.length > 0) { TESTER_COUNT = Integer.parseInt(args[0]); } if (args.length == 3) { host = args[1]; port = Integer.parseInt(args[2]); } for (int i = 0; i < TESTER_COUNT; i++) { new StressTester().run(); } }}/* * $Log: StressTester.java,v $ * Revision 1.2 2007/11/09 13:16:57 justb * use Rand from util package (and and Rand.java to pushlet client jar * * Revision 1.1 2005/02/28 17:16:58 justb * simple stress tester * * */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -