Skip to content

Commit

Permalink
only opening application signal ports if app signal is available
Browse files Browse the repository at this point in the history
  • Loading branch information
Paramadon committed Sep 11, 2024
1 parent af44378 commit d65ab66
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 77 deletions.
27 changes: 21 additions & 6 deletions internal/manifests/collector/ports.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ package collector

import (
"errors"
"fmt"
"regexp"
"sort"
"strconv"
Expand Down Expand Up @@ -79,7 +80,6 @@ func getContainerPorts(logger logr.Logger, cfg string, specPorts []corev1.Servic
config, err := adapters.ConfigStructFromJSONString(cfg)
if err != nil {
logger.Error(err, "error parsing cw agent config")
servicePorts = PortMapToServicePortList(AppSignalsPortToServicePortMap)
} else {
servicePorts = getServicePortsFromCWAgentConfig(logger, config)
}
Expand Down Expand Up @@ -115,13 +115,30 @@ func getContainerPorts(logger logr.Logger, cfg string, specPorts []corev1.Servic
}

func getServicePortsFromCWAgentConfig(logger logr.Logger, config *adapters.CwaConfig) []corev1.ServicePort {
servicePortsMap := getAppSignalsServicePortsMap()
servicePortsMap := make(map[int32][]corev1.ServicePort)

fmt.Println("Inside get service ports")
if isAppSignalEnabled(config) {
fmt.Println("App Signals is enabled???")
addAppSignalServicePorts(servicePortsMap)
}

getMetricsReceiversServicePorts(logger, config, servicePortsMap)
getLogsReceiversServicePorts(logger, config, servicePortsMap)
getTracesReceiversServicePorts(logger, config, servicePortsMap)

return PortMapToServicePortList(servicePortsMap)
}

func isAppSignalEnabled(config *adapters.CwaConfig) bool {
if config.GetApplicationSignalsConfig() != nil {
fmt.Println("Below is the application signals config-------")
fmt.Println(config.GetApplicationSignalsConfig())
return true
}
return false
}

func getMetricsReceiversServicePorts(logger logr.Logger, config *adapters.CwaConfig, servicePortsMap map[int32][]corev1.ServicePort) {
if config.Metrics == nil || config.Metrics.MetricsCollected == nil {
return
Expand Down Expand Up @@ -213,12 +230,10 @@ func getTracesReceiversServicePorts(logger logr.Logger, config *adapters.CwaConf
return tracesPorts
}

func getAppSignalsServicePortsMap() map[int32][]corev1.ServicePort {
servicePortMap := make(map[int32][]corev1.ServicePort)
func addAppSignalServicePorts(servicePortsMap map[int32][]corev1.ServicePort) {
for k, v := range AppSignalsPortToServicePortMap {
servicePortMap[k] = v
servicePortsMap[k] = v
}
return servicePortMap
}

func portFromEndpoint(endpoint string) (int32, error) {
Expand Down
112 changes: 42 additions & 70 deletions internal/manifests/collector/ports_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
package collector

import (
"fmt"
"os"
"strings"
"testing"
Expand Down Expand Up @@ -31,13 +32,7 @@ func TestStatsDGetContainerPorts(t *testing.T) {
func TestDefaultStatsDGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/statsDDefaultAgentConfig.json")
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 4, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
assert.Equal(t, 1, len(containerPorts))
assert.Equal(t, int32(8125), containerPorts[StatsD].ContainerPort)
assert.Equal(t, StatsD, containerPorts[StatsD].Name)
assert.Equal(t, corev1.ProtocolUDP, containerPorts[StatsD].Protocol)
Expand All @@ -46,42 +41,48 @@ func TestDefaultStatsDGetContainerPorts(t *testing.T) {
func TestCollectDGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/collectDAgentConfig.json")
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 4, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
assert.Equal(t, 1, len(containerPorts))
assert.Equal(t, int32(25936), containerPorts[CWA+CollectD].ContainerPort)
assert.Equal(t, corev1.ProtocolUDP, containerPorts[CWA+CollectD].Protocol)
}

func TestDefaultCollectDGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/collectDDefaultAgentConfig.json")
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 4, len(containerPorts))
assert.Equal(t, 1, len(containerPorts))
assert.Equal(t, int32(25826), containerPorts[CollectD].ContainerPort)
assert.Equal(t, CollectD, containerPorts[CollectD].Name)
assert.Equal(t, corev1.ProtocolUDP, containerPorts[CollectD].Protocol)
}

func TestApplicationSignals(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/application_signals.json")
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 3, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
assert.Equal(t, int32(25826), containerPorts[CollectD].ContainerPort)
assert.Equal(t, CollectD, containerPorts[CollectD].Name)
assert.Equal(t, corev1.ProtocolUDP, containerPorts[CollectD].Protocol)
}

func TestEMFGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/emfAgentConfig.json")
func TestAppSignals(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/app_signals.json")
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 5, len(containerPorts))
assert.Equal(t, 3, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
}

func TestEMFGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/emfAgentConfig.json")
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 2, len(containerPorts))
assert.Equal(t, int32(25888), containerPorts[EMFTcp].ContainerPort)
assert.Equal(t, EMFTcp, containerPorts[EMFTcp].Name)
assert.Equal(t, int32(25888), containerPorts[EMFUdp].ContainerPort)
Expand All @@ -92,13 +93,10 @@ func TestEMFGetContainerPorts(t *testing.T) {
func TestXrayAndOTLPGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/xrayAndOTLPAgentConfig.json")
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 5, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
assert.Equal(t, 3, len(containerPorts))
fmt.Println(containerPorts)
assert.Equal(t, int32(2000), containerPorts[CWA+XrayTraces].ContainerPort)
assert.Equal(t, CWA+XrayTraces, containerPorts[CWA+XrayTraces].Name)
assert.Equal(t, int32(4327), containerPorts[CWA+OtlpGrpc].ContainerPort)
assert.Equal(t, CWA+OtlpGrpc, containerPorts[CWA+OtlpGrpc].Name)
assert.Equal(t, corev1.ProtocolTCP, containerPorts[CWA+OtlpGrpc].Protocol)
Expand All @@ -110,13 +108,10 @@ func TestXrayAndOTLPGetContainerPorts(t *testing.T) {
func TestDefaultXRayAndOTLPGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/xrayAndOTLPDefaultAgentConfig.json")
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 5, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
assert.Equal(t, 3, len(containerPorts))
fmt.Println(containerPorts)
assert.Equal(t, int32(2000), containerPorts[XrayTraces].ContainerPort)
assert.Equal(t, XrayTraces, containerPorts[XrayTraces].Name)
assert.Equal(t, int32(4317), containerPorts[OtlpGrpc].ContainerPort)
assert.Equal(t, OtlpGrpc, containerPorts[OtlpGrpc].Name)
assert.Equal(t, corev1.ProtocolTCP, containerPorts[OtlpGrpc].Protocol)
Expand All @@ -128,13 +123,7 @@ func TestDefaultXRayAndOTLPGetContainerPorts(t *testing.T) {
func TestXRayGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/xrayAgentConfig.json")
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 5, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
assert.Equal(t, 2, len(containerPorts))
assert.Equal(t, int32(2800), containerPorts[CWA+XrayTraces].ContainerPort)
assert.Equal(t, CWA+XrayTraces, containerPorts[CWA+XrayTraces].Name)
assert.Equal(t, corev1.ProtocolUDP, containerPorts[CWA+XrayTraces].Protocol)
Expand All @@ -147,13 +136,11 @@ func TestXRayWithBindAddressDefaultGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/xrayAgentConfig.json")
strings.Replace(cfg, "2800", "2000", 1)
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 5, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
fmt.Println(containerPorts)

assert.Equal(t, 2, len(containerPorts))
assert.Equal(t, int32(2800), containerPorts[CWA+XrayTraces].ContainerPort)
assert.Equal(t, CWA+XrayTraces, containerPorts[CWA+XrayTraces].Name)
assert.Equal(t, int32(2900), containerPorts[CWA+XrayProxy].ContainerPort)
assert.Equal(t, CWA+XrayProxy, containerPorts[CWA+XrayProxy].Name)
assert.Equal(t, corev1.ProtocolTCP, containerPorts[CWA+XrayProxy].Protocol)
Expand All @@ -163,13 +150,7 @@ func TestXRayWithTCPProxyBindAddressDefaultGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/xrayAgentConfig.json")
strings.Replace(cfg, "2900", "2000", 1)
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 5, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
assert.Equal(t, 2, len(containerPorts))
assert.Equal(t, int32(2800), containerPorts[CWA+XrayTraces].ContainerPort)
assert.Equal(t, CWA+XrayTraces, containerPorts[CWA+XrayTraces].Name)
assert.Equal(t, corev1.ProtocolUDP, containerPorts[CWA+XrayTraces].Protocol)
Expand All @@ -178,13 +159,7 @@ func TestXRayWithTCPProxyBindAddressDefaultGetContainerPorts(t *testing.T) {
func TestNilMetricsGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/nilMetrics.json")
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 3, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
assert.Equal(t, 0, len(containerPorts))
}

func TestMultipleReceiversGetContainerPorts(t *testing.T) {
Expand Down Expand Up @@ -250,13 +225,10 @@ func TestInvalidConfigGetContainerPorts(t *testing.T) {
cfg := getJSONStringFromFile("./test-resources/nilMetrics.json")
cfg = cfg + ","
containerPorts := getContainerPorts(logger, cfg, []corev1.ServicePort{})
assert.Equal(t, 3, len(containerPorts))
assert.Equal(t, int32(4315), containerPorts[AppSignalsGrpc].ContainerPort)
assert.Equal(t, AppSignalsGrpc, containerPorts[AppSignalsGrpc].Name)
assert.Equal(t, int32(4316), containerPorts[AppSignalsHttp].ContainerPort)
assert.Equal(t, AppSignalsHttp, containerPorts[AppSignalsHttp].Name)
assert.Equal(t, int32(2000), containerPorts[AppSignalsProxy].ContainerPort)
assert.Equal(t, AppSignalsProxy, containerPorts[AppSignalsProxy].Name)
fmt.Println(containerPorts)

assert.Equal(t, 0, len(containerPorts))

}

func getJSONStringFromFile(path string) string {
Expand Down
7 changes: 7 additions & 0 deletions internal/manifests/collector/test-resources/app_signals.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"logs": {
"metrics_collected": {
"app_signals": {}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"logs": {
"metrics_collected": {
"application_signals": {}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
},
"logs": {
"metrics_collected": {
"emf": {}
"emf": {},
"application_signals": {}
}
},
"traces": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,10 @@
"service_address": ":8135"
}
}
},
"logs": {
"metrics_collected": {
"application_signals": {}
}
}
}

0 comments on commit d65ab66

Please sign in to comment.