public AsyncServerStreamingCall <SimpleResponse> ServerStreamingMethodSync(SimpleRequest request, CallSettings callSettings) { CallTimes.Add(_scheduler.Clock.GetCurrentDateTimeUtc()); CallSettingsReceived.Add(callSettings); var responseStream = new AsyncStreamReader <SimpleResponse>(new SimpleResponse { Name = request.Name }); var responseHeaders = Task.Run(async() => { await _scheduler.Delay(_callDuration, callSettings.CancellationToken.GetValueOrDefault()); if (_failuresToReturn > 0) { _failuresToReturn--; throw new RpcException(new Status(_failureCode, "Bang")); } return(Metadata.Empty); }); var response = new AsyncServerStreamingCall <SimpleResponse>(responseStream, responseHeaders, null, null, null); return(response); }
public void AssertDeadlines(params DateTime[] times) { // Note that this effectively asserts we always end up with a CallSettings with a deadline. Assert.Equal(times, CallSettingsReceived.Select(cs => cs.Timing.Expiration.Deadline.Value).ToArray()); }