/// <summary>Sets up StartupProgress to final state after startup sequence has completed.
        ///     </summary>
        /// <param name="prog">StartupProgress to set</param>
        public static void SetStartupProgressForFinalState(StartupProgress prog)
        {
            prog.BeginPhase(Phase.LoadingFsimage);
            Step loadingFsImageInodes = new Step(StepType.Inodes);

            prog.BeginStep(Phase.LoadingFsimage, loadingFsImageInodes);
            prog.SetTotal(Phase.LoadingFsimage, loadingFsImageInodes, 100L);
            IncrementCounter(prog, Phase.LoadingFsimage, loadingFsImageInodes, 100L);
            prog.EndStep(Phase.LoadingFsimage, loadingFsImageInodes);
            prog.EndPhase(Phase.LoadingFsimage);
            prog.BeginPhase(Phase.LoadingEdits);
            Step loadingEditsFile = new Step("file", 1000L);

            prog.BeginStep(Phase.LoadingEdits, loadingEditsFile);
            prog.SetTotal(Phase.LoadingEdits, loadingEditsFile, 200L);
            IncrementCounter(prog, Phase.LoadingEdits, loadingEditsFile, 200L);
            prog.EndStep(Phase.LoadingEdits, loadingEditsFile);
            prog.EndPhase(Phase.LoadingEdits);
            prog.BeginPhase(Phase.SavingCheckpoint);
            Step savingCheckpointInodes = new Step(StepType.Inodes);

            prog.BeginStep(Phase.SavingCheckpoint, savingCheckpointInodes);
            prog.SetTotal(Phase.SavingCheckpoint, savingCheckpointInodes, 300L);
            IncrementCounter(prog, Phase.SavingCheckpoint, savingCheckpointInodes, 300L);
            prog.EndStep(Phase.SavingCheckpoint, savingCheckpointInodes);
            prog.EndPhase(Phase.SavingCheckpoint);
            prog.BeginPhase(Phase.Safemode);
            Step awaitingBlocks = new Step(StepType.AwaitingReportedBlocks);

            prog.BeginStep(Phase.Safemode, awaitingBlocks);
            prog.SetTotal(Phase.Safemode, awaitingBlocks, 400L);
            IncrementCounter(prog, Phase.Safemode, awaitingBlocks, 400L);
            prog.EndStep(Phase.Safemode, awaitingBlocks);
            prog.EndPhase(Phase.Safemode);
        }
        /// <summary>Sets up StartupProgress to a state part-way through the startup sequence.
        ///     </summary>
        /// <param name="prog">StartupProgress to set</param>
        public static void SetStartupProgressForRunningState(StartupProgress prog)
        {
            prog.BeginPhase(Phase.LoadingFsimage);
            Step loadingFsImageInodes = new Step(StepType.Inodes);

            prog.BeginStep(Phase.LoadingFsimage, loadingFsImageInodes);
            prog.SetTotal(Phase.LoadingFsimage, loadingFsImageInodes, 100L);
            IncrementCounter(prog, Phase.LoadingFsimage, loadingFsImageInodes, 100L);
            prog.EndStep(Phase.LoadingFsimage, loadingFsImageInodes);
            prog.EndPhase(Phase.LoadingFsimage);
            prog.BeginPhase(Phase.LoadingEdits);
            Step loadingEditsFile = new Step("file", 1000L);

            prog.BeginStep(Phase.LoadingEdits, loadingEditsFile);
            prog.SetTotal(Phase.LoadingEdits, loadingEditsFile, 200L);
            IncrementCounter(prog, Phase.LoadingEdits, loadingEditsFile, 100L);
        }
