private static void registerBogusConnector(TransactionManager transactionManager, String connectorId) { transactionManager.addConnector(connectorId, new Connector() { @Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) { // Just return something return new ConnectorTransactionHandle() {}; } @Override public ConnectorMetadata getMetadata(ConnectorTransactionHandle transactionHandle) { throw new UnsupportedOperationException(); } @Override public ConnectorSplitManager getSplitManager() { throw new UnsupportedOperationException(); } }); }
transactionManager.addConnector(connectorId, connector);
@Test public void testTransactionWorkflow() throws Exception { try (IdleCheckExecutor executor = new IdleCheckExecutor()) { TransactionManager transactionManager = TransactionManager.create(new TransactionManagerConfig(), executor.getExecutor(), finishingExecutor); Connector c1 = new TpchConnectorFactory(new InMemoryNodeManager()).create("c1", ImmutableMap.of()); transactionManager.addConnector("c1", c1); TransactionId transactionId = transactionManager.beginTransaction(false); assertEquals(transactionManager.getAllTransactionInfos().size(), 1); TransactionInfo transactionInfo = transactionManager.getTransactionInfo(transactionId); assertFalse(transactionInfo.isAutoCommitContext()); assertTrue(transactionInfo.getConnectorIds().isEmpty()); assertFalse(transactionInfo.getWrittenConnectorId().isPresent()); ConnectorMetadata metadata = transactionManager.getMetadata(transactionId, "c1"); metadata.listSchemaNames(TEST_SESSION.toConnectorSession("c1")); transactionInfo = transactionManager.getTransactionInfo(transactionId); assertEquals(transactionInfo.getConnectorIds(), ImmutableList.of("c1")); assertFalse(transactionInfo.getWrittenConnectorId().isPresent()); transactionManager.asyncCommit(transactionId).join(); assertTrue(transactionManager.getAllTransactionInfos().isEmpty()); } }
@Test public void testAbortedTransactionWorkflow() throws Exception { try (IdleCheckExecutor executor = new IdleCheckExecutor()) { TransactionManager transactionManager = TransactionManager.create(new TransactionManagerConfig(), executor.getExecutor(), finishingExecutor); Connector c1 = new TpchConnectorFactory(new InMemoryNodeManager()).create("c1", ImmutableMap.of()); transactionManager.addConnector("c1", c1); TransactionId transactionId = transactionManager.beginTransaction(false); assertEquals(transactionManager.getAllTransactionInfos().size(), 1); TransactionInfo transactionInfo = transactionManager.getTransactionInfo(transactionId); assertFalse(transactionInfo.isAutoCommitContext()); assertTrue(transactionInfo.getConnectorIds().isEmpty()); assertFalse(transactionInfo.getWrittenConnectorId().isPresent()); ConnectorMetadata metadata = transactionManager.getMetadata(transactionId, "c1"); metadata.listSchemaNames(TEST_SESSION.toConnectorSession("c1")); transactionInfo = transactionManager.getTransactionInfo(transactionId); assertEquals(transactionInfo.getConnectorIds(), ImmutableList.of("c1")); assertFalse(transactionInfo.getWrittenConnectorId().isPresent()); transactionManager.asyncAbort(transactionId).join(); assertTrue(transactionManager.getAllTransactionInfos().isEmpty()); } }
transactionManager.addConnector("c1", c1);
transactionManager.addConnector("tpch", createTestingConnector("tpch")); transactionManager.addConnector("c2", createTestingConnector("c2")); transactionManager.addConnector("c3", createTestingConnector("c3"));