/* This file is part of VoltDB. * Copyright (C) 2008-2017 VoltDB Inc. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ package ctindex; import org.voltdb.*; import org.voltdb.client.*; public class Client { public static void main(String[] args) throws Exception { /* * Instantiate a client and connect to the database. */ org.voltdb.client.Client myApp; myApp = ClientFactory.createClient(); myApp.createConnection("localhost"); long start; start = System.currentTimeMillis(); /* * Load the database. */ final long rows = 1000000; final long print = 10000; long partitions = 2; for (long i = 0; i < rows; i++) { myApp.callProcedure("Insert", i, i % partitions, i); if (i % print == 0) System.out.println("Insert " + i + " rows"); } double latency = (System.currentTimeMillis() - start) / 1000F; System.out.println(String.format("Loading %d rows data elaspsed: %.3f seconds", rows, latency)); /* * Retrieve the message. ClientResponse response; start = System.currentTimeMillis(); final long csl = rows; final long csr = rows; for (long i = 0; i < csl; i++) { response = myApp.callProcedure("CountStarSmaller", i % partitions, i ); if (response.getStatus() != ClientResponse.SUCCESS){ System.err.println(response.getStatusString()); System.exit(-1); } if (i % print == 0) System.out.println("Execute CountStarSmaller " + i + " times"); } double latency1 = (System.currentTimeMillis() - start) / 1000F; System.out.println(String.format("CountStarSmaller query execute %d times, elaspsed: %.3f seconds, throughput: %.3f txns/s", csl, latency1 , csl / latency1 )); start = System.currentTimeMillis(); for (long i = 0; i < csr; i++) { response =myApp.callProcedure("CountStarRange", i % partitions, i, i + (long)((rows - i) / 2)); if (response.getStatus() != ClientResponse.SUCCESS){ System.err.println(response.getStatusString()); System.exit(-1); } if (i % print == 0) System.out.println("Execute CountStarRange " + i + " times"); } double latency2 = (System.currentTimeMillis() - start) / 1000F; System.out.println(String.format("CountStarRange query execute %d times, elaspsed: %.3f seconds, throughput: %.3f txns/s", csr, latency2 , csr / latency2)); System.out.println(String.format("Total queries execute %d times, elaspsed: %.3f seconds, throughput: %.3f txns/s", (csr + csl) ,(latency1 + latency2) , (csr + csl)/ ( latency1 + latency2) )); */ } }