Search in sources :

Example 16 with ClientConfig

use of org.voltdb.client.ClientConfig in project voltdb by VoltDB.

the class TestAdminMode method testBacklogAndPolling.

// Somewhat hacky test of the LIVECLIENTS @Statistics selector
public void testBacklogAndPolling() throws Exception {
    if (isValgrind()) {
        // also, this test isn't really about c++ code
        return;
    }
    ClientConfig config = new ClientConfig();
    config.setProcedureCallTimeout(600000);
    final Client adminclient = ClientFactory.createClient(config);
    if (((ClientImpl) adminclient).getSSLContext() != null) {
        return;
    }
    SocketChannel channel = getClientChannel();
    try {
        adminclient.createConnection("localhost", 32323);
        VoltTable[] results = adminclient.callProcedure("@Statistics", "LIVECLIENTS", 0).getResults();
        System.out.println(results[0].toString());
        results = adminclient.callProcedure("@Resume").getResults();
        System.out.println(results[0].toString());
        // queue up a bunch of invocations but don't read the responses
        for (int i = 0; i < 10000; i++) {
            ConnectionUtil.sendInvocation(channel, "InsertA", i, 1000 + i);
            ConnectionUtil.sendInvocation(channel, "SelectA");
        }
        results = adminclient.callProcedure("@Statistics", "LIVECLIENTS", 0).getResults();
        System.out.println(results[0].toString());
        assertEquals(2, results[0].getRowCount());
        results[0].advanceRow();
        // After queuing 10000 invocations and not reading any,
        // we should have some combination of outstanding work lingering around
        assertTrue((results[0].getLong("OUTSTANDING_RESPONSE_MESSAGES") + results[0].getLong("OUTSTANDING_TRANSACTIONS")) > 0);
        Thread.sleep(6000);
        // ENG-998 - get rid of the channel.close() here and force
        // Volt to kill the misbehaving connection itself.
        // make sure there's only one connection in the list
        // Check the proper results below
        results = adminclient.callProcedure("@Statistics", "LIVECLIENTS", 0).getResults();
        System.out.println(results[0].toString());
        assertEquals(1, results[0].getRowCount());
        results[0].advanceRow();
        assertEquals(1, results[0].getLong("ADMIN"));
    } finally {
        channel.close();
        adminclient.close();
    }
}
Also used : SocketChannel(java.nio.channels.SocketChannel) ClientConfig(org.voltdb.client.ClientConfig) Client(org.voltdb.client.Client) VoltTable(org.voltdb.VoltTable)

Example 17 with ClientConfig

use of org.voltdb.client.ClientConfig in project voltdb by VoltDB.

the class RegressionSuite method getClientToHostId.

/**
     * Get a VoltClient instance connected to a specific server driven by the
     * VoltServerConfig instance. Find the server by the config's HostId.
     *
     * @return A VoltClient instance connected to the server driven by the
     * VoltServerConfig instance.
     */
public Client getClientToHostId(int hostId, long timeout) throws IOException {
    final String listener = m_config.getListenerAddress(hostId);
    ClientConfig config = new ClientConfigForTest(m_username, m_password);
    config.setConnectionResponseTimeout(timeout);
    config.setProcedureCallTimeout(timeout);
    final Client client = ClientFactory.createClient(config);
    try {
        client.createConnection(listener);
    }// retry once
     catch (ConnectException e) {
        client.createConnection(listener);
    }
    m_clients.add(client);
    return client;
}
Also used : ClientConfig(org.voltdb.client.ClientConfig) ClientConfigForTest(org.voltdb.client.ClientConfigForTest) Client(org.voltdb.client.Client) ConnectException(java.net.ConnectException)

Example 18 with ClientConfig

use of org.voltdb.client.ClientConfig in project voltdb by VoltDB.

the class GenerateCPPTestFiles method main.

/**
     * @param args
     */
