This is an automated email from the ASF dual-hosted git repository. alexey pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kudu.git
The following commit(s) were added to refs/heads/master by this push: new 79c99ea KUDU-2612: address TODOs in TestKuduTransaction 79c99ea is described below commit 79c99ea20a5c978a91037a4e1540ea744a83725e Author: Alexey Serbin <ale...@apache.org> AuthorDate: Wed Apr 28 00:00:14 2021 -0700 KUDU-2612: address TODOs in TestKuduTransaction Change-Id: If76b7fb375528939e4af0c0d6e7fc7222109b70a Reviewed-on: http://gerrit.cloudera.org:8080/17355 Reviewed-by: Andrew Wong <aw...@cloudera.com> Tested-by: Kudu Jenkins --- .../apache/kudu/client/TestKuduTransaction.java | 66 ++++++++++++---------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduTransaction.java b/java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduTransaction.java index 60ca48d..956bb68 100644 --- a/java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduTransaction.java +++ b/java/kudu-client/src/test/java/org/apache/kudu/client/TestKuduTransaction.java @@ -234,14 +234,12 @@ public class TestKuduTransaction { "--txn_manager_enabled", }) @TabletServerConfig(flags = { - "--txn_schedule_background_tasks=false" + "--txn_schedule_background_tasks=false", + "--txn_status_manager_inject_latency_finalize_commit_ms=1000", }) public void testIsCommitComplete() throws Exception { KuduTransaction txn = client.newTransaction(); - txn.commit(false); - // TODO(aserbin): artificially delay the transaction's commit phase once - // the transaction commit orchestration is implemented assertFalse(txn.isCommitComplete()); } @@ -305,34 +303,15 @@ public class TestKuduTransaction { } /** - * Test scenario that starts a new transaction and commits it in a synchronous - * way (i.e. waits for the transaction to be committed). - * - * TODO(aserbin): uncomment this once txn commit orchestration is ready - @Test(timeout = 100000) - @MasterServerConfig(flags = { - "--txn_manager_enabled", - }) - public void testCommitAnEmptyTransactionWait() throws Exception { - KuduTransaction txn = client.newTransaction(); - txn.commit(true); - assertTrue(txn.isCommitComplete()); - } - */ - - /** - * A test scenario to start a new transaction and commit it in a synchronous - * way (i.e. wait for the transaction to be committed) when the back-end is - * running in the test-only mode to immediately finalize a transaction - * right after transitioning its state to COMMIT_IN_PROGRESS. + * Test scenario that starts a new empty transaction and commits it in a + * synchronous way (i.e. waits for the transaction to be committed). * - * TODO(aserbin): remove this scenario once txn commit orchestration is ready */ @Test(timeout = 100000) @MasterServerConfig(flags = { "--txn_manager_enabled", }) - public void testCommitAnEmptyTransactionWaitFake2PCO() throws Exception { + public void testCommitAnEmptyTransactionWait() throws Exception { KuduTransaction txn = client.newTransaction(); txn.commit(true); assertTrue(txn.isCommitComplete()); @@ -394,18 +373,40 @@ public class TestKuduTransaction { "--txn_manager_enabled", }) public void testNewTransactionalSession() throws Exception { + final String TABLE_NAME = "new_transactional_session"; + client.createTable( + TABLE_NAME, + ClientTestUtil.getBasicSchema(), + new CreateTableOptions().addHashPartitions(ImmutableList.of("key"), 2)); + KuduTransaction txn = client.newTransaction(); assertNotNull(txn); KuduSession session = txn.newKuduSession(); assertNotNull(session); - // TODO(aserbin): insert a few rows and rollback the transaction; run a - // table scan: the rows should not be there + session.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); + + KuduTable table = client.openTable(TABLE_NAME); + Insert insert = createBasicSchemaInsert(table, 1); + session.apply(insert); + session.flush(); + + // Rollback the transaction. txn.rollback(); + + assertFalse(session.isClosed()); + assertEquals(0, session.countPendingErrors()); + + KuduScanner scanner = new KuduScanner.KuduScannerBuilder(asyncClient, table) + .readMode(AsyncKuduScanner.ReadMode.READ_YOUR_WRITES) + .build(); + assertEquals(0, countRowsInScan(scanner)); } /** * Test scenario that starts a transaction and creates a new transactional - * AsyncKuduSession based on the newly started transaction. + * AsyncKuduSession based on the newly started transaction. No rows are + * inserted: it should be possible to rollback the empty transaction with + * no errors reported. */ @Test(timeout = 100000) @MasterServerConfig(flags = { @@ -416,9 +417,12 @@ public class TestKuduTransaction { assertNotNull(txn); AsyncKuduSession session = txn.newAsyncKuduSession(); assertNotNull(session); - // TODO(aserbin): insert a few rows and rollback the transaction; run a - // table scan: the rows should not be there + + // Rollback the empty transaction. txn.rollback(); + + assertFalse(session.isClosed()); + assertEquals(0, session.countPendingErrors()); } /**