Skip to content

Commit 557bc01

Browse files
committed
HHH-15862 Improve test speed
1 parent 4d4640f commit 557bc01

25 files changed

+1289
-1283
lines changed

hibernate-core/src/test/java/org/hibernate/orm/test/component/StructComponentInstantiatorTest.java

Lines changed: 138 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@
1111

1212
import org.hibernate.annotations.Instantiator;
1313
import org.hibernate.annotations.Struct;
14-
import org.hibernate.boot.registry.StandardServiceRegistry;
15-
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
16-
import org.hibernate.cfg.AvailableSettings;
1714
import org.hibernate.dialect.OracleDialect;
1815
import org.hibernate.dialect.PostgreSQLDialect;
19-
import org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl;
2016

21-
import org.hibernate.testing.orm.junit.BaseSessionFactoryFunctionalTest;
17+
import org.hibernate.testing.jdbc.SharedDriverManagerTypeCacheClearingIntegrator;
18+
import org.hibernate.testing.orm.junit.BootstrapServiceRegistry;
19+
import org.hibernate.testing.orm.junit.DomainModel;
2220
import org.hibernate.testing.orm.junit.RequiresDialect;
21+
import org.hibernate.testing.orm.junit.SessionFactory;
22+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
2323
import org.junit.jupiter.api.AfterEach;
2424
import org.junit.jupiter.api.BeforeEach;
2525
import org.junit.jupiter.api.Test;
@@ -33,198 +33,178 @@
3333
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
3434
import static org.junit.jupiter.api.Assertions.assertNull;
3535

