Search in sources :

Example 21 with XaSqlConnection

use of cn.mycat.vertx.xa.XaSqlConnection in project Mycat2 by MyCATApache.

the class BaseSavepointSuite method baseSavepointCommit.

@Test
public void baseSavepointCommit(VertxTestContext testContext) {
    XaSqlConnection baseXaSqlConnection = factory.apply(mySQLManager, xaLog);
    Assert.assertTrue(baseXaSqlConnection instanceof SavepointSqlConnection);
    SavepointSqlConnection savepointSqlConnection = (SavepointSqlConnection) baseXaSqlConnection;
    baseXaSqlConnection.begin().onComplete(new Handler<AsyncResult<Void>>() {

        @Override
        @SneakyThrows
        public void handle(AsyncResult<Void> event) {
            Future<Void> sss = savepointSqlConnection.createSavepoint("sss");
            sss.toCompletionStage().toCompletableFuture().get();
            Assert.assertEquals("[sss]", savepointSqlConnection.getExistedSavepoints().toString());
            savepointSqlConnection.commit().toCompletionStage().toCompletableFuture().get();
            ;
            Assert.assertEquals("[]", savepointSqlConnection.getExistedSavepoints().toString());
            testContext.completeNow();
        }
    });
}
Also used : SavepointSqlConnection(cn.mycat.vertx.xa.SavepointSqlConnection) SneakyThrows(lombok.SneakyThrows) Future(io.vertx.core.Future) AsyncResult(io.vertx.core.AsyncResult) XaSqlConnection(cn.mycat.vertx.xa.XaSqlConnection) Test(org.junit.jupiter.api.Test)

Example 22 with XaSqlConnection

use of cn.mycat.vertx.xa.XaSqlConnection in project Mycat2 by MyCATApache.

the class XaTestSuite method beginDoubleTargetInsertButPrepareFail.