예제 #3
0
        /// <exception cref="System.Exception"/>
        public virtual void TestElapsedTime()
        {
            startupProgress.BeginPhase(Phase.LoadingFsimage);
            Step loadingFsImageInodes = new Step(StepType.Inodes);

            startupProgress.BeginStep(Phase.LoadingFsimage, loadingFsImageInodes);
            Sharpen.Thread.Sleep(50L);
            // brief sleep to fake elapsed time
            startupProgress.EndStep(Phase.LoadingFsimage, loadingFsImageInodes);
            Step loadingFsImageDelegationKeys = new Step(StepType.DelegationKeys);

            startupProgress.BeginStep(Phase.LoadingFsimage, loadingFsImageDelegationKeys);
            Sharpen.Thread.Sleep(50L);
            // brief sleep to fake elapsed time
            startupProgress.EndStep(Phase.LoadingFsimage, loadingFsImageDelegationKeys);
            startupProgress.EndPhase(Phase.LoadingFsimage);
            startupProgress.BeginPhase(Phase.LoadingEdits);
            Step loadingEditsFile = new Step("file", 1000L);

            startupProgress.BeginStep(Phase.LoadingEdits, loadingEditsFile);
            startupProgress.SetTotal(Phase.LoadingEdits, loadingEditsFile, 10000L);
            StartupProgressTestHelper.IncrementCounter(startupProgress, Phase.LoadingEdits, loadingEditsFile
                                                       , 5000L);
            Sharpen.Thread.Sleep(50L);
            // brief sleep to fake elapsed time
            StartupProgressView view = startupProgress.CreateView();

            NUnit.Framework.Assert.IsNotNull(view);
            NUnit.Framework.Assert.IsTrue(view.GetElapsedTime() > 0);
            NUnit.Framework.Assert.IsTrue(view.GetElapsedTime(Phase.LoadingFsimage) > 0);
            NUnit.Framework.Assert.IsTrue(view.GetElapsedTime(Phase.LoadingFsimage, loadingFsImageInodes
                                                              ) > 0);
            NUnit.Framework.Assert.IsTrue(view.GetElapsedTime(Phase.LoadingFsimage, loadingFsImageDelegationKeys
                                                              ) > 0);
            NUnit.Framework.Assert.IsTrue(view.GetElapsedTime(Phase.LoadingEdits) > 0);
            NUnit.Framework.Assert.IsTrue(view.GetElapsedTime(Phase.LoadingEdits, loadingEditsFile
                                                              ) > 0);
            NUnit.Framework.Assert.IsTrue(view.GetElapsedTime(Phase.SavingCheckpoint) == 0);
            NUnit.Framework.Assert.IsTrue(view.GetElapsedTime(Phase.SavingCheckpoint, new Step
                                                                  (StepType.Inodes)) == 0);
            // Brief sleep, then check that completed phases/steps have the same elapsed
            // time, but running phases/steps have updated elapsed time.
            long totalTime                = view.GetElapsedTime();
            long loadingFsImageTime       = view.GetElapsedTime(Phase.LoadingFsimage);
            long loadingFsImageInodesTime = view.GetElapsedTime(Phase.LoadingFsimage, loadingFsImageInodes
                                                                );
            long loadingFsImageDelegationKeysTime = view.GetElapsedTime(Phase.LoadingFsimage,
                                                                        loadingFsImageInodes);
            long loadingEditsTime     = view.GetElapsedTime(Phase.LoadingEdits);
            long loadingEditsFileTime = view.GetElapsedTime(Phase.LoadingEdits, loadingEditsFile
                                                            );

            Sharpen.Thread.Sleep(50L);
            NUnit.Framework.Assert.IsTrue(totalTime < view.GetElapsedTime());
            NUnit.Framework.Assert.AreEqual(loadingFsImageTime, view.GetElapsedTime(Phase.LoadingFsimage
                                                                                    ));
            NUnit.Framework.Assert.AreEqual(loadingFsImageInodesTime, view.GetElapsedTime(Phase
                                                                                          .LoadingFsimage, loadingFsImageInodes));
            NUnit.Framework.Assert.IsTrue(loadingEditsTime < view.GetElapsedTime(Phase.LoadingEdits
                                                                                 ));
            NUnit.Framework.Assert.IsTrue(loadingEditsFileTime < view.GetElapsedTime(Phase.LoadingEdits
                                                                                     , loadingEditsFile));
        }