36-
@RequiresDialect( PostgreSQLDialect.class )
37-
@RequiresDialect( OracleDialect.class )
38-
public class StructComponentInstantiatorTest extends BaseSessionFactoryFunctionalTest {
39-
40-
@Override
41-
protected Class<?>[] getAnnotatedClasses() {
42-
return new Class<?>[] {
43-
RecordStructHolder.class
44-
};
45-
}
46-
47-
@Override
48-
public StandardServiceRegistry produceServiceRegistry(StandardServiceRegistryBuilder ssrBuilder) {
49-
// Make sure this stuff runs on a dedicated connection pool,
50-
// otherwise we might run into ORA-21700: object does not exist or is marked for delete
51-
// because the JDBC connection or database session caches something that should have been invalidated
52-
ssrBuilder.applySetting( AvailableSettings.CONNECTION_PROVIDER, DriverManagerConnectionProviderImpl.class.getName() );
53-
return super.produceServiceRegistry( ssrBuilder );
54-
}
36+
@BootstrapServiceRegistry(
37+
// Clear the type cache, otherwise we might run into ORA-21700: object does not exist or is marked for delete
38+
integrators = SharedDriverManagerTypeCacheClearingIntegrator.class
39+
)
40+
@DomainModel(annotatedClasses = StructComponentInstantiatorTest.RecordStructHolder.class)
41+
@SessionFactory
42+
@RequiresDialect(PostgreSQLDialect.class)
43+
@RequiresDialect(OracleDialect.class)
44+
public class StructComponentInstantiatorTest {
5545

5646
@BeforeEach
57-
public void setUp() {
58-
inTransaction(
59-
session -> {
60-
session.persist( new RecordStructHolder( 1L, Point.createAggregate1() ) );
61-
session.persist( new RecordStructHolder( 2L, Point.createAggregate2() ) );
62-
}
63-
);
47+
public void setUp(SessionFactoryScope scope) {
48+
scope.inTransaction( session -> {
49+
session.persist( new RecordStructHolder( 1L, Point.createAggregate1() ) );
50+
session.persist( new RecordStructHolder( 2L, Point.createAggregate2() ) );
51+
} );
6452
}
6553

6654
@AfterEach
67-
protected void cleanupTest() {
68-
inTransaction(
69-
session -> {
70-
session.createQuery( "delete from RecordStructHolder h" ).executeUpdate();
71-
}
72-
);
55+
protected void cleanupTest(SessionFactoryScope scope) {
56+
scope.inTransaction( session -> {
57+
session.createQuery( "delete from RecordStructHolder h" ).executeUpdate();
58+
} );
7359
}
7460

7561
@Test
76-
public void testUpdate() {
77-
sessionFactoryScope().inTransaction(
78-
entityManager -> {
79-
RecordStructHolder RecordStructHolder = entityManager.find( RecordStructHolder.class, 1L );
80-
RecordStructHolder.setThePoint( Point.createAggregate2() );
81-
entityManager.flush();
82-
entityManager.clear();
83-
assertStructEquals( Point.createAggregate2(), entityManager.find( RecordStructHolder.class, 1L ).getThePoint() );
84-
}
85-
);
62+
public void testUpdate(SessionFactoryScope scope) {
63+
scope.inTransaction( entityManager -> {
64+
RecordStructHolder RecordStructHolder = entityManager.find( RecordStructHolder.class, 1L );
65+
RecordStructHolder.setThePoint( Point.createAggregate2() );
66+
entityManager.flush();
67+
entityManager.clear();
68+
assertStructEquals(
69+
Point.createAggregate2(),
70+
entityManager.find( RecordStructHolder.class, 1L ).getThePoint()
71+
);
72+
} );
8673
}
8774

8875
@Test
89-
public void testFetch() {
90-
sessionFactoryScope().inSession(
91-
entityManager -> {
92-
List<RecordStructHolder> RecordStructHolders = entityManager.createQuery( "from RecordStructHolder b where b.id = 1", RecordStructHolder.class ).getResultList();
93-
assertEquals( 1, RecordStructHolders.size() );
94-
assertEquals( 1L, RecordStructHolders.get( 0 ).getId() );
95-
assertStructEquals( Point.createAggregate1(), RecordStructHolders.get( 0 ).getThePoint() );
96-
}
97-
);
76+
public void testFetch(SessionFactoryScope scope) {
77+
scope.inTransaction( entityManager -> {
78+
List<RecordStructHolder> RecordStructHolders = entityManager.createQuery(
79+
"from RecordStructHolder b where b.id = 1",
80+
RecordStructHolder.class
81+
).getResultList();
82+
assertEquals( 1, RecordStructHolders.size() );
83+
assertEquals( 1L, RecordStructHolders.get( 0 ).getId() );
84+
assertStructEquals( Point.createAggregate1(), RecordStructHolders.get( 0 ).getThePoint() );
85+
} );
9886
}
9987

10088
@Test
101-
public void testFetchNull() {
102-
sessionFactoryScope().inSession(
103-
entityManager -> {
104-
List<RecordStructHolder> RecordStructHolders = entityManager.createQuery( "from RecordStructHolder b where b.id = 2", RecordStructHolder.class ).getResultList();
105-
assertEquals( 1, RecordStructHolders.size() );
106-
assertEquals( 2L, RecordStructHolders.get( 0 ).getId() );
107-
assertStructEquals( Point.createAggregate2(), RecordStructHolders.get( 0 ).getThePoint() );
108-
}
109-
);
89+
public void testFetchNull(SessionFactoryScope scope) {
90+
scope.inTransaction( entityManager -> {
91+
List<RecordStructHolder> RecordStructHolders = entityManager.createQuery(
92+
"from RecordStructHolder b where b.id = 2",
93+
RecordStructHolder.class
94+
).getResultList();
95+
assertEquals( 1, RecordStructHolders.size() );
96+
assertEquals( 2L, RecordStructHolders.get( 0 ).getId() );
97+
assertStructEquals( Point.createAggregate2(), RecordStructHolders.get( 0 ).getThePoint() );
98+
} );
11099
}
111100

112101
@Test
113-
public void testDomainResult() {
114-
sessionFactoryScope().inSession(
115-
entityManager -> {
116-
List<Point> structs = entityManager.createQuery( "select b.thePoint from RecordStructHolder b where b.id = 1", Point.class ).getResultList();
117-
assertEquals( 1, structs.size() );
118-
assertStructEquals( Point.createAggregate1(), structs.get( 0 ) );
119-
}
120-
);
102+
public void testDomainResult(SessionFactoryScope scope) {
103+
scope.inTransaction( entityManager -> {
104+
List<Point> structs = entityManager.createQuery(
105+
"select b.thePoint from RecordStructHolder b where b.id = 1",
106+
Point.class
107+
).getResultList();
108+
assertEquals( 1, structs.size() );
109+
assertStructEquals( Point.createAggregate1(), structs.get( 0 ) );
110+
} );
121111
}
122112

123113
@Test
124-
public void testSelectionItems() {
125-
sessionFactoryScope().inSession(
126-
entityManager -> {
127-
List<Tuple> tuples = entityManager.createQuery(
128-
"select " +
129-
"b.thePoint.x," +
130-
"b.thePoint.y," +
131-
"b.thePoint.z " +
132-
"from RecordStructHolder b where b.id = 1",
133-
Tuple.class
134-
).getResultList();
135-
assertEquals( 1, tuples.size() );
136-
final Tuple tuple = tuples.get( 0 );
137-
assertStructEquals(
138-
Point.createAggregate1(),
139-
new Point(
140-
tuple.get( 1, String.class ),
141-
tuple.get( 2, long.class ),
142-
tuple.get( 0, int.class )
143-
)
144-
);
145-
}
146-
);
114+
public void testSelectionItems(SessionFactoryScope scope) {
115+
scope.inTransaction( entityManager -> {
116+
List<Tuple> tuples = entityManager.createQuery(
117+
"select " +
118+
"b.thePoint.x," +
119+
"b.thePoint.y," +
120+
"b.thePoint.z " +
121+
"from RecordStructHolder b where b.id = 1",
122+
Tuple.class
123+
).getResultList();
124+
assertEquals( 1, tuples.size() );
125+
final Tuple tuple = tuples.get( 0 );
126+
assertStructEquals(
127+
Point.createAggregate1(),
128+
new Point(
129+
tuple.get( 1, String.class ),
130+
tuple.get( 2, long.class ),
131+
tuple.get( 0, int.class )
132+
)
133+
);
134+
} );
147135
}
148136

149137
@Test
150-
public void testDeleteWhere() {
151-
sessionFactoryScope().inTransaction(
152-
entityManager -> {
153-
entityManager.createQuery( "delete RecordStructHolder b where b.thePoint is not null" ).executeUpdate();
154-
assertNull( entityManager.find( RecordStructHolder.class, 1L ) );
155-
}
156-
);
138+
public void testDeleteWhere(SessionFactoryScope scope) {
139+
scope.inTransaction( entityManager -> {
140+
entityManager.createQuery( "delete RecordStructHolder b where b.thePoint is not null" ).executeUpdate();
141+
assertNull( entityManager.find( RecordStructHolder.class, 1L ) );
142+
} );
157143
}
158144

159145
@Test
160-
public void testUpdateAggregate() {
161-
sessionFactoryScope().inTransaction(
162-
entityManager -> {
163-
entityManager.createQuery( "update RecordStructHolder b set b.thePoint = null" ).executeUpdate();
164-
assertNull( entityManager.find( RecordStructHolder.class, 1L ).getThePoint() );
165-
}
166-
);
146+
public void testUpdateAggregate(SessionFactoryScope scope) {
147+
scope.inTransaction( entityManager -> {
148+
entityManager.createQuery( "update RecordStructHolder b set b.thePoint = null" ).executeUpdate();
149+
assertNull( entityManager.find( RecordStructHolder.class, 1L ).getThePoint() );
150+
} );
167151
}
168152

169153
@Test
170-
public void testUpdateAggregateMember() {
171-
sessionFactoryScope().inTransaction(
172-
entityManager -> {
173-
entityManager.createQuery( "update RecordStructHolder b set b.thePoint.x = null" ).executeUpdate();
174-
Point struct = Point.createAggregate1().withX( null );
175-
assertStructEquals( struct, entityManager.find( RecordStructHolder.class, 1L ).getThePoint() );
176-
}
177-
);
154+
public void testUpdateAggregateMember(SessionFactoryScope scope) {
155+
scope.inTransaction( entityManager -> {
156+
entityManager.createQuery( "update RecordStructHolder b set b.thePoint.x = null" ).executeUpdate();
157+
Point struct = Point.createAggregate1().withX( null );
158+
assertStructEquals( struct, entityManager.find( RecordStructHolder.class, 1L ).getThePoint() );
159+
} );
178160
}
179161

180162
@Test
181-
public void testUpdateMultipleAggregateMembers() {
182-
sessionFactoryScope().inTransaction(
183-
entityManager -> {
184-
entityManager.createQuery( "update RecordStructHolder b set b.thePoint.y = null, b.thePoint.z = 0" ).executeUpdate();
185-
Point struct = Point.createAggregate1().withY( null ).withZ( 0 );
186-
assertStructEquals( struct, entityManager.find( RecordStructHolder.class, 1L ).getThePoint() );
187-
}
188-
);
163+
public void testUpdateMultipleAggregateMembers(SessionFactoryScope scope) {
164+
scope.inTransaction( entityManager -> {
165+
entityManager.createQuery( "update RecordStructHolder b set b.thePoint.y = null, b.thePoint.z = 0" )
166+
.executeUpdate();
167+
Point struct = Point.createAggregate1().withY( null ).withZ( 0 );
168+
assertStructEquals( struct, entityManager.find( RecordStructHolder.class, 1L ).getThePoint() );
169+
} );
189170
}
190171

191172
@Test
192-
public void testUpdateAllAggregateMembers() {
193-
sessionFactoryScope().inTransaction(
194-
entityManager -> {
195-
Point struct = Point.createAggregate1();
196-
entityManager.createQuery(
173+
public void testUpdateAllAggregateMembers(SessionFactoryScope scope) {
174+
scope.inTransaction( entityManager -> {
175+
Point struct = Point.createAggregate1();
176+
entityManager.createQuery(
197177
"update RecordStructHolder b set " +
198178
"b.thePoint.x = :x," +
199179
"b.thePoint.y = :y," +
200180
"b.thePoint.z = :z " +
201181
"where b.id = 2"
202182
)
203-
.setParameter( "x", struct.getX() )
204-
.setParameter( "y", struct.getY() )
205-
.setParameter( "z", struct.getZ() )
206-
.executeUpdate();
207-
assertStructEquals( Point.createAggregate1(), entityManager.find( RecordStructHolder.class, 2L ).getThePoint() );
208-
}
209-
);
183+
.setParameter( "x", struct.getX() )
184+
.setParameter( "y", struct.getY() )
185+
.setParameter( "z", struct.getZ() )
186+
.executeUpdate();
187+
assertStructEquals(
188+
Point.createAggregate1(),
189+
entityManager.find( RecordStructHolder.class, 2L ).getThePoint()
190+
);
191+
} );
210192
}
211193

212194
@Test
213-
public void testNativeQuery() {
214-
sessionFactoryScope().inTransaction(
215-
entityManager -> {
216-
//noinspection unchecked
217-
List<Object> resultList = entityManager.createNativeQuery(
218-
"select b.thePoint from RecordStructHolder b where b.id = 1",
219-
Object.class
220-
)
221-
.getResultList();
222-
assertEquals( 1, resultList.size() );
223-
assertInstanceOf( Point.class, resultList.get( 0 ) );
224-
Point struct = (Point) resultList.get( 0 );
225-
assertStructEquals( Point.createAggregate1(), struct );
226-
}
227-
);
195+
public void testNativeQuery(SessionFactoryScope scope) {
196+
scope.inTransaction( entityManager -> {
197+
//noinspection unchecked
198+
List<Object> resultList = entityManager.createNativeQuery(
199+
"select b.thePoint from RecordStructHolder b where b.id = 1",
200+
Object.class
201+
)
202+
.getResultList();
203+
assertEquals( 1, resultList.size() );
204+
assertInstanceOf( Point.class, resultList.get( 0 ) );
205+
Point struct = (Point) resultList.get( 0 );
206+
assertStructEquals( Point.createAggregate1(), struct );
207+
} );
228208
}
229209

230210
private void assertStructEquals(Point point1, Point point2) {
@@ -274,7 +254,7 @@ public static class Point {
274254
private final long z;
275255
private final Integer x;
276256

277-
@Instantiator({"y","z","x"})
257+
@Instantiator({ "y", "z", "x" })
278258
public Point(String y, long z, Integer x) {
279259
this.y = y;
280260
this.x = x;
@@ -296,15 +276,19 @@ public long getZ() {
296276
public Point withX(Integer x) {
297277
return new Point( y, z, x );
298278
}
279+
299280
public Point withY(String y) {
300281
return new Point( y, z, x );
301282
}
283+
302284
public Point withZ(long z) {
303285
return new Point( y, z, x );
304286
}
287+
305288
public static Point createAggregate1() {
306289
return new Point( "1", -100, 10 );
307290
}
291+
308292
public static Point createAggregate2() {
309293
return new Point( "20", -200, 2 );
310294
}

0 commit comments

Comments
 (0)