@Test
public void beginDoubleTargetInsertButPrepareFail(VertxTestContext testContext) throws Exception {
    clearData();
    XaSqlConnection baseXaSqlConnection = factory.apply(mySQLManager, xaLog);
    baseXaSqlConnection.begin().onComplete(event -> {
        Assertions.assertTrue(event.succeeded());
        Future<NewMycatConnection> ds1 = baseXaSqlConnection.getConnection("ds1");
        Future<NewMycatConnection> ds2 = baseXaSqlConnection.getConnection("ds2");
        CompositeFuture all = CompositeFuture.join(ds1.compose(connection -> {
            Future<SqlResult> future = connection.insert("INSERT INTO db1.travelrecord (id)\n" + "                       VALUES\n" + "                       (1);");
            return future.compose(rowSet -> {
                Assertions.assertEquals(1, rowSet.getAffectRows());
                return Future.succeededFuture(connection);
            });
        }), ds2.compose(connection -> {
            Future<SqlResult> future = connection.insert("INSERT INTO db1.travelrecord (id)\n" + "                       VALUES\n" + "                       (2);");
            return future.compose(rowSet -> {
                Assertions.assertEquals(1, rowSet.getAffectRows());
                return Future.succeededFuture(connection);
            });
        }));
        all.onComplete(event13 -> {
            Assertions.assertTrue(event13.succeeded());
            Future<Void> future = baseXaSqlConnection.commitXa((c) -> Future.failedFuture("prepare fail"));
            future.onComplete(new Handler<AsyncResult<Void>>() {

                @Override
                public void handle(AsyncResult<Void> event) {
                    Assertions.assertTrue(event.failed());
                    baseXaSqlConnection.rollback().onComplete(new Handler<AsyncResult<Void>>() {

                        @Override
                        public void handle(AsyncResult<Void> event) {
                            Assertions.assertTrue(event.succeeded());
                            Assertions.assertFalse(baseXaSqlConnection.isInTransaction());
                            Future<NewMycatConnection> connectionFuture = baseXaSqlConnection.getConnection("ds1");
                            connectionFuture.compose(sqlConnection -> sqlConnection.query("select id from db1.travelrecord")).onComplete(event1 -> {
                                Assertions.assertTrue(event1.succeeded());
                                Assertions.assertEquals(0, event1.result().size());
                                testContext.completeNow();
                            });
                        }
                    });
                }
            });
        });
    });
}
Also used : CompositeFuture(io.vertx.core.CompositeFuture) VertxTestContext(io.vertx.junit5.VertxTestContext) Connection(java.sql.Connection) RowSet(io.mycat.newquery.RowSet) BiFunction(java.util.function.BiFunction) XaLog(cn.mycat.vertx.xa.XaLog) Disabled(org.junit.jupiter.api.Disabled) Function(java.util.function.Function) CompositeFuture(io.vertx.core.CompositeFuture) SimpleConfig(cn.mycat.vertx.xa.SimpleConfig) SQLException(java.sql.SQLException) SqlConnection(io.vertx.sqlclient.SqlConnection) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) Map(java.util.Map) AsyncResult(io.vertx.core.AsyncResult) MySQLManager(cn.mycat.vertx.xa.MySQLManager) JsonUtil(io.mycat.util.JsonUtil) NewMycatConnection(io.mycat.newquery.NewMycatConnection) XaLogImpl(cn.mycat.vertx.xa.impl.XaLogImpl) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) VertxExtension(io.vertx.junit5.VertxExtension) SqlResult(io.mycat.newquery.SqlResult) Future(io.vertx.core.Future) Test(org.junit.jupiter.api.Test) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) XaSqlConnection(cn.mycat.vertx.xa.XaSqlConnection) DruidDataSource(com.alibaba.druid.pool.DruidDataSource) JdbcUtils(com.alibaba.druid.util.JdbcUtils) Row(io.vertx.sqlclient.Row) Assertions(org.junit.jupiter.api.Assertions) Handler(io.vertx.core.Handler) Collections(java.util.Collections) NewMycatConnection(io.mycat.newquery.NewMycatConnection) Handler(io.vertx.core.Handler) XaSqlConnection(cn.mycat.vertx.xa.XaSqlConnection) CompositeFuture(io.vertx.core.CompositeFuture) Future(io.vertx.core.Future) AsyncResult(io.vertx.core.AsyncResult) Test(org.junit.jupiter.api.Test)

Example 23 with XaSqlConnection

use of cn.mycat.vertx.xa.XaSqlConnection in project Mycat2 by MyCATApache.

the class XaTestSuite method beginBegin.

@Test
@Disabled
public void beginBegin(VertxTestContext testContext) {
    XaSqlConnection baseXaSqlConnection = factory.apply(mySQLManager, xaLog);
    baseXaSqlConnection.begin().onComplete(new Handler<AsyncResult<Void>>() {

        @Override
        public void handle(AsyncResult<Void> event) {
            baseXaSqlConnection.begin().onComplete(event1 -> {
                Assertions.assertTrue(event1.failed());
                testContext.completeNow();
            });
        }
    });
}
Also used : VertxTestContext(io.vertx.junit5.VertxTestContext) Connection(java.sql.Connection) RowSet(io.mycat.newquery.RowSet) BiFunction(java.util.function.BiFunction) XaLog(cn.mycat.vertx.xa.XaLog) Disabled(org.junit.jupiter.api.Disabled) Function(java.util.function.Function) CompositeFuture(io.vertx.core.CompositeFuture) SimpleConfig(cn.mycat.vertx.xa.SimpleConfig) SQLException(java.sql.SQLException) SqlConnection(io.vertx.sqlclient.SqlConnection) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) Map(java.util.Map) AsyncResult(io.vertx.core.AsyncResult) MySQLManager(cn.mycat.vertx.xa.MySQLManager) JsonUtil(io.mycat.util.JsonUtil) NewMycatConnection(io.mycat.newquery.NewMycatConnection) XaLogImpl(cn.mycat.vertx.xa.impl.XaLogImpl) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) VertxExtension(io.vertx.junit5.VertxExtension) SqlResult(io.mycat.newquery.SqlResult) Future(io.vertx.core.Future) Test(org.junit.jupiter.api.Test) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) XaSqlConnection(cn.mycat.vertx.xa.XaSqlConnection) DruidDataSource(com.alibaba.druid.pool.DruidDataSource) JdbcUtils(com.alibaba.druid.util.JdbcUtils) Row(io.vertx.sqlclient.Row) Assertions(org.junit.jupiter.api.Assertions) Handler(io.vertx.core.Handler) Collections(java.util.Collections) AsyncResult(io.vertx.core.AsyncResult) XaSqlConnection(cn.mycat.vertx.xa.XaSqlConnection) Test(org.junit.jupiter.api.Test) Disabled(org.junit.jupiter.api.Disabled)

