// // Copyright The OpenTelemetry Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // using System.Collections.Generic; using Xunit; namespace OpenTelemetry.Trace.Test { public class BlankSpanTest { [Fact] public void DoNotCrash() { IDictionary attributes = new Dictionary(); attributes.Add( "MyStringAttributeKey", "MyStringAttributeValue"); IDictionary multipleAttributes = new Dictionary(); multipleAttributes.Add( "MyStringAttributeKey", "MyStringAttributeValue"); multipleAttributes.Add("MyBooleanAttributeKey", true); multipleAttributes.Add("MyLongAttributeKey", 123); multipleAttributes.Add("MyDoubleAttributeKey", 0.005); // Tests only that all the methods are not crashing/throwing errors. BlankSpan.Instance.SetAttribute( "MyStringAttributeKey2", "MyStringAttributeValue2"); foreach (var a in attributes) { BlankSpan.Instance.SetAttribute(a.Key, a.Value); } foreach (var a in multipleAttributes) { BlankSpan.Instance.SetAttribute(a.Key, a.Value); } BlankSpan.Instance.AddEvent("MyEvent"); BlankSpan.Instance.AddEvent(new Event("MyEvent", attributes)); BlankSpan.Instance.AddEvent(new Event("MyEvent", multipleAttributes)); BlankSpan.Instance.AddEvent(new Event("MyEvent")); Assert.False(BlankSpan.Instance.Context.IsValid); Assert.False(BlankSpan.Instance.IsRecording); BlankSpan.Instance.Status = Status.Ok; BlankSpan.Instance.End(); } [Fact] public void BadArguments_DoesNotThrow() { BlankSpan.Instance.Status = default(Status); BlankSpan.Instance.UpdateName(null); BlankSpan.Instance.SetAttribute(null, string.Empty); BlankSpan.Instance.SetAttribute(string.Empty, null); BlankSpan.Instance.SetAttribute(null, "foo"); BlankSpan.Instance.SetAttribute(null, 1L); BlankSpan.Instance.SetAttribute(null, 0.1d); BlankSpan.Instance.SetAttribute(null, true); BlankSpan.Instance.AddEvent((string)null); BlankSpan.Instance.AddEvent((Event)null); } } }