/// <summary> Stops tracking the activity and emits a telemetry event. </summary> public void Dispose() { _stopwatch.Stop(); if (NuGetTelemetryService != null && TelemetryEvent != null) { var endTime = DateTime.UtcNow; TelemetryEvent["StartTime"] = _startTime.ToString("O"); TelemetryEvent["EndTime"] = endTime.ToString("O"); TelemetryEvent["Duration"] = _stopwatch.Elapsed.TotalSeconds; if (ParentId != Guid.Empty) { TelemetryEvent[nameof(ParentId)] = ParentId.ToString(); } if (OperationId != Guid.Empty) { TelemetryEvent[nameof(OperationId)] = OperationId.ToString(); } foreach (var interval in _intervalList) { TelemetryEvent[interval.Item1] = interval.Item2.TotalSeconds; } NuGetTelemetryService.EmitTelemetryEvent(TelemetryEvent); } _telemetryActivity?.Dispose(); }
public async Task GivenTagKeys_WhenGettingExtentendedQueryTags_ThenShouldPassArguments() { Guid operationId = Guid.NewGuid(); var expectedOutput = new List <ExtendedQueryTagStoreEntry> { new ExtendedQueryTagStoreEntry(1, "01010101", "AS", null, QueryTagLevel.Instance, ExtendedQueryTagStatus.Adding, QueryStatus.Enabled, 0) }; // Arrange input IDurableActivityContext context = Substitute.For <IDurableActivityContext>(); context.InstanceId.Returns(OperationId.ToString(operationId)); _extendedQueryTagStore .GetExtendedQueryTagsAsync(operationId, CancellationToken.None) .Returns(expectedOutput); // Call the activity IReadOnlyList <ExtendedQueryTagStoreEntry> actual = await _reindexDurableFunction.GetQueryTagsAsync( context, NullLogger.Instance); // Assert behavior Assert.Same(expectedOutput, actual); await _extendedQueryTagStore .Received(1) .GetExtendedQueryTagsAsync(operationId, CancellationToken.None); }
/// <inheritdoc/> public async Task <Guid> StartReindexingInstancesAsync(IReadOnlyCollection <int> tagKeys, CancellationToken cancellationToken = default) { EnsureArg.IsNotNull(tagKeys, nameof(tagKeys)); EnsureArg.HasItems(tagKeys, nameof(tagKeys)); // Start the re-indexing orchestration Guid instanceGuid = _guidFactory.Create(); // TODO: Pass token when supported string instanceId = await _durableClient.StartNewAsync( FunctionNames.ReindexInstances, OperationId.ToString(instanceGuid), new ReindexInput { QueryTagKeys = tagKeys }); _logger.LogInformation("Successfully started new orchestration instance with ID '{InstanceId}'.", instanceId); // Associate the tags to the operation and confirm their processing IReadOnlyList <ExtendedQueryTagStoreEntry> confirmedTags = await _extendedQueryTagStore.AssignReindexingOperationAsync( tagKeys, instanceGuid, returnIfCompleted : true, cancellationToken : cancellationToken); return(confirmedTags.Count > 0 ? instanceGuid : throw new ExtendedQueryTagsAlreadyExistsException()); }
protected override AddRequest CreateNewThis() { AddRequest ar = base.CreateNewThis(); ar.Attributes.Add(CreateAttribute(OPERATIONID, OperationId.ToString())); return(ar); }
public void GivenInstanceId_WhenFetchingAsGuid_ThenReturnParsedValue() { Guid expected = Guid.NewGuid(); IDurableActivityContext context = Substitute.For <IDurableActivityContext>(); context.InstanceId.Returns(OperationId.ToString(expected)); Assert.Equal(expected, context.GetInstanceGuid()); }
public override DirectoryRequest[] GetUpdate() { var result = base.GetUpdate(); ModifyRequest mr = (ModifyRequest)result[result.Length - 1]; SetAttribute(mr.Modifications, OPERATIONID, OperationId.ToString()); Changes.Clear(); return(result); }
/// <inheritdoc /> public Uri ResolveOperationStatusUri(Guid operationId) { var hasVersion = _httpContextAccessor.HttpContext.Request.RouteValues.ContainsKey("version"); return(RouteUri( hasVersion ? KnownRouteNames.VersionedOperationStatus : KnownRouteNames.OperationStatus, new RouteValueDictionary { { KnownActionParameterNames.OperationId, OperationId.ToString(operationId) }, })); }
protected override void ProcessRecordCore() { var startTime = DateTimeOffset.Now; // start timer for telemetry event TelemetryServiceUtility.StartOrResumeTimer(); // Run Preprocess outside of JTF Preprocess(); NuGetUIThreadHelper.JoinableTaskFactory.Run(async() => { await _lockService.ExecuteNuGetOperationAsync(() => { SubscribeToProgressEvents(); WarnIfParametersAreNotSupported(); if (!_readFromPackagesConfig && !_readFromDirectPackagePath && _nugetVersion == null) { Task.Run(InstallPackageByIdAsync); } else { var identities = GetPackageIdentities(); Task.Run(() => InstallPackagesAsync(identities)); } WaitAndLogPackageActions(); UnsubscribeFromProgressEvents(); return(Task.FromResult(true)); }, Token); }); // stop timer for telemetry event and create action telemetry event instance TelemetryServiceUtility.StopTimer(); var isPackageSourceMappingEnabled = PackageSourceMappingUtility.IsMappingEnabled(ConfigSettings); var actionTelemetryEvent = VSTelemetryServiceUtility.GetActionTelemetryEvent( OperationId.ToString(), new[] { Project }, NuGetOperationType.Install, OperationSource.PMC, startTime, _status, _packageCount, TelemetryServiceUtility.GetTimerElapsedTimeInSeconds(), isPackageSourceMappingEnabled: isPackageSourceMappingEnabled); // emit telemetry event along with granular level events TelemetryActivity.EmitTelemetryEvent(actionTelemetryEvent); }
public void GivenOperationId_WhenRetrieveOperationStatusUriIsResolved_ThenCorrectUrlShouldBeReturned() { Guid operationId = Guid.NewGuid(); _urlResolver.ResolveOperationStatusUri(operationId); ValidateUrlRouteContext( KnownRouteNames.OperationStatus, routeValues => { Assert.Equal(OperationId.ToString(operationId), routeValues[KnownActionParameterNames.OperationId]); }); }
public async Task GivenNotFound_WhenGettingStatus_ThenReturnNull() { Guid id = Guid.NewGuid(); using var source = new CancellationTokenSource(); _durableClient.GetStatusAsync(OperationId.ToString(id), showInput: true).Returns(Task.FromResult <DurableOrchestrationStatus>(null)); Assert.Null(await _client.GetStatusAsync(id, source.Token)); await _durableClient.Received(1).GetStatusAsync(OperationId.ToString(id), showInput: true); await _extendedQueryTagStore.DidNotReceiveWithAnyArgs().GetExtendedQueryTagsAsync((IReadOnlyList <int>) default);
protected override void ProcessRecordCore() { var startTime = DateTimeOffset.Now; // start timer for telemetry event TelemetryServiceUtility.StartOrResumeTimer(); // Run Preprocess outside of JTF Preprocess(); NuGetUIThreadHelper.JoinableTaskFactory.Run(async() => { await _lockService.ExecuteNuGetOperationAsync(() => { SubscribeToProgressEvents(); WarnIfParametersAreNotSupported(); // Update-Package without ID specified if (!_idSpecified) { Task.Run(UpdateOrReinstallAllPackagesAsync); } // Update-Package with Id specified else { Task.Run(UpdateOrReinstallSinglePackageAsync); } WaitAndLogPackageActions(); UnsubscribeFromProgressEvents(); return(Task.FromResult(true)); }, Token); }); // stop timer for telemetry event and create action telemetry event instance TelemetryServiceUtility.StopTimer(); var actionTelemetryEvent = VSTelemetryServiceUtility.GetActionTelemetryEvent( OperationId.ToString(), new[] { Project }, NuGetOperationType.Update, OperationSource.PMC, startTime, _status, _packageCount, TelemetryServiceUtility.GetTimerElapsedTimeInSeconds()); // emit telemetry event along with granular level events TelemetryActivity.EmitTelemetryEvent(actionTelemetryEvent); }
private Dictionary <string, string> GetDataInternal() { var allData = new Dictionary <string, string> { { "OperationId", OperationId.ToString() } }; foreach (var clientSideDataEntry in clientSideData) { allData[clientSideDataEntry.Key] = clientSideDataEntry.Value; } return(allData); }
public override string ToString() { StringBuilder sb = new StringBuilder("TOperationHandle("); sb.Append("OperationId: "); sb.Append(OperationId == null ? "<null>" : OperationId.ToString()); sb.Append(",OperationType: "); sb.Append(OperationType); sb.Append(",HasResultSet: "); sb.Append(HasResultSet); sb.Append(",ModifiedRowCount: "); sb.Append(ModifiedRowCount); sb.Append(")"); return(sb.ToString()); }
protected override void ProcessRecordCore() { var startTime = DateTimeOffset.Now; _packageCount = 1; var stopWatch = Stopwatch.StartNew(); // Run Preprocess outside of JTF Preprocess(); NuGetUIThreadHelper.JoinableTaskFactory.Run(async() => { await _lockService.ExecuteNuGetOperationAsync(() => { SubscribeToProgressEvents(); Task.Run(UninstallPackageAsync); WaitAndLogPackageActions(); UnsubscribeFromProgressEvents(); return(Task.FromResult(true)); }, Token); }); stopWatch.Stop(); var isPackageSourceMappingEnabled = PackageSourceMappingUtility.IsMappingEnabled(ConfigSettings); var actionTelemetryEvent = VSTelemetryServiceUtility.GetActionTelemetryEvent( OperationId.ToString(), new[] { Project }, NuGetOperationType.Uninstall, OperationSource.PMC, startTime, _status, _packageCount, stopWatch.Elapsed.TotalSeconds, isPackageSourceMappingEnabled: isPackageSourceMappingEnabled); // emit telemetry event along with granular level events TelemetryActivity.EmitTelemetryEvent(actionTelemetryEvent); }
/// <inheritdoc/> public async Task <OperationStatus> GetStatusAsync(Guid operationId, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); // TODO: Pass token when supported DurableOrchestrationStatus status = await _durableClient.GetStatusAsync(OperationId.ToString(operationId), showInput : true); if (status == null) { return(null); } _logger.LogInformation( "Successfully found the status of orchestration instance '{InstanceId}' with name '{Name}'.", status.InstanceId, status.Name); OperationType type = status.GetOperationType(); if (type == OperationType.Unknown) { _logger.LogWarning("Orchestration instance with '{Name}' did not resolve to a public operation type.", status.Name); return(null); } OperationRuntimeStatus runtimeStatus = status.GetOperationRuntimeStatus(); OperationProgress progress = GetOperationProgress(type, status); return(new OperationStatus { CreatedTime = status.CreatedTime, LastUpdatedTime = status.LastUpdatedTime, OperationId = operationId, PercentComplete = runtimeStatus == OperationRuntimeStatus.Completed ? 100 : progress.PercentComplete, Resources = await GetResourceUrlsAsync(type, progress.ResourceIds, cancellationToken), Status = runtimeStatus, Type = type, }); }
public Uri ResolveOperationStatusUri(Guid operationId) { return(new Uri("/" + OperationId.ToString(operationId), UriKind.Relative)); }
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { var artId = 0; Operation = comboBox1.Text; if (comboBox1.SelectedIndex == 0) { OperationId = 313; } else if (comboBox1.SelectedIndex == 1) { OperationId = 314; } var artQuery = "select id from Articole where articol='" + Article + "' and idsector=2"; using (var c = new SqlConnection(Central.ConnStr)) { var cmd = new SqlCommand(artQuery, c); c.Open(); var dr = cmd.ExecuteReader(); if (dr.HasRows) { while (dr.Read()) { int.TryParse(dr[0].ToString(), out artId); } } c.Close(); } var operatQuery = "select BucatiOra from OperatiiArticol where idOperatie='" + OperationId.ToString() + "' and IdSector=2" + " and idarticol='" + artId + "'"; using (var c = new SqlConnection(Central.ConnStr)) { var cmd = new SqlCommand(operatQuery, c); c.Open(); var dr = cmd.ExecuteReader(); if (dr.HasRows) { while (dr.Read()) { double.TryParse(dr[0].ToString(), out var qtyh); QtyH = qtyh; } } c.Close(); } if (QtyH == 0.0) { MessageBox.Show("QtyH is not valid for " + Operation); lblQtyH.Text = "QtyH: 0.0"; } else { lblQtyH.Text = QtyH.ToString(); } }
public void GivenGuid_WhenFormattingAsOperationId_ThenReturnFormattedString() { Guid guid = Guid.NewGuid(); Assert.Equal(guid.ToString(OperationId.FormatSpecifier), OperationId.ToString(guid)); }