1 | public class HiLoSequenceTest extends FunctionalTestCase {↵ | | 1 | public class PooledTableTest extends FunctionalTestCase {↵
|
2 | public HiLoSequenceTest(String string) {↵ | | 2 | public PooledTableTest(String string) {↵
|
3 | super( string );↵ | | 3 | super( string );↵
|
4 | }↵ | | 4 | }↵
|
|
5 | public String[] getMappings() {↵ | | 5 | public String[] getMappings() {↵
|
6 | return new String[] { "idgen/enhanced/sequence/HiLo.hbm.xml" };↵ | | 6 | return new String[] { "idgen/enhanced/table/Pooled.hbm.xml" };↵
|
7 | }↵ | | 7 | }↵
|
|
8 | public static Test suite() {↵ | | 8 | public static Test suite() {↵
|
9 | return new FunctionalTestClassTestSuite( HiLoSequenceTest.class );↵ | | 9 | return new FunctionalTestClassTestSuite( PooledTableTest.class );↵
|
10 | }↵ | | 10 | }↵
|
|
11 | public void testNormalBoundary() {↵ | | 11 | public void testNormalBoundary() {↵
|
12 | EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );↵ | | 12 | EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );↵
|
13 | assertClassAssignability( SequenceStyleGenerator.class, persister.getIdentifierGenerator().getClass() );↵ | | 13 | assertClassAssignability( TableGenerator.class, persister.getIdentifierGenerator().getClass() );↵
|
14 | SequenceStyleGenerator generator = ( SequenceStyleGenerator ) persister.getIdentifierGenerator();↵ | | 14 | TableGenerator generator = ( TableGenerator ) persister.getIdentifierGenerator();↵
|
15 | assertClassAssignability( OptimizerFactory.HiLoOptimizer.class, generator.getOptimizer().getClass() );↵ | | 15 | assertClassAssignability( OptimizerFactory.PooledOptimizer.class, generator.getOptimizer().getClass() );↵
|
16 | OptimizerFactory.HiLoOptimizer optimizer = ( OptimizerFactory.HiLoOptimizer ) generator.getOptimizer();↵ | | 16 | OptimizerFactory.PooledOptimizer optimizer = ( OptimizerFactory.PooledOptimizer ) generator.getOptimizer();↵
|
|
17 | int increment = optimizer.getIncrementSize();↵ | | 17 | int increment = optimizer.getIncrementSize();↵
|
18 | Entity[] entities = new Entity[ increment + 1 ];↵ | | 18 | Entity[] entities = new Entity[ increment + 1 ];↵
|
19 | Session s = openSession();↵ | | 19 | Session s = openSession();↵
|
20 | s.beginTransaction();↵ | | 20 | s.beginTransaction();↵
|
21 | for ( int i = 0; i < increment; i++ ) {↵ | | 21 | for ( int i = 0; i < increment; i++ ) {↵
|
22 | entities[i] = new Entity( "" + ( i + 1 ) );↵ | | 22 | entities[i] = new Entity( "" + ( i + 1 ) );↵
|
23 | s.save( entities[i] );↵ | | 23 | s.save( entities[i] );↵
|
24 | assertEquals( 1, generator.getDatabaseStructure().getTimesAccessed() ); // initialization↵ | | 24 | assertEquals( 2, generator.getTableAccessCount() ); // initialization calls seq twice↵
|
25 | assertEquals( 1, optimizer.getLastSourceValue() ); // initialization↵ | | 25 | assertEquals( increment + 1, optimizer.getLastSourceValue() ); // initialization calls seq twice↵
|
26 | assertEquals( i + 1, optimizer.getLastValue() );↵ | | 26 | assertEquals( i + 1, optimizer.getLastValue() );↵
|
27 | assertEquals( increment + 1, optimizer.getHiValue() );↵ | | 27 | assertEquals( increment + 1, optimizer.getLastSourceValue() );↵
|
28 | }↵ | | 28 | }↵
|
29 | // now force a "clock over"↵ | | 29 | // now force a "clock over"↵
|
30 | entities[ increment ] = new Entity( "" + increment );↵ | | 30 | entities[ increment ] = new Entity( "" + increment );↵
|
31 | s.save( entities[ increment ] );↵ | | 31 | s.save( entities[ increment ] );↵
|
32 | assertEquals( 2, generator.getDatabaseStructure().getTimesAccessed() ); // initialization↵ | | 32 | assertEquals( 3, generator.getTableAccessCount() ); // initialization (2) + clock over↵
|
33 | assertEquals( 2, optimizer.getLastSourceValue() ); // initialization↵ | | 33 | assertEquals( ( increment * 2 ) + 1, optimizer.getLastSourceValue() ); // initialization↵
|
34 | assertEquals( increment + 1, optimizer.getLastValue() );↵ | | 34 | (2) + clock over↵
|
35 | assertEquals( ( increment * 2 ) + 1, optimizer.getHiValue() );↵ | | 35 | assertEquals( increment + 1, optimizer.getLastValue() );↵
|
|
36 | s.getTransaction().commit();↵ | | 36 | s.getTransaction().commit();↵
|
|
37 | s.beginTransaction();↵ | | 37 | s.beginTransaction();↵
|
38 | for ( int i = 0; i < entities.length; i++ ) {↵ | | 38 | for ( int i = 0; i < entities.length; i++ ) {↵
|
39 | assertEquals( i + 1, entities[i].getId().intValue() );↵ | | 39 | assertEquals( i + 1, entities[i].getId().intValue() );↵
|
40 | s.delete( entities[i] );↵ | | 40 | s.delete( entities[i] );↵
|
41 | }↵ | | 41 | }↵
|
42 | s.getTransaction().commit();↵ | | 42 | s.getTransaction().commit();↵
|
43 | s.close() | | 43 | s.close()
|