public void InitializeHealthHeartbeatDoesntThrow() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); } }
public void HeartbeatPayloadContainsOnlyAllowedDefaultPayloadFields() { var assemblyDefFields = new BaseDefaultHeartbeatPropertyProvider(); var allDefaultFields = assemblyDefFields.DefaultFields; using (var hbeat = new HeartbeatProvider()) { List <string> disableHbProps = new List <string>(); for (int i = 0; i < allDefaultFields.Count(); ++i) { if (i % 2 == 0) { disableHbProps.Add(allDefaultFields[i]); hbeat.ExcludedHeartbeatProperties.Add(allDefaultFields[i]); } } hbeat.Initialize(configuration: null); var sentHeartBeat = (MetricTelemetry)hbeat.GatherData(); Assert.IsNotNull(sentHeartBeat); foreach (var kvp in sentHeartBeat.Properties) { Assert.IsFalse(disableHbProps.Contains(kvp.Key), string.Format(CultureInfo.CurrentCulture, "Dissallowed field '{0}' found in payload", kvp.Key)); } } }
public void InitializeHealthHeartbeatTwiceDoesntFail() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); hbeat.Initialize(configuration: null); } }
public void InitializeHealthHeartbeatDefaultsAreSetProperly() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); Assert.IsTrue(hbeat.ExcludedHeartbeatProperties == null || hbeat.ExcludedHeartbeatProperties.Count() == 0); Assert.AreEqual(hbeat.HeartbeatInterval, HeartbeatProvider.DefaultHeartbeatInterval); } }
public void HeartbeatPayloadContainsDataByDefault() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); var hbeatPayloadData = hbeat.GatherData(); Assert.IsNotNull(hbeatPayloadData); } }
public void HeartbeatMetricIsZeroForNoFailureConditionPresent() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); var msg = (MetricTelemetry)hbeat.GatherData(); Assert.IsFalse(msg.Sum > 0.0); } }
public void HeartbeatProviderDoesNotAllowDuplicatePropertyName() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); Assert.IsTrue(hbeat.AddHeartbeatProperty("test01", "some test value", true)); Assert.IsFalse(hbeat.AddHeartbeatProperty("test01", "some other test value", true)); } }
public void InitializeHeartbeatWithZeroIntervalIsSetToMinimum() { using (var hbeat = new HeartbeatProvider() { HeartbeatInterval = TimeSpan.FromMilliseconds(0) }) { hbeat.Initialize(configuration: null); Assert.AreEqual(hbeat.HeartbeatInterval, HeartbeatProvider.MinimumHeartbeatInterval); } }
public void CannotSetPayloadExtensionWithoutAddingItFirst() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); Assert.IsFalse(hbeat.SetHeartbeatProperty("test01", "some other test value", true)); Assert.IsTrue(hbeat.AddHeartbeatProperty("test01", "some test value", true)); Assert.IsTrue(hbeat.SetHeartbeatProperty("test01", "some other test value", true)); } }
public void EnsureAllTargetFrameworksRepresented() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); var msg = (MetricTelemetry)hbeat.GatherData(); Assert.IsTrue(msg.Properties.ContainsKey("baseSdkTargetFramework")); Assert.IsFalse(msg.Properties["baseSdkTargetFramework"].Equals("undefined", StringComparison.OrdinalIgnoreCase)); } }
public void CannotAddPayloadItemNamedOfDefaultPayloadProperties() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); foreach (string key in HeartbeatDefaultPayload.DefaultFields) { Assert.IsFalse(hbeat.AddHeartbeatProperty(key, "test", true)); } } }
public void HeartbeatMetricIsNonZeroWhenFailureConditionPresent() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); string testerKey = "tester123"; hbeat.AddHeartbeatProperty(testerKey, "test", false); var msg = (MetricTelemetry)hbeat.GatherData(); Assert.IsTrue(msg.Sum >= 1.0); } }
public void SetHeartbeatWithSmallerThanMinimumIntervalIsSetToMinimum() { var tooSmallInterval = TimeSpan.FromMilliseconds(HeartbeatProvider.MinimumHeartbeatInterval.TotalMilliseconds / 2); using (var hbeat = new HeartbeatProvider() { HeartbeatInterval = tooSmallInterval }) { hbeat.Initialize(configuration: null); Assert.AreEqual(hbeat.HeartbeatInterval, HeartbeatProvider.MinimumHeartbeatInterval); } }
public void CannotSetValueOfDefaultPayloadProperties() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); BaseDefaultHeartbeatPropertyProvider defFields = new BaseDefaultHeartbeatPropertyProvider(); foreach (string key in defFields.DefaultFields) { Assert.IsFalse(hbeat.SetHeartbeatProperty(key, "test", true)); } } }
public void HeartbeatPayloadContainsUserSpecifiedData() { using (var hbeat = new HeartbeatProvider()) { string testerKey = "tester123"; Assert.IsTrue(hbeat.AddHeartbeatProperty(testerKey, "test", true)); hbeat.Initialize(configuration: null); MetricTelemetry payload = (MetricTelemetry)hbeat.GatherData(); Assert.IsTrue(payload.Properties.Any( a => a.Key.Equals(testerKey, StringComparison.OrdinalIgnoreCase)), "Provided custom payload provider to heartbeat but never received any messages with its content"); } }
public void HandleUnknownDefaultProperty() { var defProps = new BaseDefaultHeartbeatPropertyProvider(); string testKey = "TestProp"; defProps.DefaultFields.Add(testKey); using (var hbeat = new HeartbeatProvider()) { var waitForProps = defProps.SetDefaultPayload(new string[] { }, hbeat).ConfigureAwait(false); Assert.IsTrue(waitForProps.GetAwaiter().GetResult()); var heartbeat = (MetricTelemetry)hbeat.GatherData(); Assert.IsTrue(heartbeat.Properties.ContainsKey(testKey)); Assert.IsFalse(string.IsNullOrEmpty(heartbeat.Properties[testKey])); } }
public void HeartbeatMetricCountAccountsForAllFailures() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); var msg = (MetricTelemetry)hbeat.GatherData(); Assert.IsTrue(msg.Sum == 0.0); hbeat.AddHeartbeatProperty("tester01", "test failure 1", false); hbeat.AddHeartbeatProperty("tester02", "test failure 2", false); msg = (MetricTelemetry)hbeat.GatherData(); Assert.IsTrue(msg.Sum == 2.0); } }
public void CanExtendHeartbeatPayload() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: new TelemetryConfiguration()); try { Assert.IsTrue(hbeat.AddHeartbeatProperty("test01", "this is a value", true)); } catch (Exception e) { Assert.Fail(string.Format(CultureInfo.CurrentCulture, "Registration of a heartbeat payload provider throws exception '{0}", e.ToInvariantString())); } } }
public void CanSetHealthHeartbeatPayloadValueWithoutHealthyFlag() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); string key = "setValueTest"; Assert.IsTrue(hbeat.AddHeartbeatProperty(key, "value01", true)); Assert.IsTrue(hbeat.SetHeartbeatProperty(key, "value02")); var msg = (MetricTelemetry)hbeat.GatherData(); Assert.IsNotNull(msg); Assert.IsTrue(msg.Properties.ContainsKey(key)); Assert.IsTrue(msg.Properties[key].Equals("value02", StringComparison.Ordinal)); } }
public void CanSetHealthHeartbeatPayloadHealthIndicatorWithoutSettingValue() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); string key = "healthSettingTest"; Assert.IsTrue(hbeat.AddHeartbeatProperty(key, "value01", true)); Assert.IsTrue(hbeat.SetHeartbeatProperty(key, null, false)); var msg = (MetricTelemetry)hbeat.GatherData(); Assert.IsNotNull(msg); Assert.IsTrue(msg.Properties.ContainsKey(key)); Assert.IsTrue(msg.Properties[key].Equals("value01", StringComparison.Ordinal)); Assert.IsTrue(msg.Sum == 1.0); // one false message in payload only } }
public void SentHeartbeatContainsExpectedDefaultFields() { using (var hbeat = new HeartbeatProvider()) { hbeat.Initialize(configuration: null); var msg = (MetricTelemetry)hbeat.GatherData(); Assert.IsNotNull(msg); foreach (string field in HeartbeatDefaultPayload.DefaultFields) { try { var fieldPayload = msg.Properties.Single(a => string.Compare(a.Key, field) == 0); Assert.IsNotNull(fieldPayload); Assert.IsFalse(string.IsNullOrEmpty(fieldPayload.Value)); } catch (Exception) { Assert.Fail(string.Format(CultureInfo.CurrentCulture, "The default field '{0}' is not present exactly once in a sent message.", field)); } } } }