6
6
7
7
using System . Collections . Generic ;
8
8
using System . Linq ;
9
+ using System . Threading . Tasks ;
9
10
using NUnit . Framework ;
10
11
using Xtensive . Core ;
11
12
using Xtensive . Orm . Configuration ;
@@ -16,10 +17,7 @@ namespace Xtensive.Orm.Tests.Storage.CommandProcessing
16
17
{
17
18
public class SimpleCommandProcessorParametersManagement : AutoBuildTest
18
19
{
19
- public int StorageLimit
20
- {
21
- get { return ProviderInfo . MaxQueryParameterCount ; }
22
- }
20
+ public int StorageLimit => ProviderInfo . MaxQueryParameterCount ;
23
21
24
22
protected override DomainConfiguration BuildConfiguration ( )
25
23
{
@@ -29,10 +27,7 @@ protected override DomainConfiguration BuildConfiguration()
29
27
return config ;
30
28
}
31
29
32
- protected override void CheckRequirements ( )
33
- {
34
- Require . AllFeaturesNotSupported ( ProviderFeatures . Batches ) ;
35
- }
30
+ protected override void CheckRequirements ( ) => Require . AllFeaturesNotSupported ( ProviderFeatures . Batches ) ;
36
31
37
32
protected override void PopulateData ( )
38
33
{
@@ -94,15 +89,65 @@ public void DelayedSelectsWithinLimitTest()
94
89
}
95
90
}
96
91
92
+ [ Test ]
93
+ public async Task DelayedSelectsWithinLimitAsyncTest ( )
94
+ {
95
+ RequireLimit ( ) ;
96
+
97
+ using ( var session = await Domain . OpenSessionAsync ( ) )
98
+ using ( var transaction = session . OpenTransaction ( ) ) {
99
+ var ids = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
100
+ var results = new List < IEnumerable < ALotOfFieldsEntityValid > > ( 10 ) ;
101
+
102
+ results . Add ( session . Query . ExecuteDelayed ( q =>
103
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) ) ) ;
104
+
105
+ results . Add ( session . Query . ExecuteDelayed ( q =>
106
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) ) ) ;
107
+
108
+ results . Add ( session . Query . ExecuteDelayed ( q =>
109
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) ) ) ;
110
+
111
+ results . Add ( session . Query . ExecuteDelayed ( q =>
112
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) ) ) ;
113
+
114
+ results . Add ( session . Query . ExecuteDelayed ( q =>
115
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) ) ) ;
116
+
117
+ results . Add ( session . Query . ExecuteDelayed ( q =>
118
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) ) ) ;
119
+
120
+ results . Add ( session . Query . ExecuteDelayed ( q =>
121
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) ) ) ;
122
+
123
+ results . Add ( session . Query . ExecuteDelayed ( q =>
124
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) ) ) ;
125
+
126
+ results . Add ( session . Query . ExecuteDelayed ( q =>
127
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) ) ) ;
128
+
129
+ results . Add ( session . Query . ExecuteDelayed ( q =>
130
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) ) ) ;
131
+
132
+ var inlineQuery = await session . Query . All < ALotOfFieldsEntityValid > ( )
133
+ . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , ids ) ) . AsAsync ( ) ;
134
+ Assert . That ( inlineQuery . Any ( ) , Is . True ) ;
135
+
136
+ foreach ( var result in results ) {
137
+ Assert . That ( result . Any ( ) , Is . True ) ;
138
+ }
139
+ }
140
+ }
141
+
97
142
[ Test ]
98
143
public void DelayedSelectsOutOfLimitTest01 ( )
99
144
{
100
145
RequireLimit ( ) ;
101
146
102
147
using ( var session = Domain . OpenSession ( ) )
103
148
using ( var transaction = session . OpenTransaction ( ) ) {
104
- var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( ) ;
105
- var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( ) ;
149
+ var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
150
+ var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( StorageLimit + 1 ) ;
106
151
107
152
var result = ( DelayedSequence < ALotOfFieldsEntityValid > ) session . Query . ExecuteDelayed ( q =>
108
153
q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , idsOutOfRange ) ) ) ;
@@ -112,15 +157,33 @@ public void DelayedSelectsOutOfLimitTest01()
112
157
}
113
158
}
114
159
160
+ [ Test ]
161
+ public async Task DelayedSelectsOutOfLimitAsyncTest01 ( )
162
+ {
163
+ RequireLimit ( ) ;
164
+
165
+ using ( var session = await Domain . OpenSessionAsync ( ) )
166
+ using ( var transaction = session . OpenTransaction ( ) ) {
167
+ var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
168
+ var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( StorageLimit + 1 ) ;
169
+
170
+ var result = ( DelayedSequence < ALotOfFieldsEntityValid > ) session . Query . ExecuteDelayed ( q =>
171
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , idsOutOfRange ) ) ) ;
172
+
173
+ _ = Assert . ThrowsAsync < ParametersLimitExceededException > ( async ( ) => await result . AsAsync ( ) ) ;
174
+ Assert . That ( result . Task . Result . Count , Is . EqualTo ( 0 ) ) ;
175
+ }
176
+ }
177
+
115
178
[ Test ]
116
179
public void DelayedSelectsOutOfLimitTest02 ( )
117
180
{
118
181
RequireLimit ( ) ;
119
182
120
183
using ( var session = Domain . OpenSession ( ) )
121
184
using ( var transaction = session . OpenTransaction ( ) ) {
122
- var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( ) ;
123
- var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( ) ;
185
+ var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
186
+ var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( StorageLimit + 1 ) ;
124
187
125
188
var result = ( DelayedSequence < ALotOfFieldsEntityValid > ) session . Query . ExecuteDelayed ( q =>
126
189
q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , idsOutOfRange ) ) ) ;
@@ -130,15 +193,33 @@ public void DelayedSelectsOutOfLimitTest02()
130
193
}
131
194
}
132
195
196
+ [ Test ]
197
+ public async Task DelayedSelectsOutOfLimitAsyncTest02 ( )
198
+ {
199
+ RequireLimit ( ) ;
200
+
201
+ using ( var session = await Domain . OpenSessionAsync ( ) )
202
+ using ( var transaction = session . OpenTransaction ( ) ) {
203
+ var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
204
+ var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( StorageLimit + 1 ) ;
205
+
206
+ var result = ( DelayedSequence < ALotOfFieldsEntityValid > ) session . Query . ExecuteDelayed ( q =>
207
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , idsOutOfRange ) ) ) ;
208
+
209
+ _ = Assert . ThrowsAsync < ParametersLimitExceededException > ( async ( ) => ( await session . Query . All < ALotOfFieldsEntityValid > ( ) . AsAsync ( ) ) . Run ( ) ) ;
210
+ Assert . That ( result . Task . Result . Count , Is . EqualTo ( 0 ) ) ;
211
+ }
212
+ }
213
+
133
214
[ Test ]
134
215
public void DelayedSelectsOutOfLimitTest03 ( )
135
216
{
136
217
RequireLimit ( ) ;
137
218
138
219
using ( var session = Domain . OpenSession ( ) )
139
220
using ( var transaction = session . OpenTransaction ( ) ) {
140
- var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( ) ;
141
- var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( ) ;
221
+ var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
222
+ var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( StorageLimit + 1 ) ;
142
223
143
224
var result = ( DelayedSequence < ALotOfFieldsEntityValid > ) session . Query . ExecuteDelayed ( q =>
144
225
q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , fittedIds ) ) ) ;
@@ -151,15 +232,36 @@ public void DelayedSelectsOutOfLimitTest03()
151
232
}
152
233
}
153
234
235
+ [ Test ]
236
+ public async Task DelayedSelectsOutOfLimitAsyncTest03 ( )
237
+ {
238
+ RequireLimit ( ) ;
239
+
240
+ using ( var session = await Domain . OpenSessionAsync ( ) )
241
+ using ( var transaction = session . OpenTransaction ( ) ) {
242
+ var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
243
+ var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( StorageLimit + 1 ) ;
244
+
245
+ var result = ( DelayedSequence < ALotOfFieldsEntityValid > ) session . Query . ExecuteDelayed ( q =>
246
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , fittedIds ) ) ) ;
247
+
248
+ _ = session . Query . ExecuteDelayed ( q =>
249
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , idsOutOfRange ) ) ) ;
250
+
251
+ _ = Assert . ThrowsAsync < ParametersLimitExceededException > ( async ( ) => ( await session . Query . All < ALotOfFieldsEntityValid > ( ) . AsAsync ( ) ) . Run ( ) ) ;
252
+ Assert . That ( result . Any ( ) , Is . True ) ;
253
+ }
254
+ }
255
+
154
256
[ Test ]
155
257
public void DelayedSelectsOutOfLimitTest04 ( )
156
258
{
157
259
RequireLimit ( ) ;
158
260
159
261
using ( var session = Domain . OpenSession ( ) )
160
262
using ( var transaction = session . OpenTransaction ( ) ) {
161
- var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( ) ;
162
- var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( ) ;
263
+ var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
264
+ var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( StorageLimit + 1 ) ;
163
265
164
266
var result = ( DelayedSequence < ALotOfFieldsEntityValid > ) session . Query . ExecuteDelayed ( q =>
165
267
q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , idsOutOfRange ) ) ) ;
@@ -172,15 +274,36 @@ public void DelayedSelectsOutOfLimitTest04()
172
274
}
173
275
}
174
276
277
+ [ Test ]
278
+ public async Task DelayedSelectsOutOfLimitAsyncTest04 ( )
279
+ {
280
+ RequireLimit ( ) ;
281
+
282
+ using ( var session = await Domain . OpenSessionAsync ( ) )
283
+ using ( var transaction = session . OpenTransaction ( ) ) {
284
+ var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
285
+ var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( StorageLimit + 1 ) ;
286
+
287
+ var result = ( DelayedSequence < ALotOfFieldsEntityValid > ) session . Query . ExecuteDelayed ( q =>
288
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , idsOutOfRange ) ) ) ;
289
+
290
+ _ = session . Query . ExecuteDelayed ( q =>
291
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , fittedIds ) ) ) ;
292
+
293
+ _ = Assert . ThrowsAsync < ParametersLimitExceededException > ( async ( ) => ( await session . Query . All < ALotOfFieldsEntityValid > ( ) . AsAsync ( ) ) . Run ( ) ) ;
294
+ Assert . That ( result . Any ( ) , Is . False ) ;
295
+ }
296
+ }
297
+
175
298
[ Test ]
176
299
public void DelayedSelectsOutOfLimitTest05 ( )
177
300
{
178
301
RequireLimit ( ) ;
179
302
180
303
using ( var session = Domain . OpenSession ( ) )
181
304
using ( var transaction = session . OpenTransaction ( ) ) {
182
- var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( ) ;
183
- var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( ) ;
305
+ var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
306
+ var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( StorageLimit + 1 ) ;
184
307
185
308
var result1 = ( DelayedSequence < ALotOfFieldsEntityValid > ) session . Query . ExecuteDelayed ( q =>
186
309
q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , fittedIds ) ) ) ;
@@ -196,6 +319,30 @@ public void DelayedSelectsOutOfLimitTest05()
196
319
}
197
320
}
198
321
322
+ [ Test ]
323
+ public async Task DelayedSelectsOutOfLimitAsyncTest05 ( )
324
+ {
325
+ RequireLimit ( ) ;
326
+
327
+ using ( var session = await Domain . OpenSessionAsync ( ) )
328
+ using ( var transaction = session . OpenTransaction ( ) ) {
329
+ var fittedIds = Enumerable . Range ( 1 , StorageLimit - 1 ) . ToArray ( StorageLimit - 1 ) ;
330
+ var idsOutOfRange = Enumerable . Range ( 1 , StorageLimit + 1 ) . ToArray ( StorageLimit + 1 ) ;
331
+
332
+ var result1 = ( DelayedSequence < ALotOfFieldsEntityValid > ) session . Query . ExecuteDelayed ( q =>
333
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , fittedIds ) ) ) ;
334
+
335
+ var result2 = session . Query . ExecuteDelayed ( q =>
336
+ q . All < ALotOfFieldsEntityValid > ( ) . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , fittedIds ) ) ) ;
337
+
338
+ _ = Assert . ThrowsAsync < ParametersLimitExceededException > (
339
+ async ( ) => ( await session . Query . All < ALotOfFieldsEntityValid > ( )
340
+ . Where ( e => e . Id . In ( IncludeAlgorithm . ComplexCondition , idsOutOfRange ) ) . AsAsync ( ) ) . Run ( ) ) ;
341
+ Assert . That ( result1 . Any ( ) , Is . True ) ;
342
+ Assert . That ( result2 . Any ( ) , Is . True ) ;
343
+ }
344
+ }
345
+
199
346
[ Test ]
200
347
public void InsertTest01 ( )
201
348
{
0 commit comments