@Test public void testTwoTransactionsAfterEachOther(TestContext context) { Async async = context.async(); client.getConnection(ar -> { if (ar.failed()) { context.fail(ar.cause()); return; } conn = ar.result(); conn.setAutoCommit(false, ar2 -> { ensureSuccess(context, ar2); conn.query("SELECT 1", ar3 -> { ensureSuccess(context, ar3); conn.commit(ar4 -> { ensureSuccess(context, ar4); conn.query("SELECT 2", ar5 -> { ensureSuccess(context, ar5); conn.commit(ar6 -> { ensureSuccess(context, ar6); conn.setAutoCommit(true, ar7 -> { ensureSuccess(context, ar7); async.complete(); }); }); }); }); }); }); }); }
@Test public void testTwoTransactionsAfterEachOther(TestContext context) { Async async = context.async(); client.getConnection(ar -> { if (ar.failed()) { context.fail(ar.cause()); return; } conn = ar.result(); conn.setAutoCommit(false, ar2 -> { ensureSuccess(context, ar2); conn.query("SELECT 1", ar3 -> { ensureSuccess(context, ar3); conn.commit(ar4 -> { ensureSuccess(context, ar4); conn.query("SELECT 2", ar5 -> { ensureSuccess(context, ar5); conn.commit(ar6 -> { ensureSuccess(context, ar6); conn.setAutoCommit(true, ar7 -> { ensureSuccess(context, ar7); async.complete(); }); }); }); }); }); }); }); }
@Test public void testEmptyTransactions(TestContext context) { Async async = context.async(); client.getConnection(ar -> { if (ar.failed()) { context.fail(ar.cause()); return; } conn = ar.result(); conn.setAutoCommit(false, ar2 -> { ensureSuccess(context, ar2); conn.rollback(ar3 -> { ensureSuccess(context, ar3); conn.commit(ar4 -> { ensureSuccess(context, ar4); conn.setAutoCommit(true, ar5 -> { ensureSuccess(context, ar5); async.complete(); }); }); }); }); }); }
@Test public void testEmptyTransactions(TestContext context) { Async async = context.async(); client.getConnection(ar -> { if (ar.failed()) { context.fail(ar.cause()); return; } conn = ar.result(); conn.setAutoCommit(false, ar2 -> { ensureSuccess(context, ar2); conn.rollback(ar3 -> { ensureSuccess(context, ar3); conn.commit(ar4 -> { ensureSuccess(context, ar4); conn.setAutoCommit(true, ar5 -> { ensureSuccess(context, ar5); async.complete(); }); }); }); }); }); }
@Test public void testInvalidInsertStatement(TestContext context) { Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); conn.updateWithParams("INVALID INSERT", new JsonArray(), ar2 -> { if (ar2.failed() && ar2.cause() instanceof com.github.jasync.sql.db.exceptions.DatabaseException) { async.complete(); } else { context.fail("Should receive an exception of type DatabaseException."); } }); }); }
@Test public void testCommitWhenNotInTransaction(TestContext context) { int id = 0; String name = "adele"; Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setupSimpleTable(conn, ar2 -> { ensureSuccess(context, ar2); conn.setAutoCommit(false, ar3 -> { ensureSuccess(context, ar3); conn.updateWithParams("UPDATE test_table SET name=? WHERE id=?", new JsonArray().add(name).add(id), ar4 -> { ensureSuccess(context, ar4); conn.setAutoCommit(true, ar5 -> { ensureSuccess(context, ar5); conn.commit(ar6 -> { context.assertTrue(ar6.failed()); async.complete(); }); }); }); }); }); }); }
@Test public void testRollingBackWhenNotInTransaction(TestContext context) { int id = 0; String name = "adele"; Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setupSimpleTable(conn, ar2 -> { ensureSuccess(context, ar2); conn.setAutoCommit(false, ar3 -> { ensureSuccess(context, ar3); conn.updateWithParams("UPDATE test_table SET name=? WHERE id=?", new JsonArray().add(name).add(id), ar4 -> { ensureSuccess(context, ar4); conn.setAutoCommit(true, ar5 -> { ensureSuccess(context, ar5); conn.rollback(ar6 -> { context.assertTrue(ar6.failed()); async.complete(); }); }); }); }); }); }); }
@Test public void testRollingBackWhenNotInTransaction(TestContext context) { int id = 0; String name = "adele"; Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setupSimpleTable(conn, ar2 -> { ensureSuccess(context, ar2); conn.setAutoCommit(false, ar3 -> { ensureSuccess(context, ar3); conn.updateWithParams("UPDATE test_table SET name=? WHERE id=?", new JsonArray().add(name).add(id), ar4 -> { ensureSuccess(context, ar4); conn.setAutoCommit(true, ar5 -> { ensureSuccess(context, ar5); conn.rollback(ar6 -> { context.assertTrue(ar6.failed()); async.complete(); }); }); }); }); }); }); }
@Test public void testCommitWhenNotInTransaction(TestContext context) { int id = 0; String name = "adele"; Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setupSimpleTable(conn, ar2 -> { ensureSuccess(context, ar2); conn.setAutoCommit(false, ar3 -> { ensureSuccess(context, ar3); conn.updateWithParams("UPDATE test_table SET name=? WHERE id=?", new JsonArray().add(name).add(id), ar4 -> { ensureSuccess(context, ar4); conn.setAutoCommit(true, ar5 -> { ensureSuccess(context, ar5); conn.commit(ar6 -> { context.assertTrue(ar6.failed()); async.complete(); }); }); }); }); }); }); }
@Test public void testInvalidInsertStatement(TestContext context) { Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); conn.updateWithParams("INVALID INSERT", new JsonArray(), ar2 -> { if (ar2.failed() && ar2.cause() instanceof com.github.mauricio.async.db.exceptions.DatabaseException) { async.complete(); } else { context.fail("Should receive an exception of type DatabaseException."); } }); }); }
@Test public void testInvalidInsertStatement(TestContext context) { Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); conn.updateWithParams("INVALID INSERT", new JsonArray(), ar2 -> { if (ar2.failed() && ar2.cause() instanceof com.github.jasync.sql.db.exceptions.DatabaseException) { async.complete(); } else { context.fail("Should receive an exception of type DatabaseException."); } }); }); }
@Test public void testInstant(TestContext context) { Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); conn.execute("DROP TABLE IF EXISTS test_table", ar1 -> { ensureSuccess(context, ar1); conn.execute("CREATE TABLE test_table (instant TIMESTAMP)", ar2 -> { ensureSuccess(context, ar2); JsonArray args = new JsonArray().add(Instant.now()); String now = args.getString(0); conn.queryWithParams("INSERT INTO test_table (instant) VALUES (?)", args, ar3 -> { ensureSuccess(context, ar3); conn.query("SELECT instant FROM test_table", ar4 -> { ensureSuccess(context, ar4); // timestamps with out time zone are returned as strings, so we must compare to the original instant // ignoring the timezone offset (meaning ignore everything after char 23) compareInstantStrings( context, ar4.result().getResults().get(0).getString(0), now.substring(0, 23) ); async.complete(); }); }); }); }); }); }
@Test public void testCommitWhenNotInTransaction(TestContext context) { int id = 0; String name = "adele"; Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setupSimpleTable(conn, ar2 -> { ensureSuccess(context, ar2); conn.setAutoCommit(false, ar3 -> { ensureSuccess(context, ar3); conn.updateWithParams("UPDATE test_table SET name=? WHERE id=?", new JsonArray().add(name).add(id), ar4 -> { ensureSuccess(context, ar4); conn.setAutoCommit(true, ar5 -> { ensureSuccess(context, ar5); conn.commit(ar6 -> { context.assertTrue(ar6.failed()); async.complete(); }); }); }); }); }); }); }
protected void checkConsistency(TestContext context, Async async, SQLConnection conn, long id1, String name1, long id2, String name2) { conn.queryWithParams("SELECT name FROM test_table WHERE id = ?", new JsonArray().add(id1), ar5 -> { ensureSuccess(context, ar5); ResultSet resultSet1 = ar5.result(); context.assertEquals(name1, resultSet1.getResults().get(0).getString(0)); conn.queryWithParams("SELECT name FROM test_table WHERE id = ?", new JsonArray().add(id2), ar6 -> { ensureSuccess(context, ar6); ResultSet resultSet2 = ar6.result(); context.assertNotEquals(id1, id2); context.assertEquals(name2, resultSet2.getResults().get(0).getString(0)); async.complete(); }); }); }
@Test public void testInsertion(TestContext context) { int id = 27; String name = "Adele"; Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setupSimpleTable(conn, ar2 -> { ensureSuccess(context, ar2); conn.updateWithParams("INSERT INTO test_table (id, name) VALUES (?, ?)", new JsonArray().add(id).add(name), ar3 -> { ensureSuccess(context, ar3); conn.query("SELECT id, name FROM test_table ORDER BY id", ar4 -> { ensureSuccess(context, ar4); ResultSet resultSet = ar4.result(); context.assertEquals("Adele", resultSet.getResults().get(id - 1).getString(1)); async.complete(); }); }); }); }); }
@Test public void testInsertion(TestContext context) { int id = 27; String name = "Adele"; Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setupSimpleTable(conn, ar2 -> { ensureSuccess(context, ar2); conn.updateWithParams("INSERT INTO test_table (id, name) VALUES (?, ?)", new JsonArray().add(id).add(name), ar3 -> { ensureSuccess(context, ar3); conn.query("SELECT id, name FROM test_table ORDER BY id", ar4 -> { ensureSuccess(context, ar4); ResultSet resultSet = ar4.result(); context.assertEquals("Adele", resultSet.getResults().get(id - 1).getString(1)); async.complete(); }); }); }); }); }
protected void checkConsistency(TestContext context, Async async, SQLConnection conn, long id1, String name1, long id2, String name2) { conn.queryWithParams("SELECT name FROM test_table WHERE id = ?", new JsonArray().add(id1), ar5 -> { ensureSuccess(context, ar5); ResultSet resultSet1 = ar5.result(); context.assertEquals(name1, resultSet1.getResults().get(0).getString(0)); conn.queryWithParams("SELECT name FROM test_table WHERE id = ?", new JsonArray().add(id2), ar6 -> { ensureSuccess(context, ar6); ResultSet resultSet2 = ar6.result(); context.assertNotEquals(id1, id2); context.assertEquals(name2, resultSet2.getResults().get(0).getString(0)); async.complete(); }); }); }
protected void checkConsistency(TestContext context, Async async, SQLConnection conn, long id1, String name1, long id2, String name2) { conn.queryWithParams("SELECT name FROM test_table WHERE id = ?", new JsonArray().add(id1), ar5 -> { ensureSuccess(context, ar5); ResultSet resultSet1 = ar5.result(); context.assertEquals(name1, resultSet1.getResults().get(0).getString(0)); conn.queryWithParams("SELECT name FROM test_table WHERE id = ?", new JsonArray().add(id2), ar6 -> { ensureSuccess(context, ar6); ResultSet resultSet2 = ar6.result(); context.assertNotEquals(id1, id2); context.assertEquals(name2, resultSet2.getResults().get(0).getString(0)); async.complete(); }); }); }
@Test public void testInsertion(TestContext context) { int id = 27; String name = "Adele"; Async async = context.async(); client.getConnection(ar -> { ensureSuccess(context, ar); conn = ar.result(); setupSimpleTable(conn, ar2 -> { ensureSuccess(context, ar2); conn.updateWithParams("INSERT INTO test_table (id, name) VALUES (?, ?)", new JsonArray().add(id).add(name), ar3 -> { ensureSuccess(context, ar3); conn.query("SELECT id, name FROM test_table ORDER BY id", ar4 -> { ensureSuccess(context, ar4); ResultSet resultSet = ar4.result(); context.assertEquals("Adele", resultSet.getResults().get(id - 1).getString(1)); async.complete(); }); }); }); }); }
ensureSuccess(context, ar2); conn.updateWithParams("UPDATE test_table SET name=? WHERE id=?", new JsonArray().add(name).add(id), ar3 -> { ensureSuccess(context, ar3); UpdateResult updateRes = ar3.result(); conn.query("SELECT name FROM test_table ORDER BY id", ar4 -> { ensureSuccess(context, ar4); ResultSet selectRes = ar4.result(); context.assertNotNull(updateRes);