/// <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); }
/// <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)); }