@Test public void testStatementBatchIsLogged() throws Exception { try (Connection connection = DriverManager.getConnection("sniffer:jdbc:h2:mem:", "sa", "sa")) { connection.createStatement().execute("CREATE TEMPORARY TABLE TEMPORARY_TABLE (BAZ VARCHAR(255))"); try (@SuppressWarnings("unused") Spy spy = Sniffer.expectNever(); Statement statement = connection.createStatement()) { statement.addBatch("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES ('foo')"); statement.addBatch("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES (LOWER('bar'))"); statement.executeBatch(); } } catch (WrongNumberOfQueriesError e) { assertNotNull(e); assertEquals(0, e.getMinimumQueries()); assertEquals(0, e.getMaximumQueries()); assertEquals(1, e.getNumQueries()); assertEquals(1, e.getExecutedStatements().size()); assertEquals(1, e.getExecutedSqls().size()); assertEquals(Threads.CURRENT, e.getThreadMatcher()); assertTrue(e.getMessage().contains("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES ('foo')")); assertTrue(e.getMessage().contains("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES (LOWER('bar'))")); } }
assertEquals(1, e.getNumQueries()); assertEquals(1, e.getExecutedStatements().size()); assertEquals(1, e.getExecutedSqls().size()); Iterator<StatementMetaData> statementsIt = e.getExecutedStatements().iterator(); assertEquals("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES (?) /*2 times*/", statementsIt.next().sql);
@Test public void testQueryType() throws Exception { try (Connection connection = DriverManager.getConnection("sniffer:jdbc:h2:mem:", "sa", "sa")) { connection.createStatement().execute("CREATE TEMPORARY TABLE TEMPORARY_TABLE (BAZ VARCHAR(255))"); try (@SuppressWarnings("unused") Spy spy = Sniffer.expectAtMostOnce(Query.INSERT)) { connection.createStatement().execute("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES ('foo')"); connection.createStatement().execute("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES (LOWER('bar'))"); connection.createStatement().execute("UPDATE TEMPORARY_TABLE SET BAZ = UPPER(BAZ)"); } } catch (WrongNumberOfQueriesError e) { assertNotNull(e); assertEquals(0, e.getMinimumQueries()); assertEquals(1, e.getMaximumQueries()); assertEquals(2, e.getNumQueries()); assertEquals(3, e.getExecutedStatements().size()); assertEquals(3, e.getExecutedSqls().size()); assertEquals(Threads.CURRENT, e.getThreadMatcher()); assertEquals(SqlStatement.INSERT, e.getQuery()); assertTrue(e.getMessage().contains("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES ('foo')")); assertTrue(e.getMessage().contains("INSERT INTO TEMPORARY_TABLE (BAZ) VALUES (LOWER('bar'))")); assertFalse(e.getMessage().contains("UPDATE TEMPORARY_TABLE SET BAZ = UPPER(BAZ)")); } }
@Test public void testQueryFromOtherThread() { try (@SuppressWarnings("unused") Spy spy = Sniffer.expect(1)) { executeStatement(); executeStatement(Query.INSERT); executeStatementInOtherThread(); } catch (WrongNumberOfQueriesError e) { assertNotNull(e); assertEquals(1, e.getMinimumQueries()); assertEquals(1, e.getMaximumQueries()); assertEquals(2, e.getNumQueries()); assertEquals(2, e.getExecutedStatements().size()); assertEquals(2, e.getExecutedSqls().size()); } }