public void Successful_FabricSystemObserver_Run_Cancellation_Via_ObserverManager() { ObserverManager.FabricServiceContext = this.context; ObserverManager.TelemetryEnabled = false; ObserverManager.EtwEnabled = false; ObserverManager.FabricClientInstance = new FabricClient(FabricClientRole.User); var stopWatch = new Stopwatch(); var obs = new FabricSystemObserver { IsEnabled = true, NodeName = "_Test_0", IsTestRun = true, }; var obsMgr = new ObserverManager(obs) { ApplicationName = "fabric:/TestApp0", }; var objReady = new ManualResetEventSlim(false); stopWatch.Start(); var t = Task.Factory.StartNew(() => { objReady.Set(); obsMgr.StartObservers(); }); objReady?.Wait(); while (!obsMgr.IsObserverRunning && stopWatch.Elapsed.TotalSeconds < 10) { // wait... } stopWatch.Stop(); obsMgr.StopObservers(); Thread.Sleep(5); Assert.IsFalse(obsMgr.IsObserverRunning); obs.Dispose(); objReady?.Dispose(); }
public void FabricSystemObserver_Constructor_Test() { ObserverManager.FabricServiceContext = this.context; ObserverManager.FabricClientInstance = new FabricClient(FabricClientRole.User); ObserverManager.TelemetryEnabled = false; ObserverManager.EtwEnabled = false; var obs = new FabricSystemObserver(); Assert.IsTrue(obs.ObserverLogger != null); Assert.IsTrue(obs.CsvFileLogger != null); Assert.IsTrue(obs.HealthReporter != null); Assert.IsTrue(obs.ObserverName == ObserverConstants.FabricSystemObserverName); obs.Dispose(); ObserverManager.FabricClientInstance.Dispose(); }
public async Task FabricSystemObserver_ObserveAsync_Successful_Observer_IsHealthy_WarningsOrErrorsDetected() { if (!this.isSFRuntimePresentOnTestMachine) { return; } var startDateTime = DateTime.Now; ObserverManager.FabricServiceContext = this.context; ObserverManager.FabricClientInstance = new FabricClient(FabricClientRole.User); var nodeList = await ObserverManager.FabricClientInstance.QueryManager.GetNodeListAsync().ConfigureAwait(true); if (nodeList?.Count > 1) { return; } ObserverManager.TelemetryEnabled = false; ObserverManager.EtwEnabled = false; var obs = new FabricSystemObserver { IsTestRun = true, MemWarnUsageThresholdMB = 20, // This will definitely cause Warning alerts... }; await obs.ObserveAsync(this.token).ConfigureAwait(true); // observer ran to completion with no errors... Assert.IsTrue(obs.LastRunDateTime > startDateTime); // Experiment with err/warn detection/reporting behavior. // observer detected errors or warnings for supplied threshold(s)... Assert.IsTrue(obs.HasActiveFabricErrorOrWarning); // observer did not have any internal errors during run... Assert.IsFalse(obs.IsUnhealthy); obs.Dispose(); ObserverManager.FabricClientInstance.Dispose(); }
public async Task FabricSystemObserver_Integer_Greater_Than_100_CPU_Warn_Threshold_No_Unhandled_Exception() { if (!this.isSFRuntimePresentOnTestMachine) { return; } var startDateTime = DateTime.Now; ObserverManager.FabricServiceContext = this.context; ObserverManager.FabricClientInstance = new FabricClient(FabricClientRole.User); var nodeList = await ObserverManager.FabricClientInstance.QueryManager.GetNodeListAsync().ConfigureAwait(true); if (nodeList?.Count > 1) { return; } ObserverManager.TelemetryEnabled = false; ObserverManager.EtwEnabled = false; var obs = new FabricSystemObserver { IsTestRun = true, CpuWarnUsageThresholdPct = 420, }; await obs.ObserveAsync(this.token).ConfigureAwait(true); // observer ran to completion with no errors... Assert.IsTrue(obs.LastRunDateTime > startDateTime); // observer detected no error conditions... Assert.IsFalse(obs.HasActiveFabricErrorOrWarning); // observer did not have any internal errors during run... Assert.IsFalse(obs.IsUnhealthy); obs.Dispose(); ObserverManager.FabricClientInstance.Dispose(); }