Package

Source Code of AutobahnClientTest

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.nio.ByteBuffer;

import org.java_websocket.WebSocket;
import org.java_websocket.WebSocketImpl;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft;
import org.java_websocket.drafts.Draft_17;
import org.java_websocket.framing.FrameBuilder;
import org.java_websocket.framing.Framedata;
import org.java_websocket.handshake.ServerHandshake;

public class AutobahnClientTest extends WebSocketClient {

  public AutobahnClientTest( Draft d , URI uri ) {
    super( uri, d );
  }
  /**
   * @param args
   */
  public static void main( String[] args ) {
    System.out.println( "Testutility to profile/test this implementation using the Autobahn suit.\n" );
    System.out.println( "Type 'r <casenumber>' to run a testcase. Example: r 1" );
    System.out.println( "Type 'r <first casenumber> <last casenumber>' to run a testcase. Example: r 1 295" );
    System.out.println( "Type 'u' to update the test results." );
    System.out.println( "Type 'ex' to terminate the program." );
    System.out.println( "During sequences of cases the debugoutput will be turned of." );

    System.out.println( "You can now enter in your commands:" );

    try {
      BufferedReader sysin = new BufferedReader( new InputStreamReader( System.in ) );

      /*First of the thinks a programmer might want to change*/
      Draft d = new Draft_17();
      String clientname = "tootallnate/websocket";

      String protocol = "ws";
      String host = "localhost";
      int port = 9001;

      String serverlocation = protocol + "://" + host + ":" + port;
      String line = "";
      AutobahnClientTest e;
      URI uri = null;
      String perviousline = "";
      String nextline = null;
      Integer start = null;
      Integer end = null;

      while ( !line.contains( "ex" ) ) {
        try {
          if( nextline != null ) {
            line = nextline;
            nextline = null;
            WebSocketImpl.DEBUG = false;
          } else {
            System.out.print( ">" );
            line = sysin.readLine();
            WebSocketImpl.DEBUG = true;
          }
          if( line.equals( "l" ) ) {
            line = perviousline;
          }
          String[] spl = line.split( " " );
          if( line.startsWith( "r" ) ) {
            if( spl.length == 3 ) {
              start = new Integer( spl[ 1 ] );
              end = new Integer( spl[ 2 ] );
            }
            if( start != null && end != null ) {
              if( start > end ) {
                start = null;
                end = null;
              } else {
                nextline = "r " + start;
                start++;
                if( spl.length == 3 )
                  continue;
              }
            }
            uri = URI.create( serverlocation + "/runCase?case=" + spl[ 1 ] + "&agent=" + clientname );

          } else if( line.startsWith( "u" ) ) {
            WebSocketImpl.DEBUG = false;
            uri = URI.create( serverlocation + "/updateReports?agent=" + clientname );
          } else if( line.startsWith( "d" ) ) {
            try {
              d = (Draft) Class.forName( "Draft_" + spl[ 1 ] ).getConstructor().newInstance();
            } catch ( Exception ex ) {
              System.out.println( "Could not change draft" + ex );
            }
          }
          if( uri == null ) {
            System.out.println( "Do not understand the input." );
            continue;
          }
          System.out.println( "//////////////////////Exec: " + uri.getQuery() );
          e = new AutobahnClientTest( d, uri );
          Thread t = new Thread( e );
          t.start();
          try {
            t.join();

          } catch ( InterruptedException e1 ) {
            e1.printStackTrace();
          } finally {
            e.close();
          }
        } catch ( ArrayIndexOutOfBoundsException e1 ) {
          System.out.println( "Bad Input r 1, u 1, d 10, ex" );
        } catch ( IllegalArgumentException e2 ) {
          e2.printStackTrace();
        }

      }
    } catch ( ArrayIndexOutOfBoundsException e ) {
      System.out.println( "Missing server uri" );
    } catch ( IllegalArgumentException e ) {
      e.printStackTrace();
      System.out.println( "URI should look like ws://localhost:8887 or wss://echo.websocket.org" );
    } catch ( IOException e ) {
      e.printStackTrace(); // for System.in reader
    }
    System.exit( 0 );
  }

  @Override
  public void onMessage( String message ) {
    send( message );
  }

  @Override
  public void onMessage( ByteBuffer blob ) {
    getConnection().send( blob );
  }

  @Override
  public void onError( Exception ex ) {
    System.out.println( "Error: " );
    ex.printStackTrace();
  }

  @Override
  public void onOpen( ServerHandshake handshake ) {
  }

  @Override
  public void onClose( int code, String reason, boolean remote ) {
    System.out.println( "Closed: " + code + " " + reason );
  }

  @Override
  public void onWebsocketMessageFragment( WebSocket conn, Framedata frame ) {
    FrameBuilder builder = (FrameBuilder) frame;
    builder.setTransferemasked( true );
    getConnection().sendFrame( frame );
  }

}
TOP

Related Classes of AutobahnClientTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.