Example #1
0
        /// <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);
            }
        }
Example #2
0
 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();
     }
 }
Example #4
0
        public void StartAndStopLocalMongo()
        {
            var mongoProcessManager = new LocalMongoProcessManager();

            mongoProcessManager.StartMongoProcess();
            mongoProcessManager.IsMongoRunning().Should().Be(true);

            mongoProcessManager.KillAllMongoProcesses();
            mongoProcessManager.IsMongoRunning().Should().Be(false);
        }
Example #5
0
        /// <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);
        }