/// <summary> /// Processes a full logset from end-to-end. /// </summary> public virtual void ProcessRequest(LogsharkRequest request) { var runTimer = request.RunContext.CreateTimer("Logshark Run", request.Target); // Update log4net to contain the CustomId and RunId properties for any consumers which wish to log them. LogicalThreadContext.Properties["CustomId"] = request.CustomId; LogicalThreadContext.Properties["RunId"] = request.RunId; LocalMongoProcessManager localMongoProcessManager = StartLocalMongoIfRequested(request); request.RunContext.CurrentPhase = ProcessingPhase.Pending; try { ExtractLogset(request); IArtifactProcessor artifactProcessor = InitializeArtifactProcessor(request); ProcessLogset(request, artifactProcessor); ExecutePlugins(request); SetRunSuccess(request); } catch (Exception ex) { SetRunFailed(request, ex); throw; } finally { LogsharkController.TearDown(request); StopLocalMongoIfRequested(request, localMongoProcessManager); runTimer.Stop(); Log.InfoFormat("Logshark run complete! [{0}]", runTimer.Elapsed.Print()); LogsharkController.DisplayRunSummary(request); } }
protected void StopLocalMongoIfRequested(LogsharkRequest request, LocalMongoProcessManager localMongoProcessManager) { if (request.StartLocalMongo) { LogsharkController.ShutDownLocalMongoDbInstance(localMongoProcessManager); } }
/// <summary> /// Shutdown a local MongoDB instances, if it is currently running. /// </summary> public static void ShutDownLocalMongoDbInstance(LocalMongoProcessManager localMongoProcessManager) { if (localMongoProcessManager != null && localMongoProcessManager.IsMongoRunning()) { Log.InfoFormat("Shutting down local MongoDB process.."); localMongoProcessManager.KillAllMongoProcesses(); } }
public void StartAndStopLocalMongo() { var mongoProcessManager = new LocalMongoProcessManager(); mongoProcessManager.StartMongoProcess(); mongoProcessManager.IsMongoRunning().Should().Be(true); mongoProcessManager.KillAllMongoProcesses(); mongoProcessManager.IsMongoRunning().Should().Be(false); }
/// <summary> /// Spin up local MongoDB instance if the user requested it. /// </summary> protected LocalMongoProcessManager StartLocalMongoIfRequested(LogsharkRequest request) { LocalMongoProcessManager localMongoProcessManager = null; if (request.StartLocalMongo) { localMongoProcessManager = LogsharkController.StartLocalMongoDbInstance(request); } return(localMongoProcessManager); }
/// <summary> /// Fires up a local MongoDB instance and updates the connection information in the request to point to it. /// </summary> /// <returns>LocalMongoProcessManager object for a Mongod process in the Running state.</returns> public static LocalMongoProcessManager StartLocalMongoDbInstance(LogsharkRequest request) { var localMongoProcessManager = new LocalMongoProcessManager(request.LocalMongoPort); if (request.Configuration.LocalMongoOptions.PurgeLocalMongoOnStartup) { localMongoProcessManager.PurgeData(); } localMongoProcessManager.StartMongoProcess(); // Update MongoConnectionInfo on the request to point to the local instance. request.Configuration.MongoConnectionInfo = localMongoProcessManager.GetConnectionInfo(); return(localMongoProcessManager); }