Package com.yahoo.omid.tso

Source Code of com.yahoo.omid.tso.TransactionClient

/**
* Copyright (c) 2011 Yahoo! Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License. See accompanying LICENSE file.
*/

package com.yahoo.omid.tso;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.jboss.netty.channel.ChannelFactory;
import org.jboss.netty.channel.group.ChannelGroup;
import org.jboss.netty.channel.group.DefaultChannelGroup;
import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;


/**
* Simple Transaction Client using Serialization
* @author maysam
*
*/
public class TransactionClient {

    /**
     * Main class for Client taking from two to four arguments<br>
     * -host for server<br>
     * -port for server<br>
     * -number of message (default is 256)<br>
     * -MAX_IN_FLIGHT
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        // Print usage if no argument is specified.
        if (args.length < 2 || args.length > 7) {
            System.err
                    .println("Usage: " +
                            TransactionClient.class.getSimpleName() +
                            " <host> <port> [<number of messages>] [<MAX_IN_FLIGHT>] [<connections>] [<pause>] [<% reads>]");
            return;
        }

        // Parse options.
        String host = args[0];
        int port = Integer.parseInt(args[1]);
        int nbMessage;

        if (args.length >= 3) {
            nbMessage = Integer.parseInt(args[2]);
        } else {
            nbMessage = 256;
        }
        int inflight = 10;
        if (args.length >= 4) {
            inflight = Integer.parseInt(args[3]);
        }
       
        int runs = 1;
        if (args.length >= 5) {
           runs = Integer.parseInt(args[4]);
        }

        boolean pauseClient = false;
        if (args.length >= 6) {
           pauseClient = Boolean.parseBoolean(args[5]);
        }
       
        float percentRead = 0;
        if (args.length >= 7) {
           percentRead = Float.parseFloat(args[6]);
        }

        // *** Start the Netty configuration ***

        // Start client with Nb of active threads = 3 as maximum.
        ChannelFactory factory = new NioClientSocketChannelFactory(Executors
                .newCachedThreadPool(), Executors.newCachedThreadPool(), 30);

        // Create the global ChannelGroup
        ChannelGroup channelGroup = new DefaultChannelGroup(
                TransactionClient.class.getName());
       
        List<ClientHandler> handlers = new ArrayList<ClientHandler>();

        Configuration conf = HBaseConfiguration.create();
        conf.set("tso.host", host);
        conf.setInt("tso.port", port);
        conf.setInt("tso.executor.threads", 10);

        for(int i = 0; i < runs; ++i) {
         // Create the associated Handler
           ClientHandler handler = new ClientHandler(conf, nbMessage, inflight, pauseClient, percentRead);
  
           // *** Start the Netty running ***
  
           System.out.println("PARAM MAX_ROW: " + ClientHandler.MAX_ROW);
           System.out.println("PARAM DB_SIZE: " + ClientHandler.DB_SIZE);
           System.out.println("pause " + pauseClient);
           System.out.println("readPercent " + percentRead);
  
           handlers.add(handler);
          
           if ((i - 1) % 20 == 0) Thread.sleep(1000);
        }
       
        // Wait for the Traffic to finish
        for (ClientHandler handler : handlers) {
           boolean result = handler.waitForAll();
           System.out.println("Result: " + result);
        }

        // *** Start the Netty shutdown ***

        // Now close all channels
        System.out.println("close channelGroup");
        channelGroup.close().awaitUninterruptibly();
        // Now release resources
        System.out.println("close external resources");
        factory.releaseExternalResources();
    }
}
TOP

Related Classes of com.yahoo.omid.tso.TransactionClient

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.