9
9
import java .util .Collection ;
10
10
import java .util .List ;
11
11
import 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 ;
12
25
import jakarta .persistence .CascadeType ;
13
26
import jakarta .persistence .Entity ;
14
27
import jakarta .persistence .FetchType ;
27
40
import jakarta .persistence .Transient ;
28
41
import jakarta .persistence .Version ;
29
42
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 ;
40
46
47
+ @ Timeout ( value = 5 , timeUnit = TimeUnit .MINUTES ) // DB2 seems to take longer than other DB's
41
48
public class BatchFetchTest extends BaseReactiveTest {
42
49
43
50
@ Override
44
51
protected Collection <Class <?>> annotatedEntities () {
45
- return List .of ( Node .class , Element .class );
52
+ return List .of ( Element .class , Node .class );
46
53
}
47
54
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 ();
53
59
}
54
60
55
61
@ 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 ) {
58
64
Node basik = new Node ( "Child" );
59
65
basik .parent = new Node ( "Parent" );
60
66
basik .elements .add ( new Element ( basik ) );
@@ -69,33 +75,33 @@ public void testQuery(TestContext context) {
69
75
.thenCompose ( s -> s .createQuery ( "from Node n order by id" , Node .class )
70
76
.getResultList ()
71
77
.thenCompose ( list -> {
72
- context . assertEquals ( list .size (), 2 );
78
+ assertEquals ( list .size (), 2 );
73
79
Node n1 = list .get ( 0 );
74
80
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" );
77
83
return s .fetch ( n1 .getElements () )
78
84
.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" );
82
88
} );
83
89
} )
84
90
)
85
91
.thenCompose ( v -> openSession () )
86
92
.thenCompose ( s -> s .createQuery ( "from Element e order by id" , Element .class )
87
93
.getResultList ()
88
94
.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 ) );
92
98
return s .fetch ( list .get ( 0 ).node )
93
99
.thenAccept ( node -> {
94
- context . assertTrue ( Hibernate .isInitialized ( node ) );
100
+ assertTrue ( Hibernate .isInitialized ( node ) );
95
101
//TODO: I would like to assert that they're all initialized
96
102
// but apparently it doesn't set the proxies to init'd
97
103
// so check the LockMode as a workaround
98
- list .forEach ( element -> context . assertEquals (
104
+ list .forEach ( element -> assertEquals (
99
105
s .getLockMode ( element .node ),
100
106
LockMode .READ
101
107
) );
@@ -106,7 +112,7 @@ public void testQuery(TestContext context) {
106
112
}
107
113
108
114
@ Test
109
- public void testBatchLoad (TestContext context ) {
115
+ public void testBatchLoad (VertxTestContext context ) {
110
116
Node basik = new Node ( "Child" );
111
117
basik .parent = new Node ( "Parent" );
112
118
basik .elements .add ( new Element ( basik ) );
@@ -120,19 +126,19 @@ public void testBatchLoad(TestContext context) {
120
126
.thenCompose ( v -> openSession () )
121
127
.thenCompose ( s -> s .find ( Element .class , basik .elements .get ( 1 ).id , basik .elements .get ( 2 ).id , basik .elements .get ( 0 ).id ) )
122
128
.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 );
128
134
} )
129
135
);
130
136
}
131
137
132
138
// If it's only one collection a different method is called
133
139
// See ReactivePaddedBatchingCollectionInitializer#reactiveInitialize
134
140
@ Test
135
- public void testWithCollection (TestContext context ) {
141
+ public void testWithCollection (VertxTestContext context ) {
136
142
Node node = new Node ( "Child" );
137
143
node .elements .add ( new Element ( node ) );
138
144
node .elements .add ( new Element ( node ) );
@@ -145,12 +151,12 @@ public void testWithCollection(TestContext context) {
145
151
.createQuery ( "from Node n order by id" , Node .class )
146
152
.getResultList ()
147
153
.thenCompose ( list -> {
148
- context . assertEquals ( list .size (), 1 );
154
+ assertEquals ( list .size (), 1 );
149
155
Node n1 = list .get ( 0 );
150
- context . assertFalse ( Hibernate .isInitialized ( n1 .elements ) );
156
+ assertFalse ( Hibernate .isInitialized ( n1 .elements ) );
151
157
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 ) );
154
160
} );
155
161
} )
156
162
)
0 commit comments