コード例 #1
0
 public MeasurementEventNormalizationService(
     ITelemetryLogger log,
     IContentTemplate contentTemplate,
     IExceptionTelemetryProcessor exceptionTelemetryProcessor)
     : this(log, contentTemplate, new EventDataWithJsonBodyToJTokenConverter(), exceptionTelemetryProcessor, 1)
 {
 }
コード例 #2
0
        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>();
 }
コード例 #4
0
        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();
        }
コード例 #5
0
 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));
 }
コード例 #6
0
ファイル: Processor.cs プロジェクト: msjasteppe/iomt-fhir
 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);
        }