Ejemplo n.º 1
0
        /// <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();
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 9
0
        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);
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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,
            });
        }
Ejemplo n.º 16
0
 public Uri ResolveOperationStatusUri(Guid operationId)
 {
     return(new Uri("/" + OperationId.ToString(operationId), UriKind.Relative));
 }
Ejemplo n.º 17
0
        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();
            }
        }
Ejemplo n.º 18
0
        public void GivenGuid_WhenFormattingAsOperationId_ThenReturnFormattedString()
        {
            Guid guid = Guid.NewGuid();

            Assert.Equal(guid.ToString(OperationId.FormatSpecifier), OperationId.ToString(guid));
        }