public void PluginStartupParameters_Constructor_Initialises_To_Known_State_And_Properties_Work() { var aircraftList = new Mock<IBaseStationAircraftList>(MockBehavior.Strict).Object; var fsxAircraftList = new Mock<ISimpleAircraftList>(MockBehavior.Strict).Object; var uPnpManager = new Mock<IUniversalPlugAndPlayManager>(MockBehavior.Strict).Object; var webSite = new Mock<IWebSite>(MockBehavior.Strict).Object; var startupParameters = new PluginStartupParameters(aircraftList, fsxAircraftList, uPnpManager, webSite); Assert.AreSame(aircraftList, startupParameters.AircraftList); Assert.AreSame(fsxAircraftList, startupParameters.FlightSimulatorAircraftList); Assert.AreSame(uPnpManager, startupParameters.UPnpManager); Assert.AreSame(webSite, startupParameters.WebSite); }
public void TestInitialise() { _AutoConfigMessageListener = TestUtilities.CreateMockSingleton<IAutoConfigListener>(); _Listener = TestUtilities.CreateMockImplementation<IListener>(); _AutoConfigMessageListener.Setup(r => r.Listener).Returns(_Listener.Object); _StartupParameters = new PluginStartupParameters(null, null, null, null); _ClassFactorySnapshot = Factory.TakeSnapshot(); _PluginSettingsStorage = TestUtilities.CreateMockSingleton<IPluginSettingsStorage>(); _PluginSettings = new PluginSettings(); _PluginSettingsStorage.Setup(s => s.Load()).Returns(_PluginSettings); _RuntimeEnvironment = TestUtilities.CreateMockSingleton<IRuntimeEnvironment>(); _RuntimeEnvironment.Setup(r => r.IsTest).Returns(true); _BaseStationDatabase = new Mock<IBaseStationDatabase>() { DefaultValue = DefaultValue.Mock }.SetupAllProperties(); _BaseStationDatabase.Object.FileName = "fn"; _AutoConfigBaseStationDatabase = TestUtilities.CreateMockSingleton<IAutoConfigBaseStationDatabase>(); _AutoConfigBaseStationDatabase.Setup(a => a.Database).Returns(_BaseStationDatabase.Object); _BaseStationDatabase.Setup(d => d.GetLocations()).Returns(new List<BaseStationLocation>() { new BaseStationLocation() { LocationID = 9821 } } ); SetDBHistory(true); _StandingDataManager = TestUtilities.CreateMockSingleton<IStandingDataManager>(); _HeartbeatService = TestUtilities.CreateMockSingleton<IHeartbeatService>(); _Log = TestUtilities.CreateMockSingleton<ILog>(); _ConfigurationStorage = TestUtilities.CreateMockSingleton<IConfigurationStorage>(); _Configuration = new Configuration(); _ConfigurationStorage.Setup(c => c.Load()).Returns(_Configuration); _StatusChangedEvent = new EventRecorder<EventArgs>(); _Plugin = new PluginNS.Plugin(); _Provider = new Mock<PluginNS.IPluginProvider>() { DefaultValue = DefaultValue.Mock }.SetupAllProperties(); _Provider.Setup(p => p.FileExists(It.IsAny<string>())).Returns(true); _Provider.Setup(p => p.LocalNow).Returns(new DateTime(2001, 2, 3, 4, 5, 6)); _Provider.Setup(p => p.FileSize(It.IsAny<string>())).Returns(1000000L); _OptionsView = new Mock<PluginNS.IOptionsView>() { DefaultValue = DefaultValue.Mock }.SetupAllProperties(); _Provider.Setup(p => p.CreateOptionsView()).Returns(_OptionsView.Object); _Plugin.Provider = _Provider.Object; }
private void StartPlugins(IWebSite webSite) { _View.ReportProgress(Strings.SplashScreenStartingPlugins); var parameters = new PluginStartupParameters( _View.BaseStationAircraftList, _View.FlightSimulatorXAircraftList, _View.UPnpManager, webSite); foreach(var plugin in Factory.Singleton.Resolve<IPluginManager>().Singleton.LoadedPlugins) { try { plugin.Startup(parameters); if(BackgroundThreadExceptionHandler != null) { IBackgroundThreadExceptionCatcher backgroundExceptionCatcher = plugin as IBackgroundThreadExceptionCatcher; if(backgroundExceptionCatcher != null) backgroundExceptionCatcher.ExceptionCaught += BackgroundThreadExceptionHandler; } } catch(Exception ex) { Debug.WriteLine(String.Format("MainPresenter.StartPlugins caught exception: {0}", ex.ToString())); Factory.Singleton.Resolve<ILog>().Singleton.WriteLine("Caught exception when starting {0}: {1}", plugin.Name, ex.ToString()); _View.ReportProblem(String.Format(Strings.PluginThrewExceptionFull, plugin.Name, ex.Message), Strings.PluginThrewExceptionTitle, false); } } }
/// <summary> /// See interface docs. /// </summary> /// <param name="parameters"></param> public void Startup(PluginStartupParameters parameters) { var pluginSettingsStorage = Factory.Singleton.Resolve<IPluginSettingsStorage>().Singleton; var pluginSettings = pluginSettingsStorage.Load(); _Enabled = pluginSettings.ReadBool(this, EnabledSettingsKey, false); var folder = Factory.Singleton.Resolve<IConfigurationStorage>().Folder; _Folder = Path.Combine(folder, "BaseStationDatabaseLogger"); if(!Directory.Exists(_Folder)) Directory.CreateDirectory(_Folder); EnableDisableLogging(); }
public void Startup(PluginStartupParameters parameters) { }
public void Startup(PluginStartupParameters parameters) { var pluginSettingsStorage = Factory.Singleton.Resolve<IPluginSettingsStorage>().Singleton; var pluginSettings = pluginSettingsStorage.Load(); _Enabled = pluginSettings.ReadBool(this, EnabledSettingsKey, false); var webServer = Factory.Singleton.Resolve<IAutoConfigWebServer>().Singleton.WebServer; webServer.BeforeRequestReceived += WebServer_BeforeRequestReceived; webServer.ResponseSent += WebServer_ResponseSent; UpdateStatus(); }
/// <summary> /// See interface docs. /// </summary> /// <param name="parameters"></param> public void Startup(PluginStartupParameters parameters) { lock(_SyncLock) { var optionsStorage = new OptionsStorage(); _Options = optionsStorage.Load(this); _Database = Factory.Singleton.Resolve<IAutoConfigBaseStationDatabase>().Singleton.Database; _Database.FileNameChanging += BaseStationDatabase_FileNameChanging; _Database.FileNameChanged += BaseStationDatabase_FileNameChanged; _StandingDataManager = Factory.Singleton.Resolve<IStandingDataManager>().Singleton; _StandingDataManager.LoadCompleted += StandingDataManager_LoadCompleted; StartSession(); // If we process messages on the same thread as IAutoConfigListener raises the message received event on then we // will be running on the same thread as the aircraft list. Our processing can take some time, particularly if many // database writes have to happen simultaneously on startup, so to avoid blocking the update of the aircraft list // we create a background thread and process the messages on that. _BackgroundThreadMessageQueue = new BackgroundThreadQueue<BaseStationMessageEventArgs>("BaseStationDatabaseWriterMessageQueue"); _BackgroundThreadMessageQueue.StartBackgroundThread(MessageQueue_MessageReceived, MessageQueue_ExceptionCaught); var listener = Factory.Singleton.Resolve<IAutoConfigListener>().Singleton.Listener; listener.Port30003MessageReceived += MessageListener_MessageReceived; listener.SourceChanged += MessageListener_SourceChanged; Factory.Singleton.Resolve<IHeartbeatService>().Singleton.SlowTick += Heartbeat_SlowTick; } }
/// <summary> /// See interface docs. /// </summary> /// <param name="parameters"></param> public void Startup(PluginStartupParameters parameters) { var pluginSettingsStorage = Factory.Singleton.Resolve<IPluginSettingsStorage>().Singleton; var pluginSettings = pluginSettingsStorage.Load(); _Enabled = pluginSettings.ReadBool(this, EnabledSettingsKey, false); InitialiseFile(); var webServer = Factory.Singleton.Resolve<IAutoConfigWebServer>().Singleton.WebServer; webServer.ResponseSent += WebServer_ResponseSent; }