Example 24 with XaSqlConnection

use of cn.mycat.vertx.xa.XaSqlConnection in project Mycat2 by MyCATApache.

the class XaTestSuite method rollback.

@Test
public void rollback(VertxTestContext testContext) {
    XaSqlConnection baseXaSqlConnection = factory.apply(mySQLManager, xaLog);
    baseXaSqlConnection.rollback().onComplete(new Handler<AsyncResult<Void>>() {

        @Override
        public void handle(AsyncResult<Void> event) {
            Assertions.assertTrue(event.succeeded());
            Assertions.assertFalse(baseXaSqlConnection.isInTransaction());
            testContext.completeNow();
        }
    });
}
Also used : AsyncResult(io.vertx.core.AsyncResult) XaSqlConnection(cn.mycat.vertx.xa.XaSqlConnection) Test(org.junit.jupiter.api.Test)

Example 25 with XaSqlConnection

use of cn.mycat.vertx.xa.XaSqlConnection in project Mycat2 by MyCATApache.

the class XaTestSuite method closeInTranscation.

@Test
public void closeInTranscation(VertxTestContext testContext) {
    XaSqlConnection baseXaSqlConnection = factory.apply(mySQLManager, xaLog);
    baseXaSqlConnection.begin().onComplete(new Handler<AsyncResult<Void>>() {

        @Override
        public void handle(AsyncResult<Void> event) {
            baseXaSqlConnection.close().onComplete(new Handler<AsyncResult<Void>>() {

                @Override
                public void handle(AsyncResult<Void> event) {
                    Assertions.assertTrue(event.succeeded());
                    Assertions.assertFalse(baseXaSqlConnection.isInTransaction());
                    testContext.completeNow();
                }
            });
        }
    });
}
Also used : Handler(io.vertx.core.Handler) AsyncResult(io.vertx.core.AsyncResult) XaSqlConnection(cn.mycat.vertx.xa.XaSqlConnection) Test(org.junit.jupiter.api.Test)

Aggregations

XaSqlConnection (cn.mycat.vertx.xa.XaSqlConnection)34 AsyncResult (io.vertx.core.AsyncResult)26 Test (org.junit.jupiter.api.Test)26 Future (io.vertx.core.Future)21 NewMycatConnection (io.mycat.newquery.NewMycatConnection)20 Handler (io.vertx.core.Handler)18 MySQLManager (cn.mycat.vertx.xa.MySQLManager)17 RowSet (io.mycat.newquery.RowSet)16 XaLog (cn.mycat.vertx.xa.XaLog)15 VertxTestContext (io.vertx.junit5.VertxTestContext)15 BiFunction (java.util.function.BiFunction)15 SavepointSqlConnection (cn.mycat.vertx.xa.SavepointSqlConnection)14 SneakyThrows (lombok.SneakyThrows)14 Assert (org.junit.Assert)9 CompositeFuture (io.vertx.core.CompositeFuture)8 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)8 Function (java.util.function.Function)8 SqlResult (io.mycat.newquery.SqlResult)7 Row (io.vertx.sqlclient.Row)7 SqlConnection (io.vertx.sqlclient.SqlConnection)7