http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestLeaderFailover.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestLeaderFailover.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestLeaderFailover.java index bb2b954..ba108c9 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestLeaderFailover.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestLeaderFailover.java @@ -19,24 +19,29 @@ package org.apache.kudu.client; import static org.apache.kudu.util.ClientTestUtil.countRowsInScan; import static org.apache.kudu.util.ClientTestUtil.createBasicSchemaInsert; import static org.apache.kudu.util.ClientTestUtil.getBasicCreateTableOptions; +import static org.apache.kudu.util.ClientTestUtil.getBasicSchema; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; +import org.apache.kudu.test.KuduTestHarness; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; -public class TestLeaderFailover extends BaseKuduTest { +public class TestLeaderFailover { private static final String TABLE_NAME = TestLeaderFailover.class.getName() + "-" + System.currentTimeMillis(); private static KuduTable table; + @Rule + public KuduTestHarness harness = new KuduTestHarness(); + @Before public void setUp() throws Exception { CreateTableOptions builder = getBasicCreateTableOptions(); - createTable(TABLE_NAME, basicSchema, builder); - - table = openTable(TABLE_NAME); + harness.getClient().createTable(TABLE_NAME, getBasicSchema(), builder); + table = harness.getClient().openTable(TABLE_NAME); } /** @@ -47,16 +52,16 @@ public class TestLeaderFailover extends BaseKuduTest { */ @Test(timeout = 100000) public void testFailover() throws Exception { - KuduSession session = syncClient.newSession(); + KuduSession session = harness.getClient().newSession(); for (int i = 0; i < 3; i++) { session.apply(createBasicSchemaInsert(table, i)); } // Make sure the rows are in there before messing things up. - AsyncKuduScanner scanner = client.newScannerBuilder(table).build(); + AsyncKuduScanner scanner = harness.getAsyncClient().newScannerBuilder(table).build(); assertEquals(3, countRowsInScan(scanner)); - killTabletLeader(table); + harness.killTabletLeader(table); for (int i = 3; i < 6; i++) { OperationResponse resp = session.apply(createBasicSchemaInsert(table, i)); @@ -65,7 +70,7 @@ public class TestLeaderFailover extends BaseKuduTest { } } - scanner = client.newScannerBuilder(table).build(); + scanner = harness.getAsyncClient().newScannerBuilder(table).build(); assertEquals(6, countRowsInScan(scanner)); } } \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestMasterFailover.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestMasterFailover.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestMasterFailover.java index 7b9a8ec..7c3237f 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestMasterFailover.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestMasterFailover.java @@ -18,14 +18,17 @@ package org.apache.kudu.client; import static org.apache.kudu.util.ClientTestUtil.countRowsInScan; import static org.apache.kudu.util.ClientTestUtil.getBasicCreateTableOptions; +import static org.apache.kudu.util.ClientTestUtil.getBasicSchema; import static org.junit.Assert.assertEquals; +import org.apache.kudu.test.KuduTestHarness; +import org.junit.Rule; import org.junit.Test; /** * Tests {@link AsyncKuduClient} with multiple masters. */ -public class TestMasterFailover extends BaseKuduTest { +public class TestMasterFailover { enum KillBefore { CREATE_CLIENT, CREATE_TABLE, @@ -33,6 +36,9 @@ public class TestMasterFailover extends BaseKuduTest { SCAN_TABLE } + @Rule + public KuduTestHarness harness = new KuduTestHarness(); + @Test(timeout = 30000) public void testKillLeaderBeforeCreateClient() throws Exception { doTestKillLeader(KillBefore.CREATE_CLIENT); @@ -52,33 +58,35 @@ public class TestMasterFailover extends BaseKuduTest { private void doTestKillLeader(KillBefore killBefore) throws Exception { String tableName = "TestMasterFailover-killBefore=" + killBefore; - int countMasters = getMasterServers().size(); + int countMasters = harness.getMasterServers().size(); if (countMasters < 3) { throw new Exception("This test requires at least 3 master servers, but only " + countMasters + " are specified."); } if (killBefore == KillBefore.CREATE_CLIENT) { - killLeaderMasterServer(); + harness.killLeaderMasterServer(); } - try (KuduClient c = new KuduClient.KuduClientBuilder(getMasterAddressesAsString()).build()) { + try (KuduClient c = + new KuduClient.KuduClientBuilder(harness.getMasterAddressesAsString()).build()) { if (killBefore == KillBefore.CREATE_TABLE) { - killLeaderMasterServer(); + harness.killLeaderMasterServer(); } - createTable(tableName, basicSchema, getBasicCreateTableOptions()); + harness.getClient().createTable(tableName, getBasicSchema(), getBasicCreateTableOptions()); if (killBefore == KillBefore.OPEN_TABLE) { - killLeaderMasterServer(); + harness.killLeaderMasterServer(); } // Test that we can open a previously created table after killing the leader master. - KuduTable table = openTable(tableName); + KuduTable table = harness.getClient().openTable(tableName); if (killBefore == KillBefore.SCAN_TABLE) { - killLeaderMasterServer(); + harness.killLeaderMasterServer(); } - assertEquals(0, countRowsInScan(client.newScannerBuilder(table).build())); + assertEquals(0, + countRowsInScan(harness.getAsyncClient().newScannerBuilder(table).build())); } } } http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestMiniKuduCluster.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestMiniKuduCluster.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestMiniKuduCluster.java index c445379..bc03d3d 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestMiniKuduCluster.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestMiniKuduCluster.java @@ -23,6 +23,8 @@ import java.io.IOException; import java.net.Socket; import org.apache.kudu.client.KuduClient.KuduClientBuilder; +import org.apache.kudu.junit.RetryRule; +import org.junit.Rule; import org.junit.Test; public class TestMiniKuduCluster { @@ -31,11 +33,14 @@ public class TestMiniKuduCluster { private static final int NUM_MASTERS = 1; private static final long SLEEP_TIME_MS = 10000; + @Rule + public RetryRule retryRule = new RetryRule(); + @Test(timeout = 50000) public void test() throws Exception { try (MiniKuduCluster cluster = new MiniKuduCluster.MiniKuduClusterBuilder() - .numMasters(NUM_MASTERS) - .numTservers(NUM_TABLET_SERVERS) + .numMasterServers(NUM_MASTERS) + .numTabletServers(NUM_TABLET_SERVERS) .build()) { assertEquals(NUM_MASTERS, cluster.getMasterServers().size()); assertEquals(NUM_TABLET_SERVERS, cluster.getTabletServers().size()); @@ -75,8 +80,8 @@ public class TestMiniKuduCluster { public void testKerberos() throws Exception { FakeDNS.getInstance().install(); try (MiniKuduCluster cluster = new MiniKuduCluster.MiniKuduClusterBuilder() - .numMasters(NUM_MASTERS) - .numTservers(NUM_TABLET_SERVERS) + .numMasterServers(NUM_MASTERS) + .numTabletServers(NUM_TABLET_SERVERS) .enableKerberos() .build()) { KuduClient client = new KuduClientBuilder(cluster.getMasterAddressesAsString()).build(); @@ -89,8 +94,8 @@ public class TestMiniKuduCluster { @Test(timeout = 50000) public void testHiveMetastoreIntegration() throws Exception { try (MiniKuduCluster cluster = new MiniKuduCluster.MiniKuduClusterBuilder() - .numMasters(NUM_MASTERS) - .numTservers(NUM_TABLET_SERVERS) + .numMasterServers(NUM_MASTERS) + .numTabletServers(NUM_TABLET_SERVERS) .enableHiveMetastoreIntegration() .build()) { KuduClient client = new KuduClientBuilder(cluster.getMasterAddressesAsString()).build(); http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestMultipleLeaderFailover.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestMultipleLeaderFailover.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestMultipleLeaderFailover.java index a9f5cd8..3152c33 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestMultipleLeaderFailover.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestMultipleLeaderFailover.java @@ -16,18 +16,26 @@ // under the License. package org.apache.kudu.client; +import static org.apache.kudu.test.KuduTestHarness.DEFAULT_SLEEP; import static org.apache.kudu.util.AssertHelpers.assertEventuallyTrue; import static org.apache.kudu.util.ClientTestUtil.countRowsInScan; import static org.apache.kudu.util.ClientTestUtil.createBasicSchemaInsert; import static org.apache.kudu.util.ClientTestUtil.getBasicCreateTableOptions; +import static org.apache.kudu.util.ClientTestUtil.getBasicSchema; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.util.List; + +import org.apache.kudu.test.KuduTestHarness; import org.apache.kudu.util.AssertHelpers.BooleanExpression; +import org.junit.Rule; import org.junit.Test; -public class TestMultipleLeaderFailover extends BaseKuduTest { +public class TestMultipleLeaderFailover { + + @Rule + public KuduTestHarness harness = new KuduTestHarness(); private void waitUntilRowCount(final KuduTable table, final int rowCount, long timeoutMs) throws Exception { @@ -35,7 +43,7 @@ public class TestMultipleLeaderFailover extends BaseKuduTest { new BooleanExpression() { @Override public boolean get() throws Exception { - AsyncKuduScanner scanner = client.newScannerBuilder(table).build(); + AsyncKuduScanner scanner = harness.getAsyncClient().newScannerBuilder(table).build(); int read_count = countRowsInScan(scanner); return read_count == rowCount; } @@ -53,10 +61,10 @@ public class TestMultipleLeaderFailover extends BaseKuduTest { CreateTableOptions builder = getBasicCreateTableOptions(); String tableName = TestMultipleLeaderFailover.class.getName() + "-" + System.currentTimeMillis(); - createTable(tableName, basicSchema, builder); + harness.getClient().createTable(tableName, getBasicSchema(), builder); - table = openTable(tableName); - KuduSession session = syncClient.newSession(); + table = harness.getClient().openTable(tableName); + KuduSession session = harness.getClient().newSession(); final int ROWS_PER_ITERATION = 3; final int NUM_ITERATIONS = 10; final int TOTAL_ROWS_TO_INSERT = ROWS_PER_ITERATION + NUM_ITERATIONS * ROWS_PER_ITERATION; @@ -71,7 +79,7 @@ public class TestMultipleLeaderFailover extends BaseKuduTest { for (int i = 0; i < NUM_ITERATIONS; i++) { List<LocatedTablet> tablets = table.getTabletsLocations(DEFAULT_SLEEP); assertEquals(1, tablets.size()); - killTabletLeader(tablets.get(0)); + harness.killTabletLeader(tablets.get(0)); for (int j = 0; j < ROWS_PER_ITERATION; j++) { OperationResponse resp = session.apply(createBasicSchemaInsert(table, currentRows)); @@ -81,7 +89,7 @@ public class TestMultipleLeaderFailover extends BaseKuduTest { currentRows++; } - startAllTabletServers(); + harness.startAllTabletServers(); // Read your writes hasn't been enabled, so we need to use a helper function to poll. waitUntilRowCount(table, currentRows, DEFAULT_SLEEP); http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestNegotiation.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestNegotiation.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestNegotiation.java index 9d01e37..91f8273 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestNegotiation.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestNegotiation.java @@ -17,7 +17,9 @@ package org.apache.kudu.client; +import org.apache.kudu.junit.RetryRule; import org.apache.kudu.util.CapturingLogAppender; +import org.junit.Rule; import org.junit.Test; import java.io.Closeable; @@ -26,6 +28,9 @@ import static junit.framework.TestCase.assertTrue; public class TestNegotiation { + @Rule + public RetryRule retryRule = new RetryRule(); + /** * Test that a non-Kerberized client will use SASL PLAIN to connect to a * Kerberized server which doesn't require authentication. Regression test for @@ -37,12 +42,12 @@ public class TestNegotiation { MiniKuduCluster.MiniKuduClusterBuilder clusterBuilder = new MiniKuduCluster.MiniKuduClusterBuilder(); - clusterBuilder.numMasters(1) - .numTservers(0) + clusterBuilder.numMasterServers(1) + .numTabletServers(0) .enableKerberos() - .addMasterFlag("--rpc-authentication=optional") - .addMasterFlag("--rpc-trace-negotiation") - .addMasterFlag("--user-acl=*"); + .addMasterServerFlag("--rpc-authentication=optional") + .addMasterServerFlag("--rpc-trace-negotiation") + .addMasterServerFlag("--user-acl=*"); CapturingLogAppender cla = new CapturingLogAppender(); try (MiniKuduCluster cluster = clusterBuilder.build()) { http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestPartitionPruner.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestPartitionPruner.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestPartitionPruner.java index 1e7605b..34a83ed 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestPartitionPruner.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestPartitionPruner.java @@ -22,6 +22,9 @@ import java.util.ArrayList; import java.util.List; import com.google.common.collect.ImmutableList; +import org.apache.kudu.test.KuduTestHarness; +import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.apache.kudu.ColumnSchema; @@ -29,7 +32,17 @@ import org.apache.kudu.Schema; import org.apache.kudu.Type; import org.apache.kudu.client.KuduPredicate.ComparisonOp; -public class TestPartitionPruner extends BaseKuduTest { +public class TestPartitionPruner { + + private KuduClient client; + + @Rule + public KuduTestHarness harness = new KuduTestHarness(); + + @Before + public void setUp() { + client = harness.getClient(); + } /** * Counts the partitions touched by a scan with optional primary key bounds. @@ -46,7 +59,7 @@ public class TestPartitionPruner extends BaseKuduTest { List<Partition> partitions, byte[] lowerBoundPrimaryKey, byte[] upperBoundPrimaryKey) throws Exception { - KuduScanToken.KuduScanTokenBuilder scanBuilder = syncClient.newScanTokenBuilder(table); + KuduScanToken.KuduScanTokenBuilder scanBuilder = client.newScanTokenBuilder(table); if (lowerBoundPrimaryKey != null) { PartialRow lower = table.getSchema().newPartialRow(); @@ -120,7 +133,7 @@ public class TestPartitionPruner extends BaseKuduTest { byte[] upperBoundPartitionKey, KuduPredicate... predicates) { // Partition key bounds can't be applied to the ScanTokenBuilder. - KuduScanner.KuduScannerBuilder scanBuilder = syncClient.newScannerBuilder(table); + KuduScanner.KuduScannerBuilder scanBuilder = client.newScannerBuilder(table); for (KuduPredicate predicate : predicates) { scanBuilder.addPredicate(predicate); @@ -146,7 +159,7 @@ public class TestPartitionPruner extends BaseKuduTest { // Check that the scan token builder comes up with the same amount. // The scan token builder does not allow for upper/lower partition keys. if (lowerBoundPartitionKey == null && upperBoundPartitionKey == null) { - KuduScanToken.KuduScanTokenBuilder tokenBuilder = syncClient.newScanTokenBuilder(table); + KuduScanToken.KuduScanTokenBuilder tokenBuilder = client.newScanTokenBuilder(table); for (KuduPredicate predicate : predicates) { tokenBuilder.addPredicate(predicate); @@ -165,7 +178,7 @@ public class TestPartitionPruner extends BaseKuduTest { */ private List<Partition> getTablePartitions(KuduTable table) { List<Partition> partitions = new ArrayList<>(); - for (KuduScanToken token : syncClient.newScanTokenBuilder(table).build()) { + for (KuduScanToken token : client.newScanTokenBuilder(table).build()) { partitions.add(token.getTablet().getPartition()); } return partitions; @@ -202,8 +215,8 @@ public class TestPartitionPruner extends BaseKuduTest { String tableName = "testPrimaryKeyRangePruning-" + System.currentTimeMillis(); - syncClient.createTable(tableName, schema, tableBuilder); - KuduTable table = syncClient.openTable(tableName); + client.createTable(tableName, schema, tableBuilder); + KuduTable table = client.openTable(tableName); List<Partition> partitions = getTablePartitions(table); byte min = Byte.MIN_VALUE; @@ -289,8 +302,8 @@ public class TestPartitionPruner extends BaseKuduTest { String tableName = "testPrimaryKeyPrefixRangePruning-" + System.currentTimeMillis(); - syncClient.createTable(tableName, schema, tableBuilder); - KuduTable table = syncClient.openTable(tableName); + client.createTable(tableName, schema, tableBuilder); + KuduTable table = client.openTable(tableName); List<Partition> partitions = getTablePartitions(table); byte min = Byte.MIN_VALUE; @@ -372,8 +385,8 @@ public class TestPartitionPruner extends BaseKuduTest { tableBuilder.addSplitRow(split); String tableName = "testRangePartitionPruning-" + System.currentTimeMillis(); - syncClient.createTable(tableName, schema, tableBuilder); - KuduTable table = syncClient.openTable(tableName); + client.createTable(tableName, schema, tableBuilder); + KuduTable table = client.openTable(tableName); List<Partition> partitions = getTablePartitions(table); // No Predicates @@ -560,8 +573,8 @@ public class TestPartitionPruner extends BaseKuduTest { tableBuilder.addHashPartitions(ImmutableList.of("b", "c"), 2); String tableName = "testHashPartitionPruning-" + System.currentTimeMillis(); - syncClient.createTable(tableName, schema, tableBuilder); - KuduTable table = syncClient.openTable(tableName); + client.createTable(tableName, schema, tableBuilder); + KuduTable table = client.openTable(tableName); List<Partition> partitions = getTablePartitions(table); // No Predicates @@ -630,8 +643,8 @@ public class TestPartitionPruner extends BaseKuduTest { tableBuilder.addHashPartitions(ImmutableList.of("c"), 3); String tableName = "testInListHashPartitionPruning-" + System.currentTimeMillis(); - syncClient.createTable(tableName, schema, tableBuilder); - KuduTable table = syncClient.openTable(tableName); + client.createTable(tableName, schema, tableBuilder); + KuduTable table = client.openTable(tableName); List<Partition> partitions = getTablePartitions(table); // a in [0, 1]; @@ -680,8 +693,8 @@ public class TestPartitionPruner extends BaseKuduTest { tableBuilder.addHashPartitions(ImmutableList.of("b", "c"), 3); String tableName = "testMultiColumnInListHashPartitionPruning-" + System.currentTimeMillis(); - syncClient.createTable(tableName, schema, tableBuilder); - KuduTable table = syncClient.openTable(tableName); + client.createTable(tableName, schema, tableBuilder); + KuduTable table = client.openTable(tableName); List<Partition> partitions = getTablePartitions(table); // a in [0, 1]; @@ -753,8 +766,8 @@ public class TestPartitionPruner extends BaseKuduTest { tableBuilder.addHashPartitions(ImmutableList.of("host", "metric"), 2); String tableName = "testPruning-" + System.currentTimeMillis(); - syncClient.createTable(tableName, schema, tableBuilder); - KuduTable table = syncClient.openTable(tableName); + client.createTable(tableName, schema, tableBuilder); + KuduTable table = client.openTable(tableName); List<Partition> partitions = getTablePartitions(table); // No Predicates http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestRowErrors.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestRowErrors.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestRowErrors.java index 4d9c41f..3290bea 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestRowErrors.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestRowErrors.java @@ -16,26 +16,36 @@ // under the License. package org.apache.kudu.client; +import static org.apache.kudu.test.KuduTestHarness.DEFAULT_SLEEP; import static org.apache.kudu.util.ClientTestUtil.createBasicSchemaInsert; import static org.apache.kudu.util.ClientTestUtil.createFourTabletsTableWithNineRows; import static org.apache.kudu.util.ClientTestUtil.getBasicCreateTableOptions; +import static org.apache.kudu.util.ClientTestUtil.getBasicSchema; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.List; +import org.apache.kudu.Schema; +import org.apache.kudu.test.KuduTestHarness; +import org.junit.Rule; import org.junit.Test; -public class TestRowErrors extends BaseKuduTest { +public class TestRowErrors { + + private static final Schema basicSchema = getBasicSchema(); private static KuduTable table; + @Rule + public KuduTestHarness harness = new KuduTestHarness(); + @Test(timeout = 100000) public void singleTabletTest() throws Exception { String tableName = TestRowErrors.class.getName() + "-" + System.currentTimeMillis(); - createTable(tableName, basicSchema, getBasicCreateTableOptions()); - table = openTable(tableName); - AsyncKuduSession session = client.newSession(); + harness.getClient().createTable(tableName, basicSchema, getBasicCreateTableOptions()); + table = harness.getClient().openTable(tableName); + AsyncKuduSession session = harness.getAsyncClient().newSession(); // Insert 3 rows to play with. for (int i = 0; i < 3; i++) { @@ -70,9 +80,9 @@ public class TestRowErrors extends BaseKuduTest { @Test(timeout = 100000) public void multiTabletTest() throws Exception { String tableName = TestRowErrors.class.getName() + "-" + System.currentTimeMillis(); - createFourTabletsTableWithNineRows(client, tableName, DEFAULT_SLEEP); - table = openTable(tableName); - KuduSession session = syncClient.newSession(); + createFourTabletsTableWithNineRows(harness.getAsyncClient(), tableName, DEFAULT_SLEEP); + table = harness.getClient().openTable(tableName); + KuduSession session = harness.getClient().newSession(); session.setFlushMode(KuduSession.FlushMode.AUTO_FLUSH_BACKGROUND); int dupRows = 3; http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestRowResult.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestRowResult.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestRowResult.java index 47fa15e..f64a1d4 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestRowResult.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestRowResult.java @@ -18,6 +18,7 @@ package org.apache.kudu.client; import static java.nio.charset.StandardCharsets.UTF_8; import static org.apache.kudu.util.ClientTestUtil.getAllTypesCreateTableOptions; +import static org.apache.kudu.util.ClientTestUtil.getSchemaWithAllTypes; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -26,23 +27,31 @@ import java.math.BigDecimal; import java.nio.ByteBuffer; import java.sql.Timestamp; +import org.apache.kudu.Schema; +import org.apache.kudu.test.KuduTestHarness; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.apache.kudu.Type; -public class TestRowResult extends BaseKuduTest { +public class TestRowResult { // Generate a unique table name private static final String TABLE_NAME = TestRowResult.class.getName() + "-" + System.currentTimeMillis(); + private static final Schema allTypesSchema = getSchemaWithAllTypes(); + private static KuduTable table; + @Rule + public KuduTestHarness harness = new KuduTestHarness(); + @Before public void setUp() throws Exception { - createTable(TABLE_NAME, allTypesSchema, getAllTypesCreateTableOptions()); - table = openTable(TABLE_NAME); + harness.getClient().createTable(TABLE_NAME, allTypesSchema, getAllTypesCreateTableOptions()); + table = harness.getClient().openTable(TABLE_NAME); } @Test(timeout = 10000) @@ -66,10 +75,11 @@ public class TestRowResult extends BaseKuduTest { row.addTimestamp(11, new Timestamp(11)); row.addDecimal(12, BigDecimal.valueOf(12345, 3)); - KuduSession session = syncClient.newSession(); + KuduClient client = harness.getClient(); + KuduSession session = client.newSession(); session.apply(insert); - KuduScanner scanner = syncClient.newScannerBuilder(table).build(); + KuduScanner scanner = client.newScannerBuilder(table).build(); while (scanner.hasMoreRows()) { RowResultIterator it = scanner.nextRows(); assertTrue(it.hasNext()); http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestScanPredicate.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestScanPredicate.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestScanPredicate.java index 7682d6d..1ec209d 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestScanPredicate.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestScanPredicate.java @@ -25,7 +25,10 @@ import java.util.TreeSet; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSortedSet; +import org.apache.kudu.test.KuduTestHarness; import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.apache.kudu.ColumnSchema; @@ -34,7 +37,19 @@ import org.apache.kudu.Type; import org.apache.kudu.client.KuduPredicate.ComparisonOp; import org.apache.kudu.util.DecimalUtil; -public class TestScanPredicate extends BaseKuduTest { +public class TestScanPredicate { + + private KuduClient client; + private AsyncKuduClient asyncClient; + + @Rule + public KuduTestHarness harness = new KuduTestHarness(); + + @Before + public void setUp() { + client = harness.getClient(); + asyncClient = harness.getAsyncClient(); + } private Schema createTableSchema(Type type) { ColumnSchema key = new ColumnSchema.ColumnSchemaBuilder("key", Type.INT64).key(true).build(); @@ -47,7 +62,7 @@ public class TestScanPredicate extends BaseKuduTest { } private int countRows(KuduTable table, KuduPredicate... predicates) throws Exception { - KuduScanner.KuduScannerBuilder scanBuilder = new KuduScanner.KuduScannerBuilder(client, table); + KuduScanner.KuduScannerBuilder scanBuilder = new KuduScanner.KuduScannerBuilder(asyncClient, table); for (KuduPredicate predicate : predicates) { scanBuilder.addPredicate(predicate); } @@ -255,11 +270,11 @@ public class TestScanPredicate extends BaseKuduTest { @Test public void testBoolPredicates() throws Exception { Schema schema = createTableSchema(Type.BOOL); - syncClient.createTable("bool-table", schema, createTableOptions()); - KuduTable table = syncClient.openTable("bool-table"); + client.createTable("bool-table", schema, createTableOptions()); + KuduTable table = client.openTable("bool-table"); NavigableSet<Boolean> values = ImmutableSortedSet.of(false, true); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (boolean value : values) { @@ -307,11 +322,11 @@ public class TestScanPredicate extends BaseKuduTest { @Test public void testBytePredicates() throws Exception { Schema schema = createTableSchema(Type.INT8); - syncClient.createTable("byte-table", schema, createTableOptions()); - KuduTable table = syncClient.openTable("byte-table"); + client.createTable("byte-table", schema, createTableOptions()); + KuduTable table = client.openTable("byte-table"); NavigableSet<Long> values = createIntegerValues(Type.INT8); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (long value : values) { @@ -332,13 +347,13 @@ public class TestScanPredicate extends BaseKuduTest { @Test public void testShortPredicates() throws Exception { Schema schema = createTableSchema(Type.INT16); - syncClient.createTable("short-table", schema, + client.createTable("short-table", schema, new CreateTableOptions().setRangePartitionColumns( ImmutableList.<String>of())); - KuduTable table = syncClient.openTable("short-table"); + KuduTable table = client.openTable("short-table"); NavigableSet<Long> values = createIntegerValues(Type.INT16); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (long value : values) { @@ -359,11 +374,11 @@ public class TestScanPredicate extends BaseKuduTest { @Test public void testIntPredicates() throws Exception { Schema schema = createTableSchema(Type.INT32); - syncClient.createTable("int-table", schema, createTableOptions()); - KuduTable table = syncClient.openTable("int-table"); + client.createTable("int-table", schema, createTableOptions()); + KuduTable table = client.openTable("int-table"); NavigableSet<Long> values = createIntegerValues(Type.INT32); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (long value : values) { @@ -384,13 +399,13 @@ public class TestScanPredicate extends BaseKuduTest { @Test public void testLongPredicates() throws Exception { Schema schema = createTableSchema(Type.INT64); - syncClient.createTable("long-table", schema, + client.createTable("long-table", schema, new CreateTableOptions().setRangePartitionColumns( ImmutableList.<String>of())); - KuduTable table = syncClient.openTable("long-table"); + KuduTable table = client.openTable("long-table"); NavigableSet<Long> values = createIntegerValues(Type.INT64); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (long value : values) { @@ -411,11 +426,11 @@ public class TestScanPredicate extends BaseKuduTest { @Test public void testTimestampPredicate() throws Exception { Schema schema = createTableSchema(Type.INT64); - syncClient.createTable("timestamp-table", schema, createTableOptions()); - KuduTable table = syncClient.openTable("timestamp-table"); + client.createTable("timestamp-table", schema, createTableOptions()); + KuduTable table = client.openTable("timestamp-table"); NavigableSet<Long> values = createIntegerValues(Type.INT64); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (long value : values) { @@ -436,12 +451,12 @@ public class TestScanPredicate extends BaseKuduTest { @Test public void testFloatPredicates() throws Exception { Schema schema = createTableSchema(Type.FLOAT); - syncClient.createTable("float-table", schema, createTableOptions()); - KuduTable table = syncClient.openTable("float-table"); + client.createTable("float-table", schema, createTableOptions()); + KuduTable table = client.openTable("float-table"); NavigableSet<Float> values = createFloatValues(); List<Float> testValues = createFloatTestValues(); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (float value : values) { @@ -495,12 +510,12 @@ public class TestScanPredicate extends BaseKuduTest { @Test public void testDoublePredicates() throws Exception { Schema schema = createTableSchema(Type.DOUBLE); - syncClient.createTable("double-table", schema, createTableOptions()); - KuduTable table = syncClient.openTable("double-table"); + client.createTable("double-table", schema, createTableOptions()); + KuduTable table = client.openTable("double-table"); NavigableSet<Double> values = createDoubleValues(); List<Double> testValues = createDoubleTestValues(); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (double value : values) { @@ -558,12 +573,12 @@ public class TestScanPredicate extends BaseKuduTest { .typeAttributes(DecimalUtil.typeAttributes(4, 2)).nullable(true).build(); Schema schema = new Schema(ImmutableList.of(key, val)); - syncClient.createTable("decimal-table", schema, createTableOptions()); - KuduTable table = syncClient.openTable("decimal-table"); + client.createTable("decimal-table", schema, createTableOptions()); + KuduTable table = client.openTable("decimal-table"); NavigableSet<BigDecimal> values = createDecimalValues(); List<BigDecimal> testValues = createDecimalTestValues(); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (BigDecimal value : values) { @@ -617,12 +632,12 @@ public class TestScanPredicate extends BaseKuduTest { @Test public void testStringPredicates() throws Exception { Schema schema = createTableSchema(Type.STRING); - syncClient.createTable("string-table", schema, createTableOptions()); - KuduTable table = syncClient.openTable("string-table"); + client.createTable("string-table", schema, createTableOptions()); + KuduTable table = client.openTable("string-table"); NavigableSet<String> values = createStringValues(); List<String> testValues = createStringTestValues(); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (String value : values) { @@ -676,12 +691,12 @@ public class TestScanPredicate extends BaseKuduTest { @Test public void testBinaryPredicates() throws Exception { Schema schema = createTableSchema(Type.BINARY); - syncClient.createTable("binary-table", schema, createTableOptions()); - KuduTable table = syncClient.openTable("binary-table"); + client.createTable("binary-table", schema, createTableOptions()); + KuduTable table = client.openTable("binary-table"); NavigableSet<String> values = createStringValues(); List<String> testValues = createStringTestValues(); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); long i = 0; for (String value : values) { http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestScanToken.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestScanToken.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestScanToken.java index 0e3794f..55f6f78 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestScanToken.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestScanToken.java @@ -21,8 +21,12 @@ import com.google.common.collect.ImmutableList; import org.apache.kudu.ColumnSchema; import org.apache.kudu.Schema; import org.apache.kudu.Type; +import org.apache.kudu.test.KuduTestHarness; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.List; @@ -35,10 +39,23 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -public class TestScanToken extends BaseKuduTest { +public class TestScanToken { + private static final Logger LOG = LoggerFactory.getLogger(TestKuduClient.class); private static final String testTableName = "TestScanToken"; + private KuduClient client; + private AsyncKuduClient asyncClient; + + @Rule + public KuduTestHarness harness = new KuduTestHarness(); + + @Before + public void setUp() { + client = harness.getClient(); + asyncClient = harness.getAsyncClient(); + } + /** * Tests scan tokens by creating a set of scan tokens, serializing them, and * then executing them in parallel with separate client instances. This @@ -61,11 +78,11 @@ public class TestScanToken extends BaseKuduTest { splitRow.addString("key", "key_50"); createOptions.addSplitRow(splitRow); - syncClient.createTable(testTableName, schema, createOptions); + client.createTable(testTableName, schema, createOptions); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.AUTO_FLUSH_BACKGROUND); - KuduTable table = syncClient.openTable(testTableName); + KuduTable table = client.openTable(testTableName); for (int i = 0; i < 100; i++) { Insert insert = table.newInsert(); PartialRow row = insert.getRow(); @@ -76,7 +93,7 @@ public class TestScanToken extends BaseKuduTest { } session.flush(); - KuduScanToken.KuduScanTokenBuilder tokenBuilder = syncClient.newScanTokenBuilder(table); + KuduScanToken.KuduScanTokenBuilder tokenBuilder = client.newScanTokenBuilder(table); tokenBuilder.batchSizeBytes(0); tokenBuilder.setProjectedColumnIndexes(ImmutableList.<Integer>of()); List<KuduScanToken> tokens = tokenBuilder.build(); @@ -86,13 +103,13 @@ public class TestScanToken extends BaseKuduTest { // the first call to the tablet server won't return // any data. { - KuduScanner scanner = tokens.get(0).intoScanner(syncClient); + KuduScanner scanner = tokens.get(0).intoScanner(client); assertEquals(0, scanner.nextRows().getNumRows()); } for (KuduScanToken token : tokens) { // Sanity check to make sure the debug printing does not throw. - LOG.debug(KuduScanToken.stringifySerializedToken(token.serialize(), syncClient)); + LOG.debug(KuduScanToken.stringifySerializedToken(token.serialize(), client)); } } finally { AsyncKuduClient.FETCH_TABLETS_PER_RANGE_LOOKUP = saveFetchTablets; @@ -124,11 +141,11 @@ public class TestScanToken extends BaseKuduTest { split.addString("key", "k"); createOptions.addSplitRow(split); - syncClient.createTable(testTableName, schema, createOptions); + client.createTable(testTableName, schema, createOptions); - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.AUTO_FLUSH_BACKGROUND); - KuduTable table = syncClient.openTable(testTableName); + KuduTable table = client.openTable(testTableName); for (char c = 'a'; c < 'f'; c++) { Insert insert = table.newInsert(); PartialRow row = insert.getRow(); @@ -147,18 +164,18 @@ public class TestScanToken extends BaseKuduTest { } session.flush(); - KuduScanToken.KuduScanTokenBuilder tokenBuilder = syncClient.newScanTokenBuilder(table); + KuduScanToken.KuduScanTokenBuilder tokenBuilder = client.newScanTokenBuilder(table); tokenBuilder.setProjectedColumnIndexes(ImmutableList.<Integer>of()); List<KuduScanToken> tokens = tokenBuilder.build(); assertEquals(6, tokens.size()); assertEquals('f' - 'a' + 'z' - 'h', countScanTokenRows(tokens, - syncClient.getMasterAddressesAsString(), - syncClient.getDefaultOperationTimeoutMs())); + client.getMasterAddressesAsString(), + client.getDefaultOperationTimeoutMs())); for (KuduScanToken token : tokens) { // Sanity check to make sure the debug printing does not throw. - LOG.debug(KuduScanToken.stringifySerializedToken(token.serialize(), syncClient)); + LOG.debug(KuduScanToken.stringifySerializedToken(token.serialize(), client)); } } @@ -175,31 +192,31 @@ public class TestScanToken extends BaseKuduTest { CreateTableOptions createOptions = new CreateTableOptions(); createOptions.setRangePartitionColumns(ImmutableList.<String>of()); createOptions.setNumReplicas(1); - syncClient.createTable(testTableName, schema, createOptions); + client.createTable(testTableName, schema, createOptions); - KuduTable table = syncClient.openTable(testTableName); + KuduTable table = client.openTable(testTableName); - KuduScanToken.KuduScanTokenBuilder tokenBuilder = syncClient.newScanTokenBuilder(table); + KuduScanToken.KuduScanTokenBuilder tokenBuilder = client.newScanTokenBuilder(table); List<KuduScanToken> tokens = tokenBuilder.build(); assertEquals(1, tokens.size()); KuduScanToken token = tokens.get(0); // Drop a column - syncClient.alterTable(testTableName, new AlterTableOptions().dropColumn("a")); + client.alterTable(testTableName, new AlterTableOptions().dropColumn("a")); try { - token.intoScanner(syncClient); + token.intoScanner(client); fail(); } catch (IllegalArgumentException e) { assertTrue(e.getMessage().contains("Unknown column")); } // Add back the column with the wrong type. - syncClient.alterTable( + client.alterTable( testTableName, new AlterTableOptions().addColumn( new ColumnSchema.ColumnSchemaBuilder("a", Type.STRING).nullable(true).build())); try { - token.intoScanner(syncClient); + token.intoScanner(client); fail(); } catch (IllegalStateException e) { assertTrue(e.getMessage().contains( @@ -207,13 +224,13 @@ public class TestScanToken extends BaseKuduTest { } // Add the column with the wrong nullability. - syncClient.alterTable( + client.alterTable( testTableName, new AlterTableOptions().dropColumn("a") .addColumn(new ColumnSchema.ColumnSchemaBuilder("a", Type.INT64) .nullable(true).build())); try { - token.intoScanner(syncClient); + token.intoScanner(client); fail(); } catch (IllegalStateException e) { assertTrue(e.getMessage().contains( @@ -221,13 +238,13 @@ public class TestScanToken extends BaseKuduTest { } // Add the column with the correct type and nullability. - syncClient.alterTable( + client.alterTable( testTableName, new AlterTableOptions().dropColumn("a") .addColumn(new ColumnSchema.ColumnSchemaBuilder("a", Type.INT64) .nullable(false) .defaultValue(0L).build())); - token.intoScanner(syncClient); + token.intoScanner(client); } /** Test that scanRequestTimeout makes it from the scan token to the underlying Scanner class. */ @@ -235,15 +252,15 @@ public class TestScanToken extends BaseKuduTest { public void testScanRequestTimeout() throws IOException { final int NUM_ROWS_DESIRED = 100; final int SCAN_REQUEST_TIMEOUT_MS = 20; - KuduTable table = createDefaultTable(syncClient, testTableName); - loadDefaultTable(syncClient, testTableName, NUM_ROWS_DESIRED); + KuduTable table = createDefaultTable(client, testTableName); + loadDefaultTable(client, testTableName, NUM_ROWS_DESIRED); KuduScanToken.KuduScanTokenBuilder builder = - new KuduScanToken.KuduScanTokenBuilder(client, table); + new KuduScanToken.KuduScanTokenBuilder(asyncClient, table); builder.scanRequestTimeout(SCAN_REQUEST_TIMEOUT_MS); List<KuduScanToken> tokens = builder.build(); for (KuduScanToken token : tokens) { byte[] serialized = token.serialize(); - KuduScanner scanner = KuduScanToken.deserializeIntoScanner(serialized, syncClient); + KuduScanner scanner = KuduScanToken.deserializeIntoScanner(serialized, client); assertEquals(SCAN_REQUEST_TIMEOUT_MS, scanner.getScanRequestTimeout()); } } http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestScannerMultiTablet.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestScannerMultiTablet.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestScannerMultiTablet.java index 54a1cf3..4856e25 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestScannerMultiTablet.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestScannerMultiTablet.java @@ -17,6 +17,7 @@ package org.apache.kudu.client; import static org.apache.kudu.Type.STRING; +import static org.apache.kudu.test.KuduTestHarness.DEFAULT_SLEEP; import static org.apache.kudu.util.ClientTestUtil.countRowsInScan; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; @@ -29,8 +30,10 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.stumbleupon.async.Deferred; +import org.apache.kudu.test.KuduTestHarness; import org.junit.Before; import org.junit.Ignore; +import org.junit.Rule; import org.junit.Test; import org.apache.kudu.client.Client.ScanTokenPB; @@ -38,7 +41,7 @@ import org.apache.kudu.ColumnSchema; import org.apache.kudu.Common; import org.apache.kudu.Schema; -public class TestScannerMultiTablet extends BaseKuduTest { +public class TestScannerMultiTablet { // Generate a unique table name private static final String TABLE_NAME = TestScannerMultiTablet.class.getName()+"-"+System.currentTimeMillis(); @@ -50,6 +53,11 @@ public class TestScannerMultiTablet extends BaseKuduTest { */ private static long beforeWriteTimestamp; private KuduTable table; + private KuduClient client; + private AsyncKuduClient asyncClient; + + @Rule + public KuduTestHarness harness = new KuduTestHarness(); @Before public void setUp() throws Exception { @@ -64,10 +72,10 @@ public class TestScannerMultiTablet extends BaseKuduTest { builder.addSplitRow(splitRow); } - createTable(TABLE_NAME, schema, builder); + harness.getClient().createTable(TABLE_NAME, schema, builder); - KuduTable insertTable = openTable(TABLE_NAME); - AsyncKuduSession session = client.newSession(); + KuduTable insertTable = harness.getClient().openTable(TABLE_NAME); + AsyncKuduSession session = harness.getAsyncClient().newSession(); session.setFlushMode(AsyncKuduSession.FlushMode.AUTO_FLUSH_SYNC); // The data layout ends up like this: @@ -88,14 +96,16 @@ public class TestScannerMultiTablet extends BaseKuduTest { } } - beforeWriteTimestamp = client.getLastPropagatedTimestamp(); + beforeWriteTimestamp = harness.getAsyncClient().getLastPropagatedTimestamp(); // Reset the clients in order to clear the propagated timestamp, which may // have been set if other test cases ran before this one. This ensures // that all tests set their own state. - resetClients(); + harness.resetClients(); // Reopen the table using the reset client. - table = openTable(TABLE_NAME); + table = harness.getClient().openTable(TABLE_NAME); + client = harness.getClient(); + asyncClient = harness.getAsyncClient(); } // Test various combinations of start/end row keys. @@ -173,29 +183,29 @@ public class TestScannerMultiTablet extends BaseKuduTest { @Test(timeout = 100000) public void testProjections() throws Exception { // Test with column names. - AsyncKuduScanner.AsyncKuduScannerBuilder builder = client.newScannerBuilder(table); + AsyncKuduScanner.AsyncKuduScannerBuilder builder = asyncClient.newScannerBuilder(table); builder.setProjectedColumnNames(Lists.newArrayList(schema.getColumnByIndex(0).getName(), schema.getColumnByIndex(1).getName())); buildScannerAndCheckColumnsCount(builder, 2); // Test with column indexes. - builder = client.newScannerBuilder(table); + builder = asyncClient.newScannerBuilder(table); builder.setProjectedColumnIndexes(Lists.newArrayList(0, 1)); buildScannerAndCheckColumnsCount(builder, 2); // Test with column names overriding indexes. - builder = client.newScannerBuilder(table); + builder = asyncClient.newScannerBuilder(table); builder.setProjectedColumnIndexes(Lists.newArrayList(0, 1)); builder.setProjectedColumnNames(Lists.newArrayList(schema.getColumnByIndex(0).getName())); buildScannerAndCheckColumnsCount(builder, 1); // Test with keys last with indexes. - builder = client.newScannerBuilder(table); + builder = asyncClient.newScannerBuilder(table); builder.setProjectedColumnIndexes(Lists.newArrayList(2, 1, 0)); buildScannerAndCheckColumnsCount(builder, 3); // Test with keys last with column names. - builder = client.newScannerBuilder(table); + builder = asyncClient.newScannerBuilder(table); builder.setProjectedColumnNames(Lists.newArrayList(schema.getColumnByIndex(2).getName(), schema.getColumnByIndex(0).getName())); buildScannerAndCheckColumnsCount(builder, 2); @@ -203,13 +213,13 @@ public class TestScannerMultiTablet extends BaseKuduTest { @Test(timeout = 100000) public void testReplicaSelections() throws Exception { - AsyncKuduScanner scanner = client.newScannerBuilder(table) + AsyncKuduScanner scanner = asyncClient.newScannerBuilder(table) .replicaSelection(ReplicaSelection.LEADER_ONLY) .build(); assertEquals(9, countRowsInScan(scanner)); - scanner = client.newScannerBuilder(table) + scanner = asyncClient.newScannerBuilder(table) .replicaSelection(ReplicaSelection.CLOSEST_REPLICA) .build(); @@ -226,7 +236,7 @@ public class TestScannerMultiTablet extends BaseKuduTest { // Deserialize the scan token into a scanner, and make sure it is using // 'CLOSEST_REPLICA' selection policy. - KuduScanner scanner = KuduScanToken.deserializeIntoScanner(serializedToken, syncClient); + KuduScanner scanner = KuduScanToken.deserializeIntoScanner(serializedToken, client); assertEquals(ReplicaSelection.CLOSEST_REPLICA, scanner.getReplicaSelection()); assertEquals(9, countRowsInScan(scanner)); } @@ -236,7 +246,7 @@ public class TestScannerMultiTablet extends BaseKuduTest { // Perform scan in READ_AT_SNAPSHOT mode with no snapshot timestamp // specified. Verify that the scanner timestamp is set from the tablet // server response. - AsyncKuduScanner scanner = client.newScannerBuilder(table) + AsyncKuduScanner scanner = asyncClient.newScannerBuilder(table) .readMode(AsyncKuduScanner.ReadMode.READ_AT_SNAPSHOT) .build(); assertEquals(AsyncKuduClient.NO_TIMESTAMP, scanner.getSnapshotTimestamp()); @@ -271,12 +281,12 @@ public class TestScannerMultiTablet extends BaseKuduTest { // Perform scan in READ_YOUR_WRITES mode. Before the scan, verify that the // propagated timestamp is unset, since this is a fresh client. - AsyncKuduScanner scanner = client.newScannerBuilder(table) + AsyncKuduScanner scanner = asyncClient.newScannerBuilder(table) .readMode(AsyncKuduScanner.ReadMode.READ_YOUR_WRITES) .build(); KuduScanner syncScanner = new KuduScanner(scanner); assertEquals(scanner.getReadMode(), syncScanner.getReadMode()); - assertEquals(AsyncKuduClient.NO_TIMESTAMP, client.getLastPropagatedTimestamp()); + assertEquals(AsyncKuduClient.NO_TIMESTAMP, asyncClient.getLastPropagatedTimestamp()); assertEquals(AsyncKuduClient.NO_TIMESTAMP, scanner.getSnapshotTimestamp()); assertEquals(9, countRowsInScan(syncScanner)); @@ -291,12 +301,12 @@ public class TestScannerMultiTablet extends BaseKuduTest { // Update the propagated timestamp to ensure we see the rows written // in the constructor. - syncClient.updateLastPropagatedTimestamp(preTs); + client.updateLastPropagatedTimestamp(preTs); // Perform scan in READ_YOUR_WRITES mode. Before the scan, verify that the // scanner timestamp is not yet set. It will get set only once the scan // is opened. - AsyncKuduScanner scanner = client.newScannerBuilder(table) + AsyncKuduScanner scanner = asyncClient.newScannerBuilder(table) .readMode(AsyncKuduScanner.ReadMode.READ_YOUR_WRITES) .build(); KuduScanner syncScanner = new KuduScanner(scanner); @@ -313,7 +323,7 @@ public class TestScannerMultiTablet extends BaseKuduTest { syncScanner.close(); // Perform write in MANUAL_FLUSH (batch) mode. - KuduSession session = syncClient.newSession(); + KuduSession session = client.newSession(); session.setFlushMode(KuduSession.FlushMode.MANUAL_FLUSH); String[] keys = new String[] {"11", "22", "33"}; for (int i = 0; i < keys.length; i++) { @@ -326,12 +336,12 @@ public class TestScannerMultiTablet extends BaseKuduTest { session.flush(); session.close(); - scanner = client.newScannerBuilder(table) + scanner = asyncClient.newScannerBuilder(table) .readMode(AsyncKuduScanner.ReadMode.READ_YOUR_WRITES) .build(); syncScanner = new KuduScanner(scanner); - assertTrue(preTs < client.getLastPropagatedTimestamp()); - preTs = client.getLastPropagatedTimestamp(); + assertTrue(preTs < asyncClient.getLastPropagatedTimestamp()); + preTs = asyncClient.getLastPropagatedTimestamp(); assertEquals(12, countRowsInScan(syncScanner)); @@ -344,24 +354,24 @@ public class TestScannerMultiTablet extends BaseKuduTest { @Test(timeout = 100000) public void testScanPropagatesLatestTimestamp() throws Exception { - AsyncKuduScanner scanner = client.newScannerBuilder(table).build(); + AsyncKuduScanner scanner = asyncClient.newScannerBuilder(table).build(); // Initially, the client does not have the timestamp set. - assertEquals(AsyncKuduClient.NO_TIMESTAMP, client.getLastPropagatedTimestamp()); - assertEquals(KuduClient.NO_TIMESTAMP, syncClient.getLastPropagatedTimestamp()); + assertEquals(AsyncKuduClient.NO_TIMESTAMP, asyncClient.getLastPropagatedTimestamp()); + assertEquals(KuduClient.NO_TIMESTAMP, client.getLastPropagatedTimestamp()); KuduScanner syncScanner = new KuduScanner(scanner); // Check that both clients return the same propagated timestamp. assertTrue(syncScanner.hasMoreRows()); - assertEquals(AsyncKuduClient.NO_TIMESTAMP, client.getLastPropagatedTimestamp()); - assertEquals(KuduClient.NO_TIMESTAMP, syncClient.getLastPropagatedTimestamp()); + assertEquals(AsyncKuduClient.NO_TIMESTAMP, asyncClient.getLastPropagatedTimestamp()); + assertEquals(KuduClient.NO_TIMESTAMP, client.getLastPropagatedTimestamp()); int rowCount = syncScanner.nextRows().getNumRows(); // At this point, the call to the first tablet server should have been // done already, so the client should have received the propagated timestamp // in the scanner response. - long asyncTsRef = client.getLastPropagatedTimestamp(); - long syncTsRef = syncClient.getLastPropagatedTimestamp(); + long asyncTsRef = asyncClient.getLastPropagatedTimestamp(); + long syncTsRef = client.getLastPropagatedTimestamp(); assertEquals(asyncTsRef, syncTsRef); assertNotEquals(AsyncKuduClient.NO_TIMESTAMP, asyncTsRef); assertNotEquals(KuduClient.NO_TIMESTAMP, syncTsRef); @@ -369,8 +379,8 @@ public class TestScannerMultiTablet extends BaseKuduTest { assertTrue(syncScanner.hasMoreRows()); while (syncScanner.hasMoreRows()) { rowCount += syncScanner.nextRows().getNumRows(); - final long asyncTs = client.getLastPropagatedTimestamp(); - final long syncTs = syncClient.getLastPropagatedTimestamp(); + final long asyncTs = asyncClient.getLastPropagatedTimestamp(); + final long syncTs = client.getLastPropagatedTimestamp(); // Next scan responses from tablet servers should move the propagated // timestamp further. assertEquals(syncTs, asyncTs); @@ -383,14 +393,14 @@ public class TestScannerMultiTablet extends BaseKuduTest { @Test(timeout = 100000) public void testScanTokenPropagatesTimestamp() throws Exception { // Initially, the client does not have the timestamp set. - assertEquals(AsyncKuduClient.NO_TIMESTAMP, client.getLastPropagatedTimestamp()); - assertEquals(KuduClient.NO_TIMESTAMP, syncClient.getLastPropagatedTimestamp()); - AsyncKuduScanner scanner = client.newScannerBuilder(table).build(); + assertEquals(AsyncKuduClient.NO_TIMESTAMP, asyncClient.getLastPropagatedTimestamp()); + assertEquals(KuduClient.NO_TIMESTAMP, client.getLastPropagatedTimestamp()); + AsyncKuduScanner scanner = asyncClient.newScannerBuilder(table).build(); KuduScanner syncScanner = new KuduScanner(scanner); // Let the client receive the propagated timestamp in the scanner response. syncScanner.nextRows().getNumRows(); - final long tsPrev = client.getLastPropagatedTimestamp(); + final long tsPrev = asyncClient.getLastPropagatedTimestamp(); final long tsPropagated = tsPrev + 1000000; ScanTokenPB.Builder pbBuilder = ScanTokenPB.newBuilder(); @@ -401,9 +411,9 @@ public class TestScannerMultiTablet extends BaseKuduTest { // Deserialize scan tokens and make sure the client's last propagated // timestamp is updated accordingly. - assertEquals(tsPrev, client.getLastPropagatedTimestamp()); - KuduScanToken.deserializeIntoScanner(serializedToken, syncClient); - assertEquals(tsPropagated, client.getLastPropagatedTimestamp()); + assertEquals(tsPrev, asyncClient.getLastPropagatedTimestamp()); + KuduScanToken.deserializeIntoScanner(serializedToken, client); + assertEquals(tsPropagated, asyncClient.getLastPropagatedTimestamp()); } @Test(timeout = 100000) @@ -415,7 +425,7 @@ public class TestScannerMultiTablet extends BaseKuduTest { final byte[] serializedToken = KuduScanToken.serialize(scanTokenPB); // Deserialize scan tokens and make sure the read mode is updated accordingly. - KuduScanner scanner = KuduScanToken.deserializeIntoScanner(serializedToken, syncClient); + KuduScanner scanner = KuduScanToken.deserializeIntoScanner(serializedToken, client); assertEquals(AsyncKuduScanner.ReadMode.READ_YOUR_WRITES, scanner.getReadMode()); } @@ -432,7 +442,7 @@ public class TestScannerMultiTablet extends BaseKuduTest { String exclusiveUpperBoundKeyOne, String exclusiveUpperBoundKeyTwo, ColumnRangePredicate predicate) { - AsyncKuduScanner.AsyncKuduScannerBuilder builder = client.newScannerBuilder(table); + AsyncKuduScanner.AsyncKuduScannerBuilder builder = asyncClient.newScannerBuilder(table); if (lowerBoundKeyOne != null) { PartialRow lowerBoundRow = schema.newPartialRow(); http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurity.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurity.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurity.java index 5594177..17ed3db 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurity.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurity.java @@ -16,6 +16,7 @@ package org.apache.kudu.client; import static org.apache.kudu.util.AssertHelpers.assertEventuallyTrue; import static org.apache.kudu.util.ClientTestUtil.createBasicSchemaInsert; import static org.apache.kudu.util.ClientTestUtil.getBasicCreateTableOptions; +import static org.apache.kudu.util.ClientTestUtil.getBasicSchema; import static org.junit.Assert.assertNotNull; import java.io.Closeable; @@ -66,15 +67,15 @@ public class TestSecurity { MiniKuduClusterBuilder mcb = new MiniKuduClusterBuilder(); mcb.enableKerberos(); if (opts.contains(Option.LONG_LEADER_ELECTION)) { - mcb.addMasterFlag("--leader_failure_max_missed_heartbeat_periods=10.0"); + mcb.addMasterServerFlag("--leader_failure_max_missed_heartbeat_periods=10.0"); } if (opts.contains(Option.SHORT_TOKENS_AND_TICKETS)) { - mcb.addMasterFlag("--authn_token_validity_seconds=" + TICKET_LIFETIME_SECS) + mcb.addMasterServerFlag("--authn_token_validity_seconds=" + TICKET_LIFETIME_SECS) .kdcRenewLifetime(RENEWABLE_LIFETIME_SECS + "s") .kdcTicketLifetime(TICKET_LIFETIME_SECS + "s"); } - miniCluster = mcb.numMasters(3) - .numTservers(opts.contains(Option.START_TSERVERS) ? 3 : 0) + miniCluster = mcb.numMasterServers(3) + .numTabletServers(opts.contains(Option.START_TSERVERS) ? 3 : 0) .build(); miniCluster.kinit("test-admin"); client = new KuduClient.KuduClientBuilder(miniCluster.getMasterAddressesAsString()).build(); @@ -167,7 +168,7 @@ public class TestSecurity { // If we import the authentication data from the old authenticated client, // we should now be able to perform all of the normal client operations. newClient.importAuthenticationCredentials(authnData); - KuduTable table = newClient.createTable(TABLE_NAME, BaseKuduTest.basicSchema, + KuduTable table = newClient.createTable(TABLE_NAME, getBasicSchema(), getBasicCreateTableOptions()); KuduSession session = newClient.newSession(); session.apply(createBasicSchemaInsert(table, 1)); http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurityContextRealUser.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurityContextRealUser.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurityContextRealUser.java index 5957bcb..a1aaa8e 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurityContextRealUser.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestSecurityContextRealUser.java @@ -17,7 +17,10 @@ package org.apache.kudu.client; +import org.apache.kudu.client.MiniKuduCluster.MiniKuduClusterBuilder; +import org.apache.kudu.test.KuduTestHarness; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import java.util.ArrayList; @@ -32,27 +35,27 @@ import static org.junit.Assert.fail; * Tests that the 'real user' field of the security context is used for * SASL PLAIN negotiations, and is imported from the SecurityCredentialsPB. */ -public class TestSecurityContextRealUser extends BaseKuduTest { +public class TestSecurityContextRealUser { private String tableName; - @Override - protected MiniKuduCluster.MiniKuduClusterBuilder getMiniClusterBuilder() { - return super.getMiniClusterBuilder() - // This test requires a delicate setup. We enable Kerberos, make - // authentication optional, and set the superuser ACL to test-admin so that - // the external mini-cluster is able to connect to the master while creating - // the cluster. The user ACL is scoped to a different user so that we can - // test real user name propagation. - .enableKerberos() - .addMasterFlag("--user-acl=token-user") - .addMasterFlag("--superuser-acl=test-admin") - .addMasterFlag("--rpc-authentication=optional") - .addMasterFlag("--rpc-trace-negotiation") - .addTserverFlag("--user-acl=token-user") - .addTserverFlag("--superuser-acl=test-admin") - .addTserverFlag("--rpc-authentication=optional") - .addTserverFlag("--rpc-trace-negotiation"); - } + private static final MiniKuduClusterBuilder clusterBuilder = KuduTestHarness.getBaseClusterBuilder() + // This test requires a delicate setup. We enable Kerberos, make + // authentication optional, and set the superuser ACL to test-admin so that + // the external mini-cluster is able to connect to the master while creating + // the cluster. The user ACL is scoped to a different user so that we can + // test real user name propagation. + .enableKerberos() + .addMasterServerFlag("--user-acl=token-user") + .addMasterServerFlag("--superuser-acl=test-admin") + .addMasterServerFlag("--rpc-authentication=optional") + .addMasterServerFlag("--rpc-trace-negotiation") + .addTabletServerFlag("--user-acl=token-user") + .addTabletServerFlag("--superuser-acl=test-admin") + .addTabletServerFlag("--rpc-authentication=optional") + .addTabletServerFlag("--rpc-trace-negotiation"); + + @Rule + public KuduTestHarness harness = new KuduTestHarness(clusterBuilder); @Before public void setTableName() { @@ -62,12 +65,12 @@ public class TestSecurityContextRealUser extends BaseKuduTest { @Test public void test() throws Exception { // Clear out the Kerberos credentials in the environment. - kdestroy(); + harness.kdestroy(); // Create a new client instance with the logged in user, and ensure that it // fails to connect (the logged in user is not in the user-acl). try (KuduClient client = - new KuduClient.KuduClientBuilder(getMasterAddressesAsString()).build()) { + new KuduClient.KuduClientBuilder(harness.getMasterAddressesAsString()).build()) { client.listTabletServers(); fail(); } catch (KuduException e) { @@ -77,7 +80,7 @@ public class TestSecurityContextRealUser extends BaseKuduTest { // Try again with a correct real user. try (KuduClient client = - new KuduClient.KuduClientBuilder(getMasterAddressesAsString()).build()) { + new KuduClient.KuduClientBuilder(harness.getMasterAddressesAsString()).build()) { Client.AuthenticationCredentialsPB credentials = Client.AuthenticationCredentialsPB.newBuilder().setRealUser("token-user").build(); client.importAuthenticationCredentials(credentials.toByteArray()); http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestStatistics.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestStatistics.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestStatistics.java index 4c7c641..f9cf0ca 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestStatistics.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestStatistics.java @@ -18,9 +18,12 @@ package org.apache.kudu.client; import static org.apache.kudu.util.ClientTestUtil.createBasicSchemaInsert; import static org.apache.kudu.util.ClientTestUtil.getBasicCreateTableOptions; +import static org.apache.kudu.util.ClientTestUtil.getBasicSchema; import static org.junit.Assert.assertEquals; +import org.apache.kudu.test.KuduTestHarness; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.apache.kudu.client.Statistics.Statistic; @@ -28,21 +31,25 @@ import org.apache.kudu.client.Statistics.Statistic; import java.util.ArrayList; import java.util.List; -public class TestStatistics extends BaseKuduTest { +public class TestStatistics { private static final String TABLE_NAME = TestStatistics.class.getName() + "-" + System.currentTimeMillis(); private static KuduTable table; + @Rule + public KuduTestHarness harness = new KuduTestHarness(); + @Before public void setUp() throws Exception { CreateTableOptions options = getBasicCreateTableOptions().setNumReplicas(1); - table = createTable(TABLE_NAME, basicSchema, options); + table = harness.getClient().createTable(TABLE_NAME, getBasicSchema(), options); } @Test(timeout = 10000) public void test() throws Exception { - KuduSession session = syncClient.newSession(); + KuduClient client = harness.getClient(); + KuduSession session = client.newSession(); session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); int rowCount = 20; for (int i = 0; i < rowCount; i++) { @@ -52,7 +59,7 @@ public class TestStatistics extends BaseKuduTest { session.flush(); } } - Statistics statistics = syncClient.getStatistics(); + Statistics statistics = client.getStatistics(); assertEquals(rowCount / 2, statistics.getClientStatistic(Statistic.WRITE_RPCS)); assertEquals(rowCount, statistics.getClientStatistic(Statistic.WRITE_OPS)); assertEquals(0, statistics.getClientStatistic(Statistic.RPC_ERRORS)); http://git-wip-us.apache.org/repos/asf/kudu/blob/dc8ae799/java/kudu-client/src/test/java/org/apache/kudu/client/TestTimeouts.java ---------------------------------------------------------------------- diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestTimeouts.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestTimeouts.java index 86c03dd..ed8f56c 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestTimeouts.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestTimeouts.java @@ -18,16 +18,22 @@ package org.apache.kudu.client; import static org.apache.kudu.util.ClientTestUtil.createBasicSchemaInsert; import static org.apache.kudu.util.ClientTestUtil.getBasicCreateTableOptions; +import static org.apache.kudu.util.ClientTestUtil.getBasicSchema; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import org.apache.kudu.test.KuduTestHarness; +import org.junit.Rule; import org.junit.Test; -public class TestTimeouts extends BaseKuduTest { +public class TestTimeouts { private static final String TABLE_NAME = TestTimeouts.class.getName() + "-" + System.currentTimeMillis(); + @Rule + public KuduTestHarness harness = new KuduTestHarness(); + /** * This test case tries different methods that should all timeout, while relying on the client to * pass down the timeouts to the session and scanner. @@ -35,7 +41,8 @@ public class TestTimeouts extends BaseKuduTest { */ @Test(timeout = 100000) public void testLowTimeouts() throws Exception { - KuduClient lowTimeoutsClient = new KuduClient.KuduClientBuilder(getMasterAddressesAsString()) + KuduClient lowTimeoutsClient = + new KuduClient.KuduClientBuilder(harness.getMasterAddressesAsString()) .defaultAdminOperationTimeoutMs(1) .defaultOperationTimeoutMs(1) .build(); @@ -47,7 +54,7 @@ public class TestTimeouts extends BaseKuduTest { // Expected. } - createTable(TABLE_NAME, basicSchema, getBasicCreateTableOptions()); + harness.getClient().createTable(TABLE_NAME, getBasicSchema(), getBasicCreateTableOptions()); KuduTable table = lowTimeoutsClient.openTable(TABLE_NAME); KuduSession lowTimeoutSession = lowTimeoutsClient.newSession();
