Beispiel #1
0
        /// <summary>
        /// Initializes this instance of the Glimpse runtime.
        /// </summary>
        /// <returns>
        ///   <c>true</c> if system initialized successfully, <c>false</c> otherwise
        /// </returns>
        public bool Initialize()
        {
            CreateAndStartGlobalExecutionTimer(Configuration.FrameworkProvider.HttpRequestStore);

            var logger = Configuration.Logger;
            var policy = GetRuntimePolicy(RuntimeEvent.Initialize);

            if (policy == RuntimePolicy.Off)
            {
                return(false);
            }

            // Double checked lock to ensure thread safety. http://en.wikipedia.org/wiki/Double_checked_locking_pattern
            if (!IsInitialized)
            {
                lock (LockObj)
                {
                    if (!IsInitialized)
                    {
                        var messageBroker = Configuration.MessageBroker;

                        var tabsThatRequireSetup = Configuration.Tabs.Where(tab => tab is ITabSetup).Select(tab => tab);
                        foreach (ITabSetup tab in tabsThatRequireSetup)
                        {
                            var key = CreateKey(tab);
                            try
                            {
                                var setupContext = new TabSetupContext(logger, messageBroker, () => GetTabStore(key));
                                tab.Setup(setupContext);
                            }
                            catch (Exception exception)
                            {
                                logger.Error(Resources.InitializeTabError, exception, key);
                            }
                        }

                        var inspectorContext = new InspectorContext(logger, Configuration.ProxyFactory, messageBroker, Configuration.TimerStrategy, Configuration.RuntimePolicyStrategy);

                        foreach (var inspector in Configuration.Inspectors)
                        {
                            try
                            {
                                inspector.Setup(inspectorContext);
                                logger.Debug(Resources.GlimpseRuntimeInitializeSetupInspector, inspector.GetType());
                            }
                            catch (Exception exception)
                            {
                                logger.Error(Resources.InitializeInspectorError, exception, inspector.GetType());
                            }
                        }

                        PersistMetadata();

                        IsInitialized = true;
                    }
                }
            }

            return(policy != RuntimePolicy.Off);
        }
Beispiel #2
0
        public void Construct()
        {
            var loggerMock    = new Mock <ILogger>();
            var brokerMock    = new Mock <IMessageBroker>();
            var dataStoreMock = new Mock <IDataStore>();

            var context = new TabSetupContext(loggerMock.Object, brokerMock.Object, () => dataStoreMock.Object);

            Assert.Equal(loggerMock.Object, context.Logger);
            Assert.Equal(brokerMock.Object, context.MessageBroker);
            Assert.Equal(dataStoreMock.Object, context.GetTabStore());
        }