Search in sources :

Example 1 with ViburDBCPConnectionProvider

use of org.hibernate.vibur.internal.ViburDBCPConnectionProvider in project hibernate-orm by hibernate.

the class ViburDBCPConnectionProviderTest method testSelectStatementWithStatementsCache.

@Test
public void testSelectStatementWithStatementsCache() {
    setUpPoolAndDatabase(1, 10);
    ConnectionProvider cp = sessionFactory().getServiceRegistry().getService(ConnectionProvider.class);
    ViburDBCPDataSource ds = ((ViburDBCPConnectionProvider) cp).getDataSource();
    ConcurrentMap<StatementMethod, StatementHolder> mockedStatementCache = mockStatementCache(ds);
    doInHibernate(this::sessionFactory, ViburDBCPConnectionProviderTest::executeAndVerifySelect);
    // We set above the poolMaxSize = 1, that's why the second session will get and use the same underlying connection.
    doInHibernate(this::sessionFactory, ViburDBCPConnectionProviderTest::executeAndVerifySelect);
    InOrder inOrder = inOrder(mockedStatementCache);
    inOrder.verify(mockedStatementCache).get(key1.capture());
    inOrder.verify(mockedStatementCache).putIfAbsent(same(key1.getValue()), val1.capture());
    inOrder.verify(mockedStatementCache).get(key2.capture());
    assertEquals(1, mockedStatementCache.size());
    assertTrue(mockedStatementCache.containsKey(key1.getValue()));
    assertEquals(key1.getValue(), key2.getValue());
    assertEquals(AVAILABLE, val1.getValue().state().get());
}
Also used : InOrder(org.mockito.InOrder) StatementMethod(org.vibur.dbcp.stcache.StatementMethod) ViburDBCPDataSource(org.vibur.dbcp.ViburDBCPDataSource) StatementHolder(org.vibur.dbcp.stcache.StatementHolder) ViburDBCPConnectionProvider(org.hibernate.vibur.internal.ViburDBCPConnectionProvider) ViburDBCPConnectionProvider(org.hibernate.vibur.internal.ViburDBCPConnectionProvider) ConnectionProvider(org.hibernate.engine.jdbc.connections.spi.ConnectionProvider) Test(org.junit.Test)

Aggregations

ConnectionProvider (org.hibernate.engine.jdbc.connections.spi.ConnectionProvider)1 ViburDBCPConnectionProvider (org.hibernate.vibur.internal.ViburDBCPConnectionProvider)1 Test (org.junit.Test)1 InOrder (org.mockito.InOrder)1 ViburDBCPDataSource (org.vibur.dbcp.ViburDBCPDataSource)1 StatementHolder (org.vibur.dbcp.stcache.StatementHolder)1 StatementMethod (org.vibur.dbcp.stcache.StatementMethod)1