Skip to content

Commit f65680f

Browse files
committed
fix: adding conf to metrics sender
1 parent 92f037b commit f65680f

File tree

4 files changed

+28
-20
lines changed

4 files changed

+28
-20
lines changed

src/plugins/common.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func LoadPlugins(commander client.Commander, binary core.NginxBinary, env core.E
3939
fmt.Println(fmt.Sprintf("metrics enabled : %t", loadedConfig.IsExtensionEnabled(agent_config.FeatureMetrics)))
4040
fmt.Println(fmt.Sprintf("metrics-sender enabled : %t", loadedConfig.IsExtensionEnabled(agent_config.FeatureMetricsSender)))
4141
corePlugins = append(corePlugins,
42-
NewMetricsSender(reporter),
42+
NewMetricsSender(reporter, loadedConfig),
4343
)
4444
}
4545

src/plugins/features.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func (f *Features) enableMetricsFeature(_ string) []core.Plugin {
149149

150150
metrics := NewMetrics(f.conf, f.env, f.binary, f.processes)
151151
metricsThrottle := NewMetricsThrottle(f.conf, f.env)
152-
metricsSender := NewMetricsSender(f.commander)
152+
metricsSender := NewMetricsSender(f.commander, conf)
153153

154154
return []core.Plugin{metrics, metricsThrottle, metricsSender}
155155
} else {
@@ -202,7 +202,7 @@ func (f *Features) enableMetricsSenderFeature(_ string) []core.Plugin {
202202
}
203203
f.conf = conf
204204

205-
metricsSender := NewMetricsSender(f.commander)
205+
metricsSender := NewMetricsSender(f.commander, conf)
206206

207207
return []core.Plugin{metricsSender}
208208
} else {

src/plugins/metrics_sender.go

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/nginx/agent/sdk/v2/proto"
1616
models "github.com/nginx/agent/sdk/v2/proto/events"
1717
"github.com/nginx/agent/v2/src/core"
18+
"github.com/nginx/agent/v2/src/core/config"
1819
"strings"
1920
"sync"
2021

@@ -29,13 +30,15 @@ type MetricsSender struct {
2930
started *atomic.Bool
3031
readyToSend *atomic.Bool
3132
readyToSendMu sync.RWMutex
33+
conf *config.Config
3234
}
3335

34-
func NewMetricsSender(reporter client.MetricReporter) *MetricsSender {
36+
func NewMetricsSender(reporter client.MetricReporter, config *config.Config) *MetricsSender {
3537
return &MetricsSender{
3638
reporter: reporter,
3739
started: atomic.NewBool(false),
3840
readyToSend: atomic.NewBool(false),
41+
conf: config,
3942
}
4043
}
4144

@@ -62,13 +65,17 @@ func (r *MetricsSender) Info() *core.Info {
6265
}
6366

6467
func (r *MetricsSender) Process(msg *core.Message) {
65-
//if msg.Exact(core.AgentConnected) {
66-
// log.Debugf("MetricsSender AgentConnected Before: %v", r.readyToSend)
67-
// r.readyToSend.Store(true)
68-
// log.Debugf("MetricsSender AgentConnected After %v", r.readyToSend)
69-
// return
70-
//}
71-
68+
if msg.Exact(core.AgentConnected) {
69+
if r.conf.Features != nil && r.isFeatureEnabled(r.conf.Features) {
70+
r.readyToSendMu.Lock()
71+
r.readyToSend.Store(true)
72+
r.readyToSendMu.Unlock()
73+
} else {
74+
r.readyToSendMu.Lock()
75+
r.readyToSend.Store(false)
76+
r.readyToSendMu.Unlock()
77+
}
78+
}
7279
if msg.Exact(core.CommMetrics) {
7380
payloads, ok := msg.Data().([]core.Payload)
7481
if !ok {
@@ -107,9 +114,9 @@ func (r *MetricsSender) Process(msg *core.Message) {
107114
}
108115
}
109116
} else if msg.Exact(core.AgentConfigChanged) {
110-
switch config := msg.Data().(type) {
117+
switch agentConfig := msg.Data().(type) {
111118
case *proto.AgentConfig:
112-
r.metricSenderBackoff(config)
119+
r.metricSenderBackoff(agentConfig)
113120
default:
114121
log.Warnf("metrics sender expected %T type, but got: %T", &proto.AgentConfig{}, msg.Data())
115122
}
@@ -119,7 +126,7 @@ func (r *MetricsSender) Process(msg *core.Message) {
119126
func (r *MetricsSender) metricSenderBackoff(agentConfig *proto.AgentConfig) {
120127
log.Debugf("update metric reporter client configuration to %+v", agentConfig)
121128
if agentConfig.Details.Features != nil {
122-
if r.isFeatureEnabled(agentConfig) {
129+
if r.isFeatureEnabled(agentConfig.Details.Features) {
123130
r.readyToSendMu.Lock()
124131
r.readyToSend.Store(true)
125132
r.readyToSendMu.Unlock()
@@ -142,10 +149,10 @@ func (r *MetricsSender) Subscriptions() []string {
142149
return []string{core.CommMetrics, core.AgentConnected, core.AgentConfigChanged}
143150
}
144151

145-
func (r *MetricsSender) isFeatureEnabled(agentConfig *proto.AgentConfig) bool {
152+
func (r *MetricsSender) isFeatureEnabled(features []string) bool {
146153
var isFeatureEnabled bool
147-
if agentConfig.Details.Features != nil {
148-
for _, feature := range agentConfig.Details.Features {
154+
if features != nil {
155+
for _, feature := range features {
149156
if feature == agent_config.FeatureMetricsSender {
150157
isFeatureEnabled = true
151158
break

src/plugins/metrics_sender_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ package plugins
1010
import (
1111
"context"
1212
"errors"
13+
"github.com/nginx/agent/v2/src/core/config"
1314
"reflect"
1415
"testing"
1516
"time"
@@ -43,7 +44,7 @@ func TestMetricsSenderSendMetrics(t *testing.T) {
4344
ctx := context.TODO()
4445
mockMetricsReportClient := tutils.NewMockMetricsReportClient()
4546
mockMetricsReportClient.Mock.On("Send", ctx, mock.Anything).Return(test.err)
46-
pluginUnderTest := NewMetricsSender(mockMetricsReportClient)
47+
pluginUnderTest := NewMetricsSender(mockMetricsReportClient, &config.Config{ClientID: "12345", Features: []string{"metrics-sender"}})
4748

4849
assert.False(t, pluginUnderTest.started.Load())
4950
assert.False(t, pluginUnderTest.readyToSend.Load())
@@ -110,7 +111,7 @@ func TestMetricsSenderBackoff(t *testing.T) {
110111
t.Run(test.name, func(_ *testing.T) {
111112
ctx := context.TODO()
112113
mockMetricsReportClient := tutils.NewMockMetricsReportClient()
113-
pluginUnderTest := NewMetricsSender(mockMetricsReportClient)
114+
pluginUnderTest := NewMetricsSender(mockMetricsReportClient, &config.Config{ClientID: "12345", Features: []string{"metrics-sender"}})
114115

115116
pluginUnderTest.Init(core.NewMockMessagePipe(ctx))
116117
pluginUnderTest.Process(core.NewMessage(core.AgentConnected, nil))
@@ -130,6 +131,6 @@ func TestMetricsSenderBackoff(t *testing.T) {
130131
}
131132

132133
func TestMetricsSenderSubscriptions(t *testing.T) {
133-
pluginUnderTest := NewMetricsSender(tutils.NewMockMetricsReportClient())
134+
pluginUnderTest := NewMetricsSender(tutils.NewMockMetricsReportClient(), &config.Config{ClientID: "12345"})
134135
assert.Equal(t, []string{core.CommMetrics, core.AgentConnected, core.AgentConfigChanged}, pluginUnderTest.Subscriptions())
135136
}

0 commit comments

Comments
 (0)