public void ActionsTelemetryService_EmitActionEvent_OperationNoOp(NuGetOperationType operationType) { // Arrange var telemetrySession = new Mock <ITelemetrySession>(); TelemetryEvent lastTelemetryEvent = null; telemetrySession .Setup(x => x.PostEvent(It.IsAny <TelemetryEvent>())) .Callback <TelemetryEvent>(x => lastTelemetryEvent = x); string operationId = Guid.NewGuid().ToString(); var actionTelemetryData = new ActionsTelemetryEvent( operationId: operationId, projectIds: new[] { Guid.NewGuid().ToString() }, operationType: operationType, source: OperationSource.PMC, startTime: DateTimeOffset.Now.AddSeconds(-1), status: NuGetOperationStatus.NoOp, packageCount: 1, endTime: DateTimeOffset.Now, duration: .40); var service = new ActionsTelemetryService(telemetrySession.Object); // Act service.EmitActionEvent(actionTelemetryData, null); // Assert VerifyTelemetryEventData(actionTelemetryData, lastTelemetryEvent); }
public void EmitActionEvent(ActionsTelemetryEvent actionTelemetryData, IReadOnlyDictionary <string, double> detailedEvents) { if (actionTelemetryData == null) { throw new ArgumentNullException(nameof(actionTelemetryData)); } if (detailedEvents != null) { // emit granular level events for current operation foreach (var eventName in detailedEvents.Keys) { EmitActionStepsEvent(actionTelemetryData.OperationId, eventName, detailedEvents[eventName]); } } var telemetryEvent = new TelemetryEvent( TelemetryConstants.NugetActionEventName, new Dictionary <string, object> { { TelemetryConstants.OperationIdPropertyName, actionTelemetryData.OperationId }, { TelemetryConstants.ProjectIdsPropertyName, string.Join(",", actionTelemetryData.ProjectIds) }, { TelemetryConstants.OperationTypePropertyName, actionTelemetryData.OperationType }, { TelemetryConstants.OperationSourcePropertyName, actionTelemetryData.Source }, { TelemetryConstants.PackagesCountPropertyName, actionTelemetryData.PackagesCount }, { TelemetryConstants.OperationStatusPropertyName, actionTelemetryData.Status }, { TelemetryConstants.StartTimePropertyName, actionTelemetryData.StartTime.ToString() }, { TelemetryConstants.EndTimePropertyName, actionTelemetryData.EndTime.ToString() }, { TelemetryConstants.DurationPropertyName, actionTelemetryData.Duration }, { TelemetryConstants.ProjectsCountPropertyName, actionTelemetryData.ProjectsCount } } ); _telemetrySession.PostEvent(telemetryEvent); }
private void VerifyTelemetryEventData(ActionsTelemetryEvent expected, TelemetryEvent actual) { Assert.NotNull(actual); Assert.Equal(TelemetryConstants.NugetActionEventName, actual.Name); Assert.Equal(10, actual.Properties.Count); Assert.Equal(expected.OperationType.ToString(), actual.Properties[TelemetryConstants.OperationTypePropertyName].ToString()); Assert.Equal(expected.Source.ToString(), actual.Properties[TelemetryConstants.OperationSourcePropertyName].ToString()); TestTelemetryUtility.VerifyTelemetryEventData(expected, actual); }