@Test public void testGetConnectionUsernamePassword() throws SQLException { ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(10, MILLISECONDS)); try { dataSource.getConnection("username", "password"); fail("Expected SQLException"); } catch (UnsupportedOperationException expected) { } } }
@Test public void testGetConnectionUsernamePassword() throws SQLException { ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(10, MILLISECONDS)); try { dataSource.getConnection("username", "password"); fail("Expected SQLException"); } catch (UnsupportedOperationException expected) { } } }
@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 testLogWriterIsNeverSet() throws SQLException { MockConnectionPoolDataSource mockConnectionPoolDataSource = new MockConnectionPoolDataSource(); PrintWriter expectedLogWriter = new PrintWriter(new StringWriter()); mockConnectionPoolDataSource.logWriter = expectedLogWriter; ManagedDataSource dataSource = new MockManagedDataSource(mockConnectionPoolDataSource, 1, new Duration(10, MILLISECONDS)); // data source log writer should start with null assertNull(dataSource.getLogWriter()); // set the writer PrintWriter newWriter = new PrintWriter(new StringWriter()); dataSource.setLogWriter(newWriter); // data source log writer should still be null assertNull(dataSource.getLogWriter()); // core data source should remain unaffected assertSame(mockConnectionPoolDataSource.logWriter, expectedLogWriter); }
@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 testLogWriterIsNeverSet() throws SQLException { MockConnectionPoolDataSource mockConnectionPoolDataSource = new MockConnectionPoolDataSource(); PrintWriter expectedLogWriter = new PrintWriter(new StringWriter()); mockConnectionPoolDataSource.logWriter = expectedLogWriter; ManagedDataSource dataSource = new MockManagedDataSource(mockConnectionPoolDataSource, 1, new Duration(10, MILLISECONDS)); // data source log writer should start with null assertNull(dataSource.getLogWriter()); // set the writer PrintWriter newWriter = new PrintWriter(new StringWriter()); dataSource.setLogWriter(newWriter); // data source log writer should still be null assertNull(dataSource.getLogWriter()); // core data source should remain unaffected assertSame(mockConnectionPoolDataSource.logWriter, expectedLogWriter); }
@Test public void testLoginTimeoutIsNeverSet() throws SQLException { MockConnectionPoolDataSource mockConnectionPoolDataSource = new MockConnectionPoolDataSource(); mockConnectionPoolDataSource.loginTimeout = 42; ManagedDataSource dataSource = new MockManagedDataSource(mockConnectionPoolDataSource, 1, new Duration(5, SECONDS)); // login timeout should always be max connection wait assertEquals(dataSource.getLoginTimeout(), 5); // set to a new value int newTimeout = 12345; dataSource.setLoginTimeout(newTimeout); // data source timeout should still be max connection wait assertEquals(dataSource.getLoginTimeout(), 5); // core data source should remain unaffected assertEquals(mockConnectionPoolDataSource.loginTimeout, 42); }
@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 testCreateException() { MockConnectionPoolDataSource mockConnectionPoolDataSource = new MockConnectionPoolDataSource(); ManagedDataSource dataSource = new MockManagedDataSource(mockConnectionPoolDataSource, 1, new Duration(10, MILLISECONDS)); mockConnectionPoolDataSource.createException = new SQLException(); assertEquals(dataSource.getConnectionsActive(), 0); try { dataSource.getConnection(); fail("expected SQLException"); } catch (SQLException e) { assertSame(e, mockConnectionPoolDataSource.createException); } assertEquals(dataSource.getConnectionsActive(), 0); }
@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 testLoginTimeoutIsNeverSet() throws SQLException { MockConnectionPoolDataSource mockConnectionPoolDataSource = new MockConnectionPoolDataSource(); mockConnectionPoolDataSource.loginTimeout = 42; ManagedDataSource dataSource = new MockManagedDataSource(mockConnectionPoolDataSource, 1, new Duration(5, SECONDS)); // login timeout should always be max connection wait assertEquals(dataSource.getLoginTimeout(), 5); // set to a new value int newTimeout = 12345; dataSource.setLoginTimeout(newTimeout); // data source timeout should still be max connection wait assertEquals(dataSource.getLoginTimeout(), 5); // core data source should remain unaffected assertEquals(mockConnectionPoolDataSource.loginTimeout, 42); }
@Test public void testCreateException() { MockConnectionPoolDataSource mockConnectionPoolDataSource = new MockConnectionPoolDataSource(); ManagedDataSource dataSource = new MockManagedDataSource(mockConnectionPoolDataSource, 1, new Duration(10, MILLISECONDS)); mockConnectionPoolDataSource.createException = new SQLException(); assertEquals(dataSource.getConnectionsActive(), 0); try { dataSource.getConnection(); fail("expected SQLException"); } catch (SQLException e) { assertSame(e, mockConnectionPoolDataSource.createException); } assertEquals(dataSource.getConnectionsActive(), 0); }
final ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(5000, MILLISECONDS)); assertEquals(dataSource.getMaxConnectionWaitMillis(), 5000);
@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); } }
final ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(5000, MILLISECONDS)); assertEquals(dataSource.getMaxConnectionWaitMillis(), 5000);
@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 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); }
throws SQLException ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(10, MILLISECONDS)); assertTrue(dataSource.isWrapperFor(ManagedDataSource.class)); assertTrue(dataSource.isWrapperFor(DataSource.class));
ManagedDataSource dataSource = new MockManagedDataSource(1, new Duration(1, MILLISECONDS)); assertEquals(dataSource.getMaxConnections(), 1);