11using System ;
2- using System . Collections . Concurrent ;
32using System . Collections . Generic ;
43using System . Threading . Tasks ;
54using Elastic . Elasticsearch . Xunit . XunitPlumbing ;
@@ -17,6 +16,7 @@ namespace Tests.XPack.AsyncSearch
1716 public class AsyncSearchApiTests : CoordinatedIntegrationTestBase < ReadOnlyCluster >
1817 {
1918 private const string SubmitStep = nameof ( SubmitStep ) ;
19+ private const string StatusStep = nameof ( StatusStep ) ;
2020 private const string GetStep = nameof ( GetStep ) ;
2121 private const string DeleteStep = nameof ( DeleteStep ) ;
2222
@@ -71,6 +71,17 @@ public AsyncSearchApiTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(
7171 onResponse : ( r , values ) => values . ExtendedValue ( "id" , r . Id )
7272 )
7373 } ,
74+ { StatusStep , ">=7.11.0" , u =>
75+ u . Calls < AsyncSearchStatusDescriptor , AsyncSearchStatusRequest , IAsyncSearchStatusRequest , AsyncSearchStatusResponse > (
76+ v => new AsyncSearchStatusRequest ( v ) ,
77+ ( v , d ) => d ,
78+ ( v , c , f ) => c . AsyncSearch . Status ( v , f ) ,
79+ ( v , c , f ) => c . AsyncSearch . StatusAsync ( v , f ) ,
80+ ( v , c , r ) => c . AsyncSearch . Status ( r ) ,
81+ ( v , c , r ) => c . AsyncSearch . StatusAsync ( r ) ,
82+ uniqueValueSelector : values => values . ExtendedValue < string > ( "id" )
83+ )
84+ } ,
7485 { GetStep , u =>
7586 u . Calls < AsyncSearchGetDescriptor , AsyncSearchGetRequest , IAsyncSearchGetRequest , AsyncSearchGetResponse < Project > > (
7687 v => new AsyncSearchGetRequest ( v ) ,
@@ -95,27 +106,39 @@ public AsyncSearchApiTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(
95106 } ,
96107 } ) { }
97108
98- [ I ] public async Task AsyncSearchSubmitResponse ( ) => await Assert < AsyncSearchSubmitResponse < Project > > ( SubmitStep , ( v , r ) =>
109+ [ I ] public async Task AsyncSearchSubmitResponse ( ) => await Assert < AsyncSearchSubmitResponse < Project > > ( SubmitStep , r =>
99110 {
100111 r . ShouldBeValid ( ) ;
101112 r . Response . Should ( ) . NotBeNull ( ) ;
102113 r . Response . Took . Should ( ) . BeGreaterOrEqualTo ( 0 ) ;
103114 } ) ;
115+
116+ [ I ] public async Task AsyncSearchStatusResponse ( ) => await Assert < AsyncSearchStatusResponse > ( StatusStep , r =>
117+ {
118+ r . ShouldBeValid ( ) ;
119+ r . StartTime . Should ( ) . BeOnOrBefore ( DateTimeOffset . Now ) ;
120+ r . ExpirationTime . Should ( ) . BeOnOrAfter ( DateTimeOffset . Now ) ;
121+
122+ if ( r . IsRunning )
123+ r . CompletionStatus . HasValue . Should ( ) . BeFalse ( ) ;
124+ else
125+ r . CompletionStatus ? . Should ( ) . Be ( 200 ) ;
126+ } ) ;
104127
105- [ I ] public async Task AsyncSearchGetResponse ( ) => await Assert < AsyncSearchGetResponse < Project > > ( GetStep , ( v , r ) =>
128+ [ I ] public async Task AsyncSearchGetResponse ( ) => await Assert < AsyncSearchGetResponse < Project > > ( GetStep , r =>
106129 {
107130 r . ShouldBeValid ( ) ;
108131 r . Id . Should ( ) . NotBeNullOrEmpty ( ) ;
109132 r . StartTime . Should ( ) . BeOnOrBefore ( DateTimeOffset . Now ) ;
110- r . ExpirationTime . Should ( ) . BeOnOrBefore ( DateTimeOffset . Now ) ;
133+ r . ExpirationTime . Should ( ) . BeOnOrAfter ( DateTimeOffset . Now ) ;
111134 r . Response . Should ( ) . NotBeNull ( ) ;
112135 r . Response . Took . Should ( ) . BeGreaterOrEqualTo ( 0 ) ;
113136 r . Response . Hits . Should ( ) . HaveCount ( 10 ) ;
114137 var terms = r . Response . Aggregations . Terms ( "states" ) ;
115138 terms . Should ( ) . NotBeNull ( ) ;
116139 } ) ;
117140
118- [ I ] public async Task AsyncSearchDeleteResponse ( ) => await Assert < AsyncSearchDeleteResponse > ( DeleteStep , ( v , r ) =>
141+ [ I ] public async Task AsyncSearchDeleteResponse ( ) => await Assert < AsyncSearchDeleteResponse > ( DeleteStep , r =>
119142 {
120143 r . ShouldBeValid ( ) ;
121144 r . Acknowledged . Should ( ) . BeTrue ( ) ;
0 commit comments