99import java .util .Collection ;
1010import java .util .List ;
1111import java .util .Objects ;
12+ import java .util .concurrent .CompletionStage ;
13+ import java .util .concurrent .TimeUnit ;
14+
15+ import org .hibernate .Hibernate ;
16+ import org .hibernate .LockMode ;
17+ import org .hibernate .annotations .BatchSize ;
18+ import org .hibernate .reactive .util .impl .CompletionStages ;
19+
20+ import org .junit .jupiter .api .Disabled ;
21+ import org .junit .jupiter .api .Test ;
22+
23+ import io .vertx .junit5 .Timeout ;
24+ import io .vertx .junit5 .VertxTestContext ;
1225import jakarta .persistence .CascadeType ;
1326import jakarta .persistence .Entity ;
1427import jakarta .persistence .FetchType ;
2740import jakarta .persistence .Transient ;
2841import jakarta .persistence .Version ;
2942
30- import org .hibernate .Hibernate ;
31- import org .hibernate .LockMode ;
32- import org .hibernate .annotations .BatchSize ;
33-
34- import org .junit .After ;
35- import org .junit .Ignore ;
36- import org .junit .Test ;
37-
38- import io .vertx .ext .unit .TestContext ;
39-
43+ import static org .junit .jupiter .api .Assertions .assertEquals ;
44+ import static org .junit .jupiter .api .Assertions .assertFalse ;
45+ import static org .junit .jupiter .api .Assertions .assertTrue ;
4046
47+ @ Timeout ( value = 5 , timeUnit = TimeUnit .MINUTES ) // DB2 seems to take longer than other DB's
4148public class BatchFetchTest extends BaseReactiveTest {
4249
4350 @ Override
4451 protected Collection <Class <?>> annotatedEntities () {
45- return List .of ( Node .class , Element .class );
52+ return List .of ( Element .class , Node .class );
4653 }
4754
48- @ After
49- public void cleanDb (TestContext context ) {
50- test ( context , getSessionFactory ()
51- .withTransaction ( s -> s .createQuery ( "delete from Element" ).executeUpdate ()
52- .thenCompose ( v -> s .createQuery ( "delete from Node" ).executeUpdate () ) ) );
55+ @ Override
56+ public CompletionStage <Void > cleanDb () {
57+ getSessionFactory ().close ();
58+ return CompletionStages .voidFuture ();
5359 }
5460
5561 @ Test
56- @ Ignore // See https://github.com/hibernate/hibernate-reactive/issues/1501
57- public void testQuery (TestContext context ) {
62+ @ Disabled // See https://github.com/hibernate/hibernate-reactive/issues/1501
63+ public void testQuery (VertxTestContext context ) {
5864 Node basik = new Node ( "Child" );
5965 basik .parent = new Node ( "Parent" );
6066 basik .elements .add ( new Element ( basik ) );
@@ -69,33 +75,33 @@ public void testQuery(TestContext context) {
6975 .thenCompose ( s -> s .createQuery ( "from Node n order by id" , Node .class )
7076 .getResultList ()
7177 .thenCompose ( list -> {
72- context . assertEquals ( list .size (), 2 );
78+ assertEquals ( list .size (), 2 );
7379 Node n1 = list .get ( 0 );
7480 Node n2 = list .get ( 1 );
75- context . assertFalse ( Hibernate .isInitialized ( n1 .getElements () ), "'n1.elements' should not be initialize" );
76- context . assertFalse ( Hibernate .isInitialized ( n2 .getElements () ), "'n2.elements' should not be initialize" );
81+ assertFalse ( Hibernate .isInitialized ( n1 .getElements () ), "'n1.elements' should not be initialize" );
82+ assertFalse ( Hibernate .isInitialized ( n2 .getElements () ), "'n2.elements' should not be initialize" );
7783 return s .fetch ( n1 .getElements () )
7884 .thenAccept ( elements -> {
79- context . assertTrue ( Hibernate .isInitialized ( elements ), "'elements' after fetch should not be initialize" );
80- context . assertTrue ( Hibernate .isInitialized ( n1 .getElements () ), "'n1.elements' after fetch should be initialize" );
81- context . assertTrue ( Hibernate .isInitialized ( n2 .getElements () ), "'n2.elements' after fetch should be initialize" );
85+ assertTrue ( Hibernate .isInitialized ( elements ), "'elements' after fetch should not be initialize" );
86+ assertTrue ( Hibernate .isInitialized ( n1 .getElements () ), "'n1.elements' after fetch should be initialize" );
87+ assertTrue ( Hibernate .isInitialized ( n2 .getElements () ), "'n2.elements' after fetch should be initialize" );
8288 } );
8389 } )
8490 )
8591 .thenCompose ( v -> openSession () )
8692 .thenCompose ( s -> s .createQuery ( "from Element e order by id" , Element .class )
8793 .getResultList ()
8894 .thenCompose ( list -> {
89- context . assertEquals ( list .size (), 5 );
90- list .forEach ( element -> context . assertFalse ( Hibernate .isInitialized ( element .node ) ) );
91- list .forEach ( element -> context . assertEquals ( s .getLockMode ( element .node ), LockMode .NONE ) );
95+ assertEquals ( list .size (), 5 );
96+ list .forEach ( element -> assertFalse ( Hibernate .isInitialized ( element .node ) ) );
97+ list .forEach ( element -> assertEquals ( s .getLockMode ( element .node ), LockMode .NONE ) );
9298 return s .fetch ( list .get ( 0 ).node )
9399 .thenAccept ( node -> {
94- context . assertTrue ( Hibernate .isInitialized ( node ) );
100+ assertTrue ( Hibernate .isInitialized ( node ) );
95101 //TODO: I would like to assert that they're all initialized
96102 // but apparently it doesn't set the proxies to init'd
97103 // so check the LockMode as a workaround
98- list .forEach ( element -> context . assertEquals (
104+ list .forEach ( element -> assertEquals (
99105 s .getLockMode ( element .node ),
100106 LockMode .READ
101107 ) );
@@ -106,7 +112,7 @@ public void testQuery(TestContext context) {
106112 }
107113
108114 @ Test
109- public void testBatchLoad (TestContext context ) {
115+ public void testBatchLoad (VertxTestContext context ) {
110116 Node basik = new Node ( "Child" );
111117 basik .parent = new Node ( "Parent" );
112118 basik .elements .add ( new Element ( basik ) );
@@ -120,19 +126,19 @@ public void testBatchLoad(TestContext context) {
120126 .thenCompose ( v -> openSession () )
121127 .thenCompose ( s -> s .find ( Element .class , basik .elements .get ( 1 ).id , basik .elements .get ( 2 ).id , basik .elements .get ( 0 ).id ) )
122128 .thenAccept ( elements -> {
123- context . assertFalse ( elements .isEmpty () );
124- context . assertEquals ( 3 , elements .size () );
125- context . assertEquals ( basik .elements .get ( 1 ).id , elements .get ( 0 ).id );
126- context . assertEquals ( basik .elements .get ( 2 ).id , elements .get ( 1 ).id );
127- context . assertEquals ( basik .elements .get ( 0 ).id , elements .get ( 2 ).id );
129+ assertFalse ( elements .isEmpty () );
130+ assertEquals ( 3 , elements .size () );
131+ assertEquals ( basik .elements .get ( 1 ).id , elements .get ( 0 ).id );
132+ assertEquals ( basik .elements .get ( 2 ).id , elements .get ( 1 ).id );
133+ assertEquals ( basik .elements .get ( 0 ).id , elements .get ( 2 ).id );
128134 } )
129135 );
130136 }
131137
132138 // If it's only one collection a different method is called
133139 // See ReactivePaddedBatchingCollectionInitializer#reactiveInitialize
134140 @ Test
135- public void testWithCollection (TestContext context ) {
141+ public void testWithCollection (VertxTestContext context ) {
136142 Node node = new Node ( "Child" );
137143 node .elements .add ( new Element ( node ) );
138144 node .elements .add ( new Element ( node ) );
@@ -145,12 +151,12 @@ public void testWithCollection(TestContext context) {
145151 .createQuery ( "from Node n order by id" , Node .class )
146152 .getResultList ()
147153 .thenCompose ( list -> {
148- context . assertEquals ( list .size (), 1 );
154+ assertEquals ( list .size (), 1 );
149155 Node n1 = list .get ( 0 );
150- context . assertFalse ( Hibernate .isInitialized ( n1 .elements ) );
156+ assertFalse ( Hibernate .isInitialized ( n1 .elements ) );
151157 return s .fetch ( n1 .elements ).thenAccept ( elements -> {
152- context . assertTrue ( Hibernate .isInitialized ( elements ) );
153- context . assertTrue ( Hibernate .isInitialized ( n1 .elements ) );
158+ assertTrue ( Hibernate .isInitialized ( elements ) );
159+ assertTrue ( Hibernate .isInitialized ( n1 .elements ) );
154160 } );
155161 } )
156162 )
0 commit comments