public async Task <ChaosReport> GetChaosReportAsync( GetChaosReportDescription getChaosReportDescription, TimeSpan timeout, CancellationToken cancellationToken) { Guid activityId = Guid.NewGuid(); this.ThrowIfNotReady(() => this.ChaosMessageProcessor != null); TestabilityTrace.TraceSource.WriteNoise(TraceType, "{0}:Enter GetChaosReportAsync, description={1}", activityId, getChaosReportDescription.ToString()); ChaosReport report = null; try { ChaosReportFilter reportFilter = null; var continuationToken = getChaosReportDescription.ContinuationToken; if (!string.IsNullOrEmpty(continuationToken)) { reportFilter = await this.ChaosMessageProcessor.GetReportFilterAsync(activityId, continuationToken).ConfigureAwait(false); } else { var continuationTokenGuid = Guid.NewGuid().ToString(); var fileTimeUtcTicks = DateTime.UtcNow.ToFileTimeUtc(); continuationToken = string.Format(FASConstants.ChaosReportContinuationTokenFormat, fileTimeUtcTicks, continuationTokenGuid); } reportFilter = reportFilter ?? getChaosReportDescription.Filter; if (!string.IsNullOrEmpty(getChaosReportDescription.ClientType) && (getChaosReportDescription.ClientType.Equals(ChaosConstants.RestClientTypeName, StringComparison.OrdinalIgnoreCase) || getChaosReportDescription.ClientType.Equals(ChaosConstants.NativeClientTypeName, StringComparison.OrdinalIgnoreCase))) { ChaosUtility.DisableOptimizationForValidationFailedEvent = true; } else { ChaosUtility.DisableOptimizationForValidationFailedEvent = false; } report = await this.ChaosMessageProcessor.ProcessGetChaosReportAsync( activityId, reportFilter, continuationToken).ConfigureAwait(false); } catch (Exception e) { TestabilityTrace.TraceSource.WriteWarning(TraceType, "{0}:GetChaosReportAsync - Exception occurred: {1}", activityId, e.Message); FaultAnalysisServiceUtility.ThrowTransientExceptionIfRetryable(e); throw; } TestabilityTrace.TraceSource.WriteNoise(TraceType, "{0}:GetChaosReportAsync - returning report.", activityId); return(report); }
private Task <ChaosReport> GetChaosReportAsync( GetChaosReportDescription getChaosReportDescription, TimeSpan timeout, CancellationToken cancellationToken) { return(this.service.GetChaosReportAsync( getChaosReportDescription, timeout, cancellationToken)); }
public NativeCommon.IFabricAsyncOperationContext BeginGetChaosReport( IntPtr getChaosReportDescription, uint timeoutMilliseconds, NativeCommon.IFabricAsyncOperationCallback callback) { var managedGetChaosReportDescription = GetChaosReportDescription.CreateFromNative(getChaosReportDescription); var managedTimeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); return(Utility.WrapNativeAsyncMethodImplementation( (cancellationToken) => this.GetChaosReportAsync( managedGetChaosReportDescription, managedTimeout, cancellationToken), callback, "FaultAnalysisServiceBroker.GetChaosReportAsync", ThreadErrorMessageSetter)); }