public static void main(String[] args) throws Exception {
    boolean generateGeoMessages = true;
    String clientDataDirName = ".";
    long clusterStartTime = CLUSTER_START_TIME;
    int clusterRoundTripTime = CLUSTER_ROUND_TRIP_TIME;
    long clientData = CLIENT_DATA;
    int leaderIPAddr = LEADER_IP_ADDR;
    String buildString = BUILD_STRING;
    for (int idx = 0; idx < args.length; idx += 1) {
        if ("--client-dir".equals(args[idx])) {
            idx += 1;
            clientDataDirName = args[idx];
        } else if ("--clusterStartTime".equals(args[idx])) {
            idx += 1;
            clusterStartTime = Long.valueOf(args[idx]);
        } else if ("--clientData".equals(args[idx])) {
            idx += 1;
            clientData = Long.valueOf(args[idx]);
        } else if ("--leaderIPAddr".equals(args[idx])) {
            idx += 1;
            leaderIPAddr = Integer.valueOf(args[idx]);
        } else if ("--clusterRoundTripTime".equals(args[idx])) {
            idx += 1;
            clusterRoundTripTime = Integer.valueOf(args[idx]);
        } else if ("--no-geo-messages".equals(args[idx])) {
            generateGeoMessages = false;
        } else {
            abend("Unknown command line argument \"%s\"\n", args[idx]);
        }
    }
    // Make the client data directory if necessary.
    File clientDataDir = new File(clientDataDirName);
    if (clientDataDir.exists() && !clientDataDir.isDirectory()) {
        if (!clientDataDir.isDirectory()) {
            abend("Client data dir \"%s\" exists but is not a directory.\n", clientDataDirName);
        }
    } else {
        clientDataDir.mkdirs();
    }
    //
    // Capture a HASH_SHA256 style authentication message.  We do this by
    // creating a fake server, then, in a separate thread, creating an ordinary
    // client which connects to the fake server.  We read the authentication
    // request from the client, save it, send a faked authentication response,
    // close the server and join with the created thread.
    //
    ServerSocketChannel ssc = ServerSocketChannel.open();
    ssc.socket().bind(new InetSocketAddress("localhost", FAKE_SERVER_PORT));
    ClientConfig config = new ClientConfig("hello", "world", (ClientStatusListenerExt) null, ClientAuthScheme.HASH_SHA256);
    final org.voltdb.client.Client client = ClientFactory.createClient(config);
    Thread clientThread = new Thread() {

        @Override
        public void run() {
            try {
                client.createConnection("localhost", FAKE_SERVER_PORT);
                client.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
    clientThread.setDaemon(true);
    clientThread.start();
    SocketChannel sc = ssc.accept();
    sc.socket().setTcpNoDelay(true);
    ByteBuffer authReqSHA256 = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    sc.configureBlocking(true);
    readMessage(authReqSHA256, sc);
    writeDataFile(clientDataDir, "authentication_request_sha256.msg", authReqSHA256);
    writeServerAuthenticationResponse(sc, true);
    ssc.close();
    clientThread.join(0);
    //
    // Now, create a fake server again, and login with the HASH_SHA1 scheme.
    // We save this authentication request as well.  The client in the
    // separate thread then sends some procedure invocation messages.  We
    // save all of these in files and then join with the client thread.
    //
    ssc = ServerSocketChannel.open();
    ssc.socket().bind(new InetSocketAddress("localhost", FAKE_SERVER_PORT));
    config = new ClientConfig("hello", "world", (ClientStatusListenerExt) null, ClientAuthScheme.HASH_SHA1);
    final org.voltdb.client.Client oclient = ClientFactory.createClient(config);
    Thread oclientThread = new Thread() {

        @Override
        public void run() {
            NullCallback ncb = new NullCallback();
            try {
                oclient.createConnection("localhost", FAKE_SERVER_PORT);
                oclient.callProcedure("Insert", "Hello", "World", "English");
                try {
                    oclient.callProcedure("Insert", "Hello", "World", "English");
                } catch (Exception e) {
                }
                oclient.callProcedure("Select", "English");
                //
                // Geo support.
                //
                // Insert a point and a polygon.
                oclient.callProcedure("InsertGeo", 200, GeographyValue.fromWKT(smallPolyTxt), GeographyPointValue.fromWKT(smallPointTxt));
                // Insert two nulls for points and polygons.
                oclient.callProcedure("InsertGeo", 201, null, null);
                // Select one row with a point and a polygon both.
                oclient.callProcedure("SelectGeo", 100);
                // Select another row with a different point and polygon.
                oclient.callProcedure("SelectGeo", 101);
                // Select one row with a null polygon and one non-null point.
                oclient.callProcedure("SelectGeo", 102);
                // Select one row with a non-null polygon and a null point.
                oclient.callProcedure("SelectGeo", 103);
                // Select one row with two nulls.
                oclient.callProcedure("SelectGeo", 104);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
    oclientThread.setDaemon(true);
    oclientThread.start();
    sc = ssc.accept();
    sc.socket().setTcpNoDelay(true);
    ByteBuffer authReqSHA1 = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    sc.configureBlocking(true);
    readMessage(authReqSHA1, sc);
    writeDataFile(clientDataDir, "authentication_request.msg", authReqSHA1);
    writeServerAuthenticationResponse(sc, true);
    //
    // Read some call procedure messages.
    //
    // The client engages us in some witty banter, which we don't
    // actually care about for the purposes of this program.  But
    // we need to read past it, and acknowledge it anyway.  We are
    // acting as a server here.  We don't need to change the client
    // data at all.
    //
    ByteBuffer subscription_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(subscription_request, sc);
    writeServerCallResponse(sc, getRequestClientData(subscription_request));
    ByteBuffer stats_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(stats_request, sc);
    writeServerCallResponse(sc, getRequestClientData(stats_request));
    ByteBuffer syscat_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(syscat_request, sc);
    writeServerCallResponse(sc, getRequestClientData(stats_request));
    //
    // Now, read the invocation requests from the client.  We can't
    // actually respond, so we fake up a response.  But this is good
    // enough for now, and we save the message.
    //
    String[] vanillaFileNames = new String[] { "invocation_request_success.msg", "invocation_request_fail_cv.msg", "invocation_request_select.msg" };
    Map<String, ByteBuffer> vanillaMessages = new HashMap<String, ByteBuffer>();
    for (String fileName : vanillaFileNames) {
        ByteBuffer responseMessage = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
        vanillaMessages.put(fileName, responseMessage);
        readMessage(responseMessage, sc);
        writeServerCallResponse(sc, getRequestClientData(responseMessage));
        // Set the client data.  The value here is not important, but it
        // needs to be shared between this and the client unit tests.
        setRequestClientData(responseMessage, clientData);
        writeDataFile(clientDataDir, fileName, responseMessage);
    }
    // Note that these names are somewhat stylized.  They name
    // the file which holds the request.  The response to this
    // request will be in a similarly named file, but with _request_
    // replaced by _response_.  So, make sure there is one _request_
    // substring in the file names.
    String[] geoFileNames = new String[] { "invocation_request_insert_geo.msg", "invocation_request_insert_geo_nulls.msg", "invocation_request_select_geo_both.msg", "invocation_request_select_geo_both_mid.msg", "invocation_request_select_geo_polynull.msg", "invocation_request_select_geo_ptnull.msg", "invocation_request_select_geo_bothnull.msg" };
    Map<String, ByteBuffer> geoMessages = new HashMap<String, ByteBuffer>();
    for (String filename : geoFileNames) {
        ByteBuffer requestMessage = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
        // We need to save these for later.
        geoMessages.put(filename, requestMessage);
        readMessage(requestMessage, sc);
        writeServerCallResponse(sc, getRequestClientData(requestMessage));
        setRequestClientData(requestMessage, clientData);
        if (generateGeoMessages) {
            writeDataFile(clientDataDir, filename, requestMessage);
        }
    }
    oclient.close();
    ssc.close();
    oclientThread.join();
    // Now, connect to a real server.  We are going to pretend to be a
    // client and write the messages we just read from the client, as we pretended to be
    // a server.  We will then capture the responses in files.
    SocketChannel voltsc = null;
    try {
        voltsc = SocketChannel.open(new InetSocketAddress("localhost", TRUE_SERVER_PORT));
        voltsc.socket().setTcpNoDelay(true);
        voltsc.configureBlocking(true);
        System.err.printf("Connected.\n");
    } catch (IOException ex) {
        abend("Can't connect to a server.  Is there a VoltDB server running?.\n");
    }
    // Write the authentication message and then
    // read the response.  We need the response.  The
    // Client will engage in witty repartee with the
    // server, but we neither see nor care about that.
    //
    // Note that for each of these responses we need to
    // set some parameters, so that they will not depend
    // on the particular context we executed.  This is the
    // cluster start time, the client data, the leader IP
    // address and the build string.  The client unit tests
    // will know these values.
    //
    ByteBuffer scratch = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    voltsc.write(authReqSHA1);
    readMessage(scratch, voltsc);
    setClusterStartTimestamp(scratch, clusterStartTime);
    setLeaderIPAddr(scratch, leaderIPAddr);
    setBuildString(scratch, buildString);
    writeDataFile(clientDataDir, "authentication_response.msg", scratch);
    for (String filename : vanillaFileNames) {
        // Write the three procedure messages.
        ByteBuffer requestMessage = vanillaMessages.get(filename);
        if (requestMessage == null) {
            abend("Cannot find request message for file name \"%s\"\n", filename);
        }
        voltsc.write(requestMessage);
        readMessage(scratch, voltsc);
        setResponseClientData(scratch, clientData);
        setClusterRoundTripTime(scratch, clusterRoundTripTime);
        String responseFileName = filename.replaceAll("_request_", "_response_");
        writeDataFile(clientDataDir, responseFileName, scratch);
    }
    if (generateGeoMessages) {
        for (String filename : geoFileNames) {
            // Write the three procedure messages.
            ByteBuffer requestMessage = geoMessages.get(filename);
            if (requestMessage == null) {
                abend("Cannot find request message for file name \"%s\"\n", filename);
            }
            voltsc.write(requestMessage);
            readMessage(scratch, voltsc);
            setResponseClientData(scratch, clientData);
            setClusterRoundTripTime(scratch, clusterRoundTripTime);
            String responseFileName = filename.replaceAll("_request_", "_response_");
            System.out.printf("Writing Response file \"%s\".\n", responseFileName);
            writeDataFile(clientDataDir, responseFileName, scratch);
        }
    }
    voltsc.close();
    clientThread.join();
    Thread.sleep(3000);
    ssc = ServerSocketChannel.open();
    ssc.socket().bind(new InetSocketAddress("localhost", FAKE_SERVER_PORT));
    clientThread = new Thread() {

        @Override
        public void run() {
            try {
                org.voltdb.client.Client newClient = ClientFactory.createClient();
                newClient.createConnection("localhost", FAKE_SERVER_PORT);
                String[] strings = new String[] { "oh", "noes" };
                byte[] bytes = new byte[] { 22, 33, 44 };
                short[] shorts = new short[] { 22, 33, 44 };
                int[] ints = new int[] { 22, 33, 44 };
                long[] longs = new long[] { 22, 33, 44 };
                double[] doubles = new double[] { 3, 3.1, 3.14, 3.1459 };
                TimestampType[] timestamps = new TimestampType[] { new TimestampType(33), new TimestampType(44) };
                BigDecimal[] bds = new BigDecimal[] { new BigDecimal("3"), new BigDecimal("3.14"), new BigDecimal("3.1459") };
                try {
                    newClient.callProcedure("foo", strings, bytes, shorts, ints, longs, doubles, timestamps, bds, null, "ohnoes!", (byte) 22, (short) 22, 22, (long) 22, 3.1459, new TimestampType(33), new BigDecimal("3.1459"));
                } catch (Exception e) {
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    clientThread.setDaemon(true);
    clientThread.start();
    voltsc = ssc.accept();
    // Read the authentication message.  We don't need it.
    readMessage(scratch, voltsc);
    writeServerAuthenticationResponse(voltsc, true);
    //
    // The client engages us in some dialog.  We don't need this
    // either, but we need to read past it.
    //
    subscription_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(subscription_request, voltsc);
    writeServerCallResponse(voltsc, getRequestClientData(subscription_request));
    stats_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(stats_request, voltsc);
    writeServerCallResponse(voltsc, getRequestClientData(stats_request));
    syscat_request = ByteBuffer.allocate(DEFAULT_BUFFER_SIZE);
    readMessage(syscat_request, voltsc);
    writeServerCallResponse(voltsc, getRequestClientData(stats_request));
    // Read the all-types call procedure message.
    readMessage(scratch, voltsc);
    writeServerCallResponse(voltsc, getRequestClientData(scratch));
    setRequestClientData(scratch, clientData);
    writeDataFile(clientDataDir, "invocation_request_all_params.msg", scratch);
    voltsc.close();
    clientThread.join();
    //
    // Serialize a message and write it.
    //
    ColumnInfo[] columns = new ColumnInfo[] { new ColumnInfo("column1", VoltType.TINYINT), new ColumnInfo("column2", VoltType.STRING), new ColumnInfo("column3", VoltType.SMALLINT), new ColumnInfo("column4", VoltType.INTEGER), new ColumnInfo("column5", VoltType.BIGINT), new ColumnInfo("column6", VoltType.TIMESTAMP), new ColumnInfo("column7", VoltType.DECIMAL), new ColumnInfo("column8", VoltType.GEOGRAPHY), new ColumnInfo("column9", VoltType.GEOGRAPHY_POINT) };
    VoltTable vt = new VoltTable(columns);
    GeographyValue poly = GeographyValue.fromWKT(smallPolyTxt);
    GeographyPointValue pt = GeographyPointValue.fromWKT(smallPointTxt);
    vt.addRow(null, null, null, null, null, null, null, poly, pt);
    vt.addRow(0, "", 2, 4, 5, new TimestampType(44), new BigDecimal("3.1459"), poly, pt);
    vt.addRow(0, null, 2, 4, 5, null, null, poly, pt);
    vt.addRow(null, "woobie", null, null, null, new TimestampType(44), new BigDecimal("3.1459"), poly, pt);
    ByteBuffer bb = ByteBuffer.allocate(vt.getSerializedSize());
    vt.flattenToBuffer(bb);
    FastSerializer fs = new FastSerializer(vt.getSerializedSize());
    fs.write(bb);
    bb.flip();
    writeDataFile(clientDataDir, "serialized_table.bin", bb);
    clientThread.join();
}
Also used : ServerSocketChannel(java.nio.channels.ServerSocketChannel) SocketChannel(java.nio.channels.SocketChannel) HashMap(java.util.HashMap) InetSocketAddress(java.net.InetSocketAddress) FastSerializer(org.voltdb.messaging.FastSerializer) ColumnInfo(org.voltdb.VoltTable.ColumnInfo) TimestampType(org.voltdb.types.TimestampType) NullCallback(org.voltdb.client.NullCallback) ClientConfig(org.voltdb.client.ClientConfig) ServerSocketChannel(java.nio.channels.ServerSocketChannel) GeographyValue(org.voltdb.types.GeographyValue) IOException(java.io.IOException) ByteBuffer(java.nio.ByteBuffer) IOException(java.io.IOException) BigDecimal(java.math.BigDecimal) ClientStatusListenerExt(org.voltdb.client.ClientStatusListenerExt) File(java.io.File) GeographyPointValue(org.voltdb.types.GeographyPointValue)

Example 19 with ClientConfig

use of org.voltdb.client.ClientConfig in project voltdb by VoltDB.

the class ProcedureCallMicrobench method main.

public static void main(String[] args) throws Exception {
    int siteCount = 1;
    TPCCProjectBuilder pb = new TPCCProjectBuilder();
    pb.addDefaultSchema();
    pb.addDefaultPartitioning();
    pb.addProcedures(EmptyProcedure.class, MultivariateEmptyProcedure.class);
    pb.compile("procedureCallMicrobench.jar", siteCount, 0);
    ServerThread server = new ServerThread("procedureCallMicrobench.jar", BackendTarget.NATIVE_EE_JNI);
    server.start();
    server.waitForInitialization();
    int[] clientCounts = new int[] {};
    if (args.length >= 1 && !args[0].equals("${clients}")) {
        String[] clientCountString = args[0].split("\\s+");
        clientCounts = new int[clientCountString.length];
        for (int i = 0; i < clientCountString.length; i++) {
            clientCounts[i] = Integer.parseInt(clientCountString[i]);
        }
    }
    for (int clientCount : clientCounts) {
        for (int varmode = 0; varmode < 2; varmode++) {
            final Date date = new Date();
            final String name = varmode == 0 ? "EmptyProcedure" : "MultivariateEmptyProcedure";
            final Runner runner = varmode == 0 ? new Runner() {

                @Override
                public void run(Client client) throws Exception {
                    client.callProcedure(name, 0L);
                }
            } : new Runner() {

                @Override
                public void run(Client client) throws Exception {
                    client.callProcedure(name, 0L, 0L, 0L, "String c_first", "String c_middle", "String c_last", "String c_street_1", "String c_street_2", "String d_city", "String d_state", "String d_zip", "String c_phone", date, "String c_credit", 0.0, 0.0, 0.0, 0.0, 0L, 0L, "String c_data");
                }
            };
            // trigger classloading a couple times
            {
                ClientConfig config = new ClientConfig("program", "none");
                Client client = ClientFactory.createClient(config);
                client.createConnection("localhost");
                for (int i = 0; i < 10000; i++) client.callProcedure("EmptyProcedure", 0L);
            }
            ExecutorService executor = Executors.newFixedThreadPool(clientCount);
            ArrayList<Future<Integer>> futures = new ArrayList<Future<Integer>>(clientCount);
            final CyclicBarrier barrier = new CyclicBarrier(clientCount + 1);
            final long stopTime = System.currentTimeMillis() + 2000;
            for (int i = 0; i < clientCount; i++) {
                futures.add(executor.submit(new Callable<Integer>() {

                    public Integer call() {
                        try {
                            ClientConfig config = new ClientConfig("program", "none");
                            Client client = ClientFactory.createClient(config);
                            client.createConnection("localhost");
                            int count = 0;
                            barrier.await();
                            for (count = 0; count % 10 != 0 || System.currentTimeMillis() < stopTime; count++) {
                                runner.run(client);
                            }
                            return count;
                        } catch (Exception ex) {
                            ex.printStackTrace();
                            throw new RuntimeException(ex);
                        }
                    }
                }));
            }
            barrier.await();
            final long startTime = System.currentTimeMillis();
            int count = 0;
            for (Future<Integer> future : futures) {
                count += future.get();
            }
            double time = stopTime - startTime;
            System.out.println(name + " with " + clientCount + " clients: " + count + " xacts in " + time + " ms => " + (time / count) + " ms/xact => " + (count / time) * 1000 + "tps");
        }
    }
    System.exit(0);
}
Also used : ArrayList(java.util.ArrayList) Date(java.util.Date) Callable(java.util.concurrent.Callable) CyclicBarrier(java.util.concurrent.CyclicBarrier) ExecutorService(java.util.concurrent.ExecutorService) Future(java.util.concurrent.Future) Client(org.voltdb.client.Client) ClientConfig(org.voltdb.client.ClientConfig) TPCCProjectBuilder(org.voltdb.benchmark.tpcc.TPCCProjectBuilder)

Example 20 with ClientConfig

use of org.voltdb.client.ClientConfig in project voltdb by VoltDB.

the class TestSSL method checkAdminAndClient.

private void checkAdminAndClient(int adminPort, int clientPort, String sslPropsFile) throws Exception {
    ClientConfig clientConfig = new ClientConfig("", "", null);
    clientConfig.setTrustStoreConfigFromPropertyFile(getResourcePath(sslPropsFile));
    clientConfig.enableSSL();
    //Add long loopy test
    for (int i = 0; i < 100; i++) {
        m_admin = ClientFactory.createClient(clientConfig);
        m_admin.createConnection("localhost", adminPort);
        m_admin.close();
        m_client = ClientFactory.createClient(clientConfig);
        m_client.createConnection("localhost", clientPort);
        m_client.close();
    }
    m_admin = ClientFactory.createClient(clientConfig);
    m_admin.createConnection("localhost", adminPort);
    m_admin.callProcedure("@Pause");
    VoltTable[] results = m_admin.callProcedure("@SystemInformation").getResults();
    checkSystemInformationClusterState(results[0], "Paused");
    m_client = ClientFactory.createClient(clientConfig);
    m_client.createConnection("localhost", clientPort);
    results = m_client.callProcedure("CountA").getResults();
    assertEquals(0, results[0].asScalarLong());
}
Also used : ClientConfig(org.voltdb.client.ClientConfig)

Aggregations

ClientConfig (org.voltdb.client.ClientConfig)38 Client (org.voltdb.client.Client)25 IOException (java.io.IOException)11 VoltTable (org.voltdb.VoltTable)10 Configuration (org.voltdb.VoltDB.Configuration)9 File (java.io.File)7 VoltProjectBuilder (org.voltdb.compiler.VoltProjectBuilder)7 ClientResponse (org.voltdb.client.ClientResponse)6 ServerThread (org.voltdb.ServerThread)5 ConnectException (java.net.ConnectException)4 UnknownHostException (java.net.UnknownHostException)4 Random (java.util.Random)4 Test (org.junit.Test)4 ClientConfigForTest (org.voltdb.client.ClientConfigForTest)4 ClientImpl (org.voltdb.client.ClientImpl)4 ProcCallException (org.voltdb.client.ProcCallException)4 FileNotFoundException (java.io.FileNotFoundException)3 ArrayList (java.util.ArrayList)3 Date (java.util.Date)3 VoltDB (org.voltdb.VoltDB)3