Package edu.brown.benchmark.example

Source Code of edu.brown.benchmark.example.ExampleClient

package edu.brown.benchmark.example;

import java.io.IOException;
import java.util.Random;

import org.voltdb.client.Client;
import org.voltdb.client.ClientResponse;
import org.voltdb.client.NoConnectionsException;
import org.voltdb.client.ProcedureCallback;

import edu.brown.api.BenchmarkComponent;

public class ExampleClient extends BenchmarkComponent {

    public static void main(String args[]) {
        BenchmarkComponent.main(ExampleClient.class, args, false);
    }

    public ExampleClient(String[] args) {
        super(args);
        for (String key : m_extraParams.keySet()) {
            // TODO: Retrieve extra configuration parameters
        } // FOR
    }

    @Override
    public void runLoop() {
        try {
            Client client = this.getClientHandle();
            Random rand = new Random();
            while (true) {
                // Select a random transaction to execute and generate its input
                // parameters. The procedure index (procIdx) needs to the same as the array
                // of procedure names returned by getTransactionDisplayNames()
                int procIdx = rand.nextInt(ExampleProjectBuilder.PROCEDURES.length);
                String procName = ExampleProjectBuilder.PROCEDURES[procIdx].getSimpleName();
                Object procParams[] = null; // TODO

                // Create a new Callback handle that will be executed when the
                // transaction completes
                Callback callback = new Callback(procIdx);

                // Invoke the stored procedure through the client handle. This
                // is non-blocking
                client.callProcedure(callback, procName, procIdx);

                // Check whether all the nodes are backed-up and this client
                // should block before sending new requests.
                client.backpressureBarrier();
            } // WHILE
        } catch (NoConnectionsException e) {
            // Client has no clean mechanism for terminating with the DB.
            return;
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // At shutdown an IOException is thrown for every connection to
            // the DB that is lost Ignore the exception here in order to not
            // get spammed, but will miss lost connections at runtime
        }
    }

    private class Callback implements ProcedureCallback {
        private final int idx;

        public Callback(int idx) {
            this.idx = idx;
        }

        @Override
        public void clientCallback(ClientResponse clientResponse) {
            // Increment the BenchmarkComponent's internal counter on the
            // number of transactions that have been completed
            incrementTransactionCounter(clientResponse, this.idx);
        }
    } // END CLASS

    @Override
    public String[] getTransactionDisplayNames() {
        // Return an array of transaction names
        String procNames[] = new String[ExampleProjectBuilder.PROCEDURES.length];
        for (int i = 0; i < procNames.length; i++) {
            procNames[i] = ExampleProjectBuilder.PROCEDURES[i].getSimpleName();
        }
        return (procNames);
    }
}
TOP

Related Classes of edu.brown.benchmark.example.ExampleClient

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.