@Test public void testMaxSize() { doInJPA( this::entityManagerFactory, entityManager -> { EntityManagerFactory entityManagerFactory = entityManager.getEntityManagerFactory(); SessionFactory sessionFactory = entityManagerFactory.unwrap( SessionFactory.class ); assertEquals( expectedQueryStatisticsMaxSize(), sessionFactory.getSessionFactoryOptions().getQueryStatisticsMaxSize() ); StatisticsImplementor statistics = (StatisticsImplementor) sessionFactory.getStatistics(); for ( int i = 0; i < 10; i++ ) { statistics.queryExecuted( String.valueOf( i ), 100, i * 1000 ); } assertEquals( 1000, statistics.getQueryStatistics( "1" ).getExecutionTotalTime() ); for ( int i = 100; i < 300; i++ ) { statistics.queryExecuted( String.valueOf( i ), 100, i * 1000 ); } assertEquals( 0, statistics.getQueryStatistics( "1" ).getExecutionTotalTime() ); } ); } }
@Override public double getValue(Statistics statistics, String query) { return toSeconds(statistics.getQueryStatistics(query) .getExecutionTotalTime()); } }