public NatvisExpressionEvaluator(NatvisDiagnosticLogger logger,
                                  VsExpressionCreator vsExpressionCreator,
                                  IExtensionOptions extensionOptions,
                                  ExpressionEvaluationRecorder expressionEvaluationRecorder,
                                  ITimeSource timeSource)
 {
     _logger = logger;
     _vsExpressionCreator = vsExpressionCreator;
     // Instead of relying on the ExpressionEvaluationEngine flag directly, use
     // IExtensionOptions to get the flag. This will pick up configuration changes in
     // runtime.
     _extensionOptions             = extensionOptions;
     _expressionEvaluationRecorder = expressionEvaluationRecorder;
     _timeSource = timeSource;
 }
Ejemplo n.º 2
0
 public Factory(CreateDebugPropertyDelegate createPropertyDelegate,
                VarInfoBuilder varInfoBuilder, VsExpressionCreator vsExpressionCreator,
                ErrorDebugProperty.Factory errorDebugPropertyFactory,
                IDebugEngineCommands debugEngineCommands,
                IExtensionOptions extensionOptions,
                ExpressionEvaluationRecorder expressionEvaluationRecorder,
                ITimeSource timeSource)
 {
     _createPropertyDelegate       = createPropertyDelegate;
     _varInfoBuilder               = varInfoBuilder;
     _vsExpressionCreator          = vsExpressionCreator;
     _errorDebugPropertyFactory    = errorDebugPropertyFactory;
     _debugEngineCommands          = debugEngineCommands;
     _extensionOptions             = extensionOptions;
     _expressionEvaluationRecorder = expressionEvaluationRecorder;
     _timeSource = timeSource;
 }
Ejemplo n.º 3
0
        public void SetUp()
        {
            _mockDebuggerStackFrame = Substitute.For <RemoteFrame>();
            var childAdapterFactory = new RemoteValueChildAdapter.Factory();
            var varInfoFactory      = new LLDBVariableInformationFactory(childAdapterFactory);

            _vsExpressionCreator = new VsExpressionCreator();

            _metrics = Substitute.For <IMetrics>();
            var eventScheduler        = new EventSchedulerFake();
            var eventSchedulerFactory = Substitute.For <IEventSchedulerFactory>();

            eventSchedulerFactory.Create(Arg.Do <System.Action>(a => eventScheduler.Callback = a))
            .Returns(eventScheduler);
            var       timer = new TimerFake();
            const int minimumBatchSeparationMilliseconds = 1;
            var       batchEventAggregator =
                new BatchEventAggregator <ExpressionEvaluationBatch, ExpressionEvaluationBatchParams,
                                          ExpressionEvaluationBatchSummary>(minimumBatchSeparationMilliseconds,
                                                                            eventSchedulerFactory, timer);

            _expressionEvaluationRecorder =
                new ExpressionEvaluationRecorder(batchEventAggregator, _metrics);
            _timeSource = new MonotonicTimeSource();

            _taskExecutor = Substitute.ForPartsOf <FakeTaskExecutor>();

            var enumFactory = new VariableInformationEnum.Factory(_taskExecutor);

            var childrenProviderFactory = new ChildrenProvider.Factory();
            var debugPropertyFactory    = new DebugProperty.Factory(
                enumFactory, childrenProviderFactory, null, _vsExpressionCreator, _taskExecutor);

            _createPropertyDelegate = debugPropertyFactory.Create;

            childrenProviderFactory.Initialize(_createPropertyDelegate);

            _varInfoBuilder = new VarInfoBuilder(varInfoFactory);
            varInfoFactory.SetVarInfoBuilder(_varInfoBuilder);

            _engineCommandsMock = Substitute.For <IDebugEngineCommands>();

            _mockDebugEngineHandler = Substitute.For <IDebugEngineHandler>();
            _mockProgram            = Substitute.For <IGgpDebugProgram>();
            _mockThread             = Substitute.For <IDebugThread2>();
        }
        public void SetUp()
        {
            _metrics        = Substitute.For <IMetrics>();
            _eventScheduler = new EventSchedulerFake();
            var eventSchedulerFactory = Substitute.For <IEventSchedulerFactory>();

            eventSchedulerFactory.Create(Arg.Do <System.Action>(a => _eventScheduler.Callback = a))
            .Returns(_eventScheduler);
            _timer                = new TimerFake();
            _timeSource           = new MonotonicTimeSource();
            _batchEventAggregator =
                new BatchEventAggregator <ExpressionEvaluationBatch, ExpressionEvaluationBatchParams,
                                          ExpressionEvaluationBatchSummary>(_minimumBatchSeparationMilliseconds,
                                                                            eventSchedulerFactory, _timer);

            _expressionEvaluationRecorder =
                new ExpressionEvaluationRecorder(_batchEventAggregator, _metrics);
        }
        public ExpressionEvaluationRecorder GetExpressionEvaluationRecorder()
        {
            if (_expressionEvaluationRecorder == null)
            {
                var schedulerFactory = new EventScheduler.Factory();
                var timerFactory     = new Timer.Factory();

                ITimer timer = timerFactory.Create();

                var expressionEvaluationEventAggregator =
                    new BatchEventAggregator <ExpressionEvaluationBatch,
                                              ExpressionEvaluationBatchParams, ExpressionEvaluationBatchSummary>(
                        _minimumDebugEventBatchSeparationInMillis, schedulerFactory, timer);

                _expressionEvaluationRecorder =
                    new ExpressionEvaluationRecorder(expressionEvaluationEventAggregator,
                                                     GetDebugSessionMetrics());
            }

            return(_expressionEvaluationRecorder);
        }
Ejemplo n.º 6
0
 AsyncExpressionEvaluator(RemoteFrame frame, string text,
                          VsExpressionCreator vsExpressionCreator,
                          VarInfoBuilder varInfoBuilder,
                          CreateDebugPropertyDelegate createPropertyDelegate,
                          ErrorDebugProperty.Factory errorDebugPropertyFactory,
                          IDebugEngineCommands debugEngineCommands,
                          ExpressionEvaluationStrategy expressionEvaluationStrategy,
                          ExpressionEvaluationRecorder expressionEvaluationRecorder,
                          ITimeSource timeSource)
 {
     _frame = frame;
     _text  = text;
     _vsExpressionCreator          = vsExpressionCreator;
     _varInfoBuilder               = varInfoBuilder;
     _createPropertyDelegate       = createPropertyDelegate;
     _errorDebugPropertyFactory    = errorDebugPropertyFactory;
     _debugEngineCommands          = debugEngineCommands;
     _expressionEvaluationStrategy = expressionEvaluationStrategy;
     _expressionEvaluationRecorder = expressionEvaluationRecorder;
     _timeSource = timeSource;
 }