@Override public MockConnection getConnection() throws SQLException { if (closed) { throw new SQLException("connection has been closed"); } return new MockConnection(this); }
@Test public void testIdempotentClose() throws Exception { ManagedDataSource dataSource = new MockManagedDataSource(10, new Duration(10, MILLISECONDS)); List<MockConnection> connections = new ArrayList<>(); for (int i = 0; i < 10; i++) { MockConnection connection = (MockConnection) dataSource.getConnection(); assertNotNull(connection); connections.add(connection); } assertEquals(dataSource.getConnectionsActive(), 10); // close connections in a random order Collections.shuffle(connections); int closedCount = 0; for (MockConnection connection : connections) { closedCount++; for (int j = 0; j < 7; j++) { connection.close(); assertEquals(dataSource.getConnectionsActive(), 10 - closedCount); } } }
@Test public void testIdempotentClose() throws Exception { ManagedDataSource dataSource = new MockManagedDataSource(10, new Duration(10, MILLISECONDS)); List<MockConnection> connections = new ArrayList<>(); for (int i = 0; i < 10; i++) { MockConnection connection = (MockConnection) dataSource.getConnection(); assertNotNull(connection); connections.add(connection); } assertEquals(dataSource.getConnectionsActive(), 10); // close connections in a random order Collections.shuffle(connections); int closedCount = 0; for (MockConnection connection : connections) { closedCount++; for (int j = 0; j < 7; j++) { connection.close(); assertEquals(dataSource.getConnectionsActive(), 10 - closedCount); } } }
@Test public void testCloseException() throws SQLException { MockConnectionPoolDataSource mockConnectionPoolDataSource = new MockConnectionPoolDataSource(); ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(10, MILLISECONDS)); mockConnectionPoolDataSource.closeException = new SQLException(); assertEquals(dataSource.getConnectionsActive(), 0); MockConnection connection = (MockConnection) dataSource.getConnection(); assertNotNull(connection); assertEquals(dataSource.getConnectionsActive(), 1); connection.close(); assertEquals(dataSource.getConnectionsActive(), 0); connection = (MockConnection) dataSource.getConnection(); assertNotNull(connection); assertEquals(dataSource.getConnectionsActive(), 1); connection.close(); assertEquals(dataSource.getConnectionsActive(), 0); connection.errorOccurred(); assertEquals(dataSource.getConnectionsActive(), 0); }
@Test public void testCloseException() throws SQLException { MockConnectionPoolDataSource mockConnectionPoolDataSource = new MockConnectionPoolDataSource(); ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(10, MILLISECONDS)); mockConnectionPoolDataSource.closeException = new SQLException(); assertEquals(dataSource.getConnectionsActive(), 0); MockConnection connection = (MockConnection) dataSource.getConnection(); assertNotNull(connection); assertEquals(dataSource.getConnectionsActive(), 1); connection.close(); assertEquals(dataSource.getConnectionsActive(), 0); connection = (MockConnection) dataSource.getConnection(); assertNotNull(connection); assertEquals(dataSource.getConnectionsActive(), 1); connection.close(); assertEquals(dataSource.getConnectionsActive(), 0); connection.errorOccurred(); assertEquals(dataSource.getConnectionsActive(), 0); }
@Test public void testIdempotentCloseAndException() throws SQLException { MockConnectionPoolDataSource mockConnectionPoolDataSource = new MockConnectionPoolDataSource(); ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(10, MILLISECONDS)); mockConnectionPoolDataSource.closeException = new SQLException(); assertEquals(dataSource.getConnectionsActive(), 0); MockConnection connection = (MockConnection) dataSource.getConnection(); assertNotNull(connection); assertEquals(dataSource.getConnectionsActive(), 1); for (int i = 0; i < 10; i++) { connection.close(); assertEquals(dataSource.getConnectionsActive(), 0); connection.errorOccurred(); assertEquals(dataSource.getConnectionsActive(), 0); } }
@Test public void testIdempotentCloseAndException() throws SQLException { MockConnectionPoolDataSource mockConnectionPoolDataSource = new MockConnectionPoolDataSource(); ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(10, MILLISECONDS)); mockConnectionPoolDataSource.closeException = new SQLException(); assertEquals(dataSource.getConnectionsActive(), 0); MockConnection connection = (MockConnection) dataSource.getConnection(); assertNotNull(connection); assertEquals(dataSource.getConnectionsActive(), 1); for (int i = 0; i < 10; i++) { connection.close(); assertEquals(dataSource.getConnectionsActive(), 0); connection.errorOccurred(); assertEquals(dataSource.getConnectionsActive(), 0); } }
@Test public void testConnectionException() throws Exception { ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(10, MILLISECONDS)); MockConnection connection = (MockConnection) dataSource.getConnection(); assertNotNull(connection); assertEquals(dataSource.getConnectionsActive(), 1); connection.errorOccurred(); assertEquals(dataSource.getConnectionsActive(), 0); }
@Test public void testConnectionException() throws Exception { ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(10, MILLISECONDS)); MockConnection connection = (MockConnection) dataSource.getConnection(); assertNotNull(connection); assertEquals(dataSource.getConnectionsActive(), 1); connection.errorOccurred(); assertEquals(dataSource.getConnectionsActive(), 0); }
@Override public MockConnection getConnection() throws SQLException { if (closed) { throw new SQLException("connection has been closed"); } return new MockConnection(this); }