public void TestInitialize() { _storageEngine = new SqliteStorageEngine(":memory:", true); }
private void ProcessMetricRequests() { _logger.Debug("Beginning to process metric requests"); var storageEngine = new SqliteStorageEngine(ApplicationSettings.DatabaseName); // Start the webserver _logger.Debug("Beginning webserver on port {0}", _webPortNumber); var bootstrapper = new OverlookBootStrapper(storageEngine); var uri = new Uri("http://localhost:" + _webPortNumber); var webServer = new NancyHost(uri, bootstrapper); webServer.Start(); _logger.Debug("Web server started"); var retrievers = new IMetricRetriever[] { new OpenProcessMetricRetriever(), new OpenHardwareMonitorMetricRetriever() }; UpdateDisplays(storageEngine); var lastSnapshotTime = DateTime.MinValue; var secondsBetweenChecks = ApplicationSettings.SecondsBetweenSnapshots; while (!_cancellationTokenSource.Token.IsCancellationRequested) { if ((DateTime.Now - lastSnapshotTime).TotalSeconds > secondsBetweenChecks) { _logger.Debug("Generating snapshot"); var snapshot = new Snapshot { Date = DateTime.Now, MetricValues = retrievers.SelectMany(x => x.GetCurrentMetricValues()) .ToArray() }; _logger.Debug("Storing Snapshot"); storageEngine.StoreSnapshot(snapshot); _logger.Debug("Snapshot stored"); UpdateDisplays(storageEngine); lastSnapshotTime = DateTime.Now; } else { Thread.Sleep(100); } } _logger.Debug("Stopping webserver"); webServer.Stop(); _logger.Debug("Webserver stopped"); }