@@ -0,0 +1,2798 @@
+package com.basho.riak.client.api;%0A%0A%0Aimport com.basho.riak.client.api.commands.kv.StoreValue;%0Aimport com.basho.riak.client.core.RiakCluster;%0Aimport com.basho.riak.client.core.RiakFuture;%0Aimport com.basho.riak.client.core.RiakNode;%0Aimport com.basho.riak.client.core.query.Location;%0Aimport com.basho.riak.client.core.query.Namespace;%0Aimport org.junit.Test;%0A%0Aimport java.util.Random;%0Aimport java.util.concurrent.ExecutionException;%0Aimport java.util.concurrent.TimeUnit;%0Aimport java.util.concurrent.TimeoutException;%0A%0Aimport static org.junit.Assert.*;%0A%0Apublic class ITestClusterLifecycle%0A%7B%0A    protected static RiakCluster cluster;%0A    protected static boolean testLifecycle;%0A    protected static String hostname;%0A    protected static int pbcPort;%0A    protected static Random random = new Random();%0A%0A    public ITestClusterLifecycle()%0A    %7B%0A        testLifecycle = Boolean.getBoolean(%22com.basho.riak.lifecycle%22);%0A        hostname = System.getProperty(%22com.basho.riak.host%22, RiakNode.Builder.DEFAULT_REMOTE_ADDRESS);%0A%0A        pbcPort = Integer.getInteger(%22com.basho.riak.pbcport%22, RiakNode.Builder.DEFAULT_REMOTE_PORT);%0A%0A        RiakNode.Builder builder = new RiakNode.Builder()%0A                                               .withRemoteAddress(hostname)%0A                                               .withRemotePort(10017)%0A                                               .withMinConnections(1)%0A                                               .withMaxConnections(1);%0A%0A        cluster = new RiakCluster.Builder(builder.build()).build();%0A    %7D%0A%0A    @Test%0A    public void testManyCommandsOneConnection() throws InterruptedException, ExecutionException, TimeoutException%0A    %7B%0A        RiakClient client = null;%0A        try%0A        %7B%0A            client = new RiakClient(cluster);%0A            cluster.start();%0A%0A            final Namespace namespace = new Namespace(%22plain%22, Integer.toString(random.nextInt()));%0A%0A            for (int i = 0; i %3C 10000; i++)%0A            %7B%0A                createAndStoreObject(client, new Location(namespace, Integer.toString(i)));%0A            %7D%0A%0A        %7D%0A        catch (Exception ex)%0A        %7B%0A            assertNull(ex);%0A        %7D%0A        finally%0A        %7B%0A            final Boolean shutdownClean = client.shutdown().get(3, TimeUnit.SECONDS);%0A            assertTrue(shutdownClean);%0A        %7D%0A    %7D%0A%0A    private void createAndStoreObject(RiakClient client, Location location)%0A            throws ExecutionException, InterruptedException, TimeoutException%0A    %7B%0A        final StoreValue storeCmd = new StoreValue.Builder(%22value%22).withLocation(location).build();%0A        final RiakFuture%3CStoreValue.Response, Location%3E execute = client.executeAsync(storeCmd);%0A        final StoreValue.Response response = execute.get(1, TimeUnit.SECONDS);%0A%0A        assertNotNull(response);%0A    %7D%0A%7D%0A

Add simple cluster lifecycle test