public async Task InternalMessageCapturesProperties() { var deviceListenerCapture = new DeviceListenerCapture(); var publishInfo = new MqttPublishInfo("$edgehub/device_id/messages/events/prop1=val1&prop2=val2", new byte[] { 0x01, 0x02, 0x03 }); var(connectionRegistry, identityProvider) = GetHandlerDependencies(listenerCapture: deviceListenerCapture); var sut = new TelemetryHandler(connectionRegistry, identityProvider); var isHandled = await sut.HandleAsync(publishInfo); Assert.True(isHandled); Assert.NotNull(deviceListenerCapture.Captured); Assert.NotNull(deviceListenerCapture.Captured.LastCapturedMessage); var capturedMessage = deviceListenerCapture.Captured.LastCapturedMessage; var expectedProperties = new Dictionary <string, string>() { ["prop1"] = "val1", ["prop2"] = "val2", }; Assert.Equal(expectedProperties, capturedMessage.Properties); }
public async Task CapturesModuleIdentityFromTopic() { var publishInfo = new MqttPublishInfo("$edgehub/captured_device_id/captured_module_id/messages/events/prop1=val1&prop2=val2", new byte[0]); var(connectionRegistry, _) = GetHandlerDependencies(); var identityProvider = Mock.Of <IIdentityProvider>(); string passedDeviceId = null, passedModuleId = null; Mock.Get(identityProvider) .Setup(ip => ip.Create(It.IsAny <string>(), It.IsAny <string>())) .Returns((string device_id, string module_id) => { passedDeviceId = device_id; passedModuleId = module_id; return(new ModuleIdentity("host", device_id, module_id)); }); var sut = new TelemetryHandler(connectionRegistry, identityProvider); _ = await sut.HandleAsync(publishInfo); Assert.Equal("captured_device_id", passedDeviceId); Assert.Equal("captured_module_id", passedModuleId); }
public async Task HandlesTelemetryTopics(string topic) { var publishInfo = new MqttPublishInfo(topic, new byte[0]); var(connectionRegistry, identityProvider) = GetHandlerDependencies(); var sut = new TelemetryHandler(connectionRegistry, identityProvider); var isHandled = await sut.HandleAsync(publishInfo); Assert.True(isHandled); }
public async Task DoesNotHandleUnknownClient() { var publishInfo = new MqttPublishInfo("$edgehub/device_id/messages/events/prop1=val1&prop2=val2", new byte[0]); var(connectionRegistry, identityProvider) = GetHandlerDependencies(shouldFindProxy: false); var sut = new TelemetryHandler(connectionRegistry, identityProvider); var isHandled = await sut.HandleAsync(publishInfo); Assert.False(isHandled); }
public async Task DoesNotHandleUnknownClient() { var publishInfo = new MqttPublishInfo("$edgehub/captured_device_id/captured_module_id/twin/get/?$rid=123", new byte[0]); var(connectionRegistry, identityProvider) = GetHandlerDependencies(shouldFindProxy: false); var sut = new TelemetryHandler(connectionRegistry, identityProvider); var isHandled = await sut.HandleAsync(publishInfo); Assert.False(isHandled); }
public async Task when_any_successful_response_is_returned_it_is_logged() { var logger = new FakeTelemetryLogger(); var sut = new TelemetryHandler(() => logger); sut.InnerHandler = new FakeDelegatingHandler(); var invoker = new HttpMessageInvoker(sut); await invoker.SendAsync(new HttpRequestMessage(), CancellationToken.None); Assert.That(logger.ProxyToServiceErrorOccurredCalled, Is.False); Assert.That(logger.ErrorOccurredCalled, Is.False); Assert.That(logger.RequestCompletedCalled); }
public TelemetryHandlerTests() { _telemetryService = new Mock <TelemetryService>(new TelemetryClientWrapper(new TelemetryClient()), new Dictionary <string, string>()); _telemetryService.Setup(x => x.TrackDuration(TelemetryConstants.HttpHeaderDurationSeconds, It.IsAny <IDictionary <string, string> >())) .Callback((string name, IDictionary <string, string> properties) => { _properties = properties; }).CallBase(); _sendAsync = () => Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent("Hello, world!"), }); _innerHandler = new FuncHttpMessageHandler(() => _sendAsync); _request = new HttpRequestMessage(HttpMethod.Get, "http://example/robots.txt"); _target = new TelemetryHandler(_telemetryService.Object, _innerHandler); _httpClient = new HttpClient(_target); }
public async Task when_an_error_is_thrown_it_is_logged() { var logger = new FakeTelemetryLogger(); var sut = new TelemetryHandler(() => logger); sut.InnerHandler = new FakeDelegatingHandler(new Exception("Test")); var invoker = new HttpMessageInvoker(sut); var response = await invoker.SendAsync(new HttpRequestMessage(), CancellationToken.None); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.InternalServerError)); Assert.That(response.Content, Is.Null); Assert.That(logger.ErrorOccurredCalled, Is.True); Assert.That(logger.RequestCompletedCalled, Is.True); }
public async Task InternalMessageCapturesSystemProperties() { var deviceListenerCapture = new DeviceListenerCapture(); var publishInfo = new MqttPublishInfo("$edgehub/device_id/messages/events/%24.uid=userid&%24.cid=corrid", new byte[] { 0x01, 0x02, 0x03 }); var(connectionRegistry, _) = GetHandlerDependencies(listenerCapture: deviceListenerCapture); var identityProvider = Mock.Of <IIdentityProvider>(); string passedDeviceId = null; Mock.Get(identityProvider) .Setup(ip => ip.Create(It.IsAny <string>())) .Returns((string device_id) => { passedDeviceId = device_id; return(new DeviceIdentity("host", device_id)); }); var sut = new TelemetryHandler(connectionRegistry, identityProvider); var isHandled = await sut.HandleAsync(publishInfo); Assert.True(isHandled); Assert.NotNull(deviceListenerCapture.Captured); Assert.NotNull(deviceListenerCapture.Captured.LastCapturedMessage); var capturedMessage = deviceListenerCapture.Captured.LastCapturedMessage; var expectedProperties = new Dictionary <string, string>() { ["userId"] = "userid", ["cid"] = "corrid", ["connectionDeviceId"] = passedDeviceId }; Assert.Equal(expectedProperties, capturedMessage.SystemProperties); }
public ClientPipelineBuilder( CosmosClient client, ConsistencyLevel?requestedClientConsistencyLevel, IReadOnlyCollection <RequestHandler> customHandlers, ClientTelemetry telemetry) { this.client = client ?? throw new ArgumentNullException(nameof(client)); this.requestedClientConsistencyLevel = requestedClientConsistencyLevel; this.transportHandler = new TransportHandler(client); Debug.Assert(this.transportHandler.InnerHandler == null, nameof(this.transportHandler)); this.invalidPartitionExceptionRetryHandler = new NamedCacheRetryHandler(); Debug.Assert(this.invalidPartitionExceptionRetryHandler.InnerHandler == null, "The invalidPartitionExceptionRetryHandler.InnerHandler must be null to allow other handlers to be linked."); this.PartitionKeyRangeHandler = new PartitionKeyRangeHandler(client); Debug.Assert(this.PartitionKeyRangeHandler.InnerHandler == null, "The PartitionKeyRangeHandler.InnerHandler must be null to allow other handlers to be linked."); // Disable system usage for internal builds. Cosmos DB owns the VMs and already logs // the system information so no need to track it. #if !INTERNAL this.diagnosticsHandler = new DiagnosticsHandler(); Debug.Assert(this.diagnosticsHandler.InnerHandler == null, nameof(this.diagnosticsHandler)); if (telemetry != null) { this.telemetryHandler = new TelemetryHandler(telemetry); Debug.Assert(this.telemetryHandler.InnerHandler == null, nameof(this.telemetryHandler)); } #else this.diagnosticsHandler = null; this.telemetryHandler = null; #endif this.UseRetryPolicy(); this.AddCustomHandlers(customHandlers); }
public MainWindow() { Logging.Make_Log_File(); TelemetryInstaller.check(); Telemetry = new SCSSdkTelemetry(); Telemetry.Data += Telemetry_Data_Handler; TelemetryInstaller.check(); jobHandler = new JobHandler(); Truck_Daten = new Truck_Daten(); InitializeComponent(); Lade_Voreinstellungen(); Lade_Themes(); lade_Translations(); //must be after lade_Translations telemetryhandler = new TelemetryHandler(this, translation); utils.Build_Registry(); this.DataContext = Truck_Daten; }