using OpenTelemetry.Resources; using ZB.MOM.WW.Telemetry; namespace ZB.MOM.WW.Telemetry.Tests; public sealed class ZbResourceTests { [Fact] public void Build_PopulatesAllResourceAttributes() { var options = new ZbTelemetryOptions { ServiceName = "otopcua", ServiceNamespace = "ZB.MOM.WW", ServiceVersion = "1.2.3", SiteId = "site-7", NodeRole = "central", }; var resource = ZbResource.Build(options).Build(); var attributes = resource.Attributes.ToDictionary(a => a.Key, a => a.Value); Assert.Equal("otopcua", attributes["service.name"]); Assert.Equal("ZB.MOM.WW", attributes["service.namespace"]); Assert.Equal("1.2.3", attributes["service.version"]); Assert.Equal("site-7", attributes["site.id"]); Assert.Equal("central", attributes["node.role"]); Assert.Equal(Environment.MachineName, attributes["host.name"]); } [Fact] public void Build_OmitsOptionalAttributes_WhenNull() { var options = new ZbTelemetryOptions { ServiceName = "mxgateway", // ServiceVersion / SiteId / NodeRole left null }; var resource = ZbResource.Build(options).Build(); var keys = resource.Attributes.Select(a => a.Key).ToHashSet(); Assert.Contains("service.name", keys); Assert.Contains("service.namespace", keys); Assert.Contains("host.name", keys); Assert.DoesNotContain("service.version", keys); Assert.DoesNotContain("site.id", keys); Assert.DoesNotContain("node.role", keys); } }