in src/LibraryTest/Library/TelemetryGeneratorTests.cs [656:727]
public void TelemetryGeneratorTests_TcpExternalDependencyIsHandledCorrectly()
{
//!!!
Assert.Inconclusive("TODO: TCP support");
// ARRANGE
var telemetryGenerator = new TelemetryGenerator(new[]{"default"}, new string[]{});
// incoming request, reported by outbound proxy of the gateway
var now = DateTimeOffset.UtcNow;
var instance1 = Common.GetStandardInstanceMsg();
instance1.SpanName = " ://";
instance1.StartTime = new TimeStamp(){ Value = Timestamp.FromDateTimeOffset(now)};
instance1.EndTime = new TimeStamp() { Value = Timestamp.FromDateTimeOffset(now) };
instance1.Name = "i1.instance.istio-system";
instance1.SpanTags["context.reporter.kind"].StringValue = "outbound";
instance1.SpanTags["context.reporter.uid"].StringValue = "kubernetes://source-1.default";
instance1.SpanTags["context.protocol"].StringValue = "TCP";
instance1.SpanTags["connection.event"].StringValue = "OPEN";
instance1.SpanTags["source.name"].StringValue = "source-1";
instance1.SpanTags["source.ip"].IpAddressValue = new IPAddress(){Value = ByteString.FromBase64("CvQSCA==")};
instance1.SpanTags["source.labels.istio.isingressgateway"].BoolValue = false;
instance1.SpanTags["source.role.instance"].StringValue = "kubernetes://source-1.default";
instance1.SpanTags["source.workload.namespace"].StringValue = "default";
instance1.SpanTags["source.labels.appinsights.monitoring.enabled"].StringValue = "";
instance1.SpanTags["source.role.name"].StringValue = "source.default";
instance1.SpanTags["destination.labels.appinsights.monitoring.enabled"].StringValue = "";
instance1.SpanTags["destination.role.instance"].StringValue = "unknown";
instance1.SpanTags["destination.role.name"].StringValue = "unknown";
instance1.SpanTags["destination.workload.namespace"].StringValue = "";
instance1.SpanTags["destination.name"].StringValue = "";
instance1.SpanTags["destination.ip"].IpAddressValue = new IPAddress() { Value = ByteString.FromBase64("DVuGLQ==") };
instance1.SpanTags["destination.port"].Int64Value = 6379;
instance1.SpanTags["host"].StringValue = "destination.redis.cache.windows.net";
instance1.SpanTags["request.headers.request.context"].StringValue = "";
instance1.SpanTags["response.size"].Int64Value = 0;
instance1.SpanTags["http.useragent"].StringValue = "";
instance1.SpanTags["request.headers.synthetictest.location"].StringValue = "";
instance1.SpanTags["request.path"].StringValue = "";
instance1.SpanTags["request.size"].Int64Value = 0;
instance1.SpanTags["http.method"].StringValue = "";
instance1.SpanTags["http.path"].StringValue = "";
instance1.SpanTags["http.status_code"].Int64Value = 0;
instance1.SpanTags["request.headers.request.id"].StringValue = "";
instance1.SpanTags["request.scheme"].StringValue = "";
instance1.SpanTags["request.headers.synthetictest.runid"].StringValue = "";
instance1.SpanTags["response.headers.request.context"].StringValue = "";
// ACT
ITelemetry[] telemetryItems = telemetryGenerator.Generate(instance1).ToArray();
// ASSERT
Assert.AreEqual(1, telemetryItems.Length);
var tcpDependency = telemetryItems[0] as DependencyTelemetry;
Assert.IsNotNull(tcpDependency);
ValidateTelemetrySource(tcpDependency, "source-1.default", "source", "default", "", "", "", "kubernetes://source-1.default", "outbound");
Assert.AreEqual("source-1.default", tcpDependency.Context.Cloud.RoleInstance);
Assert.AreEqual("source.default", tcpDependency.Context.Cloud.RoleName);
Assert.AreEqual("destination.redis.cache.windows.net", tcpDependency.Target);
Assert.AreEqual("tcp://destination.redis.cache.windows.net:6379", tcpDependency.Data);
}