public MeasurementEventNormalizationService( ITelemetryLogger log, IContentTemplate contentTemplate, IExceptionTelemetryProcessor exceptionTelemetryProcessor) : this(log, contentTemplate, new EventDataWithJsonBodyToJTokenConverter(), exceptionTelemetryProcessor, 1) { }
public async Task GivenEventsAndNormalization_WhenProcessAsyncAndDataMappingErrors_ThenExecutionNotHaltedAndNormalizationDataMappingExceptionThrown_Test() { _template.GetMeasurements(null).ReturnsForAnyArgs(m => throw new Exception("Test")); var events = Enumerable.Range(0, 10) .Select(i => BuildEvent(i)) .ToDictionary(ed => ed, ed => JToken.FromObject(new object())); _converter.Convert(null).ReturnsForAnyArgs(args => events[args.Arg <EventData>()]); _exceptionTelemetryProcessor = new NormalizationExceptionTelemetryProcessor(); var srv = new MeasurementEventNormalizationService(_logger, _template, _converter, _exceptionTelemetryProcessor, 1); var exception = await Assert.ThrowsAsync <AggregateException>(() => srv.ProcessAsync(events.Keys, _consumer)); Action <Exception> validateInnerExceptions = e => { Assert.IsType <NormalizationDataMappingException>(e); Assert.Equal("Test", e.Message); }; // Verify all exceptions in the returned aggregate exception Assert.Collection(exception.InnerExceptions, Enumerable.Range(0, 10).Select(i => validateInnerExceptions).ToArray()); _template.ReceivedWithAnyArgs(10).GetMeasurements(null); _converter.ReceivedWithAnyArgs(10).Convert(null); await _consumer.ReceivedWithAnyArgs(0).AddAsync(null); }
public MeasurementEventNormalizationServiceTests() { _template = Substitute.For <IContentTemplate>(); _consumer = Substitute.For <IEnumerableAsyncCollector <IMeasurement> >(); _converter = Substitute.For <IConverter <EventData, JToken> >(); _logger = Substitute.For <ITelemetryLogger>(); _exceptionTelemetryProcessor = Substitute.For <IExceptionTelemetryProcessor>(); }
public IomtConnectorFunctions(ITelemetryLogger logger) { _logger = EnsureArg.IsNotNull(logger, nameof(logger)); var expressionRegister = new AssemblyExpressionRegister(typeof(IExpressionRegister).Assembly, _logger); var jmesPath = new JmesPath(); expressionRegister.RegisterExpressions(jmesPath.FunctionRepository); _collectionContentTemplateFactory = new CollectionContentTemplateFactory( new JsonPathContentTemplateFactory(), new IotJsonPathContentTemplateFactory(), new IotCentralJsonPathContentTemplateFactory(), new CalculatedFunctionContentTemplateFactory( new TemplateExpressionEvaluatorFactory(jmesPath), _logger)); _exceptionTelemetryProcessor = new NormalizationExceptionTelemetryProcessor(); }
public MeasurementEventNormalizationService( ITelemetryLogger log, IContentTemplate contentTemplate, Data.IConverter <EventData, JToken> converter, IExceptionTelemetryProcessor exceptionTelemetryProcessor, int maxParallelism, int asyncCollectorBatchSize = 200) { _log = EnsureArg.IsNotNull(log, nameof(log)); _contentTemplate = EnsureArg.IsNotNull(contentTemplate, nameof(contentTemplate)); _converter = EnsureArg.IsNotNull(converter, nameof(converter)); _exceptionTelemetryProcessor = EnsureArg.IsNotNull(exceptionTelemetryProcessor, nameof(exceptionTelemetryProcessor)); _maxParallelism = maxParallelism; _asyncCollectorBatchSize = EnsureArg.IsGt(asyncCollectorBatchSize, 0, nameof(asyncCollectorBatchSize)); }
public Processor( string templateDefinition, ITemplateManager templateManager, IEnumerableAsyncCollector <IMeasurement> collector, ITelemetryLogger logger, CollectionTemplateFactory <IContentTemplate, IContentTemplate> collectionTemplateFactory) { _templateDefinition = EnsureArg.IsNotNullOrWhiteSpace(templateDefinition, nameof(templateDefinition)); _templateManager = EnsureArg.IsNotNull(templateManager, nameof(templateManager)); _collector = EnsureArg.IsNotNull(collector, nameof(collector)); _logger = EnsureArg.IsNotNull(logger, nameof(logger)); _retryPolicy = CreateRetryPolicy(logger); _collectionTemplateFactory = EnsureArg.IsNotNull(collectionTemplateFactory, nameof(collectionTemplateFactory)); _exceptionTelemetryProcessor = new NormalizationExceptionTelemetryProcessor(); }
public async Task GivenEventsAndDefaultErrorConsumer_WhenProcessAsyncAndHandleableConsumerErrors_ThenExceptionNotThrown_Test() { _template.GetMeasurements(null).ReturnsForAnyArgs(new[] { Substitute.For <Measurement>() }); var events = Enumerable.Range(0, 10).Select(i => BuildEvent(i)).ToArray(); _converter.Convert(null).ReturnsForAnyArgs(v => throw new IncompatibleDataException()); _exceptionTelemetryProcessor = new NormalizationExceptionTelemetryProcessor(); var srv = new MeasurementEventNormalizationService(_logger, _template, _converter, _exceptionTelemetryProcessor, 1); await srv.ProcessAsync(events, _consumer); _template.ReceivedWithAnyArgs(0).GetMeasurements(null); _converter.ReceivedWithAnyArgs(events.Length).Convert(null); await _consumer.ReceivedWithAnyArgs(0).AddAsync(null); }