9
9
context2 "context"
10
10
"encoding/json"
11
11
"fmt"
12
+ "github.com/newrelic/infrastructure-agent/internal/agent/cmdchannel/fflag"
12
13
"io/ioutil"
13
14
"net/http"
14
15
"net/http/httptest"
@@ -52,7 +53,7 @@ var NilIDLookup host.IDLookup
52
53
53
54
var matcher = func (interface {}) bool { return true }
54
55
55
- func newTesting (cfg * config.Config ) * Agent {
56
+ func newTesting (cfg * config.Config , ffRetriever feature_flags. Retriever ) * Agent {
56
57
dataDir , err := ioutil .TempDir ("" , "prefix" )
57
58
if err != nil {
58
59
panic (err )
@@ -93,6 +94,7 @@ func newTesting(cfg *config.Config) *Agent {
93
94
cloudDetector ,
94
95
fpHarvester ,
95
96
ctl .NewNotificationHandlerWithCancellation (nil ),
97
+ ffRetriever ,
96
98
)
97
99
if err != nil {
98
100
panic (err )
@@ -113,12 +115,13 @@ func (self *TestAgentData) SortKey() string {
113
115
}
114
116
115
117
func TestIgnoreInventory (t * testing.T ) {
118
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
116
119
a := newTesting (& config.Config {
117
120
IgnoredInventoryPathsMap : map [string ]struct {}{
118
121
"test/plugin/yum" : {},
119
122
},
120
123
MaxInventorySize : 1024 ,
121
- })
124
+ }, ffRetriever )
122
125
defer func () {
123
126
_ = os .RemoveAll (a .store .DataDir )
124
127
}()
@@ -161,7 +164,8 @@ func TestServicePidMap(t *testing.T) {
161
164
}
162
165
163
166
func TestSetAgentKeysDisplayInstance (t * testing.T ) {
164
- a := newTesting (nil )
167
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
168
+ a := newTesting (nil , ffRetriever )
165
169
defer os .RemoveAll (a .store .DataDir )
166
170
167
171
idMap := host.IDLookup {
@@ -176,7 +180,8 @@ func TestSetAgentKeysDisplayInstance(t *testing.T) {
176
180
177
181
// Test that empty strings in the identity map are properly ignored in favor of non-empty ones
178
182
func TestSetAgentKeysInstanceEmptyString (t * testing.T ) {
179
- a := newTesting (nil )
183
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
184
+ a := newTesting (nil , ffRetriever )
180
185
defer os .RemoveAll (a .store .DataDir )
181
186
182
187
keys := host.IDLookup {
@@ -190,7 +195,8 @@ func TestSetAgentKeysInstanceEmptyString(t *testing.T) {
190
195
}
191
196
192
197
func TestSetAgentKeysDisplayNameMatchesHostName (t * testing.T ) {
193
- a := newTesting (nil )
198
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
199
+ a := newTesting (nil , ffRetriever )
194
200
defer os .RemoveAll (a .store .DataDir )
195
201
196
202
keyMap := host.IDLookup {
@@ -203,14 +209,16 @@ func TestSetAgentKeysDisplayNameMatchesHostName(t *testing.T) {
203
209
}
204
210
205
211
func TestSetAgentKeysNoValues (t * testing.T ) {
206
- a := newTesting (nil )
212
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
213
+ a := newTesting (nil , ffRetriever )
207
214
defer os .RemoveAll (a .store .DataDir )
208
215
209
216
assert .Error (t , a .setAgentKey (host.IDLookup {}))
210
217
}
211
218
212
219
func TestUpdateIDLookupTable (t * testing.T ) {
213
- a := newTesting (nil )
220
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
221
+ a := newTesting (nil , ffRetriever )
214
222
defer os .RemoveAll (a .store .DataDir )
215
223
216
224
dataset := agentTypes.PluginInventoryDataset {}
@@ -319,7 +327,8 @@ func TestRemoveOutdatedEntities(t *testing.T) {
319
327
const anotherPlugin = "anotherPlugin"
320
328
321
329
// Given an agent
322
- agent := newTesting (nil )
330
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
331
+ agent := newTesting (nil , ffRetriever )
323
332
defer os .RemoveAll (agent .store .DataDir )
324
333
agent .inventories = map [string ]* inventoryEntity {}
325
334
@@ -377,7 +386,8 @@ func TestRemoveOutdatedEntities(t *testing.T) {
377
386
378
387
func TestReconnectablePlugins (t * testing.T ) {
379
388
// Given an agent
380
- a := newTesting (nil )
389
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
390
+ a := newTesting (nil , ffRetriever )
381
391
defer os .RemoveAll (a .store .DataDir )
382
392
383
393
wg := sync.WaitGroup {}
@@ -487,7 +497,8 @@ func (killingPlugin) IsExternal() bool { return false }
487
497
func (killingPlugin ) GetExternalPluginName () string { return "" }
488
498
489
499
func TestTerminate (t * testing.T ) {
490
- a := newTesting (nil )
500
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
501
+ a := newTesting (nil , ffRetriever )
491
502
defer func () {
492
503
_ = os .RemoveAll (a .store .DataDir )
493
504
}()
@@ -506,7 +517,9 @@ func TestStopByCancelFn_UsedBySignalHandler(t *testing.T) {
506
517
wg := sync.WaitGroup {}
507
518
wg .Add (1 )
508
519
509
- a := newTesting (nil )
520
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
521
+ ffRetriever .ShouldGetFeatureFlag (fflag .FlagFullInventoryDeletion , false , false )
522
+ a := newTesting (nil , ffRetriever )
510
523
511
524
defer func () {
512
525
_ = os .RemoveAll (a .store .DataDir )
@@ -587,7 +600,10 @@ func TestAgent_Run_DontSendInventoryIfFwdOnly(t *testing.T) {
587
600
FirstReapInterval : tt .firstReapInterval ,
588
601
SendInterval : tt .sendInterval ,
589
602
}
590
- a := newTesting (cfg )
603
+
604
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
605
+ ffRetriever .ShouldGetFeatureFlag (fflag .FlagFullInventoryDeletion , false , false )
606
+ a := newTesting (cfg , ffRetriever )
591
607
// Give time to at least send one request
592
608
ctxTimeout , _ := context2 .WithTimeout (a .Context .Ctx , time .Millisecond * 10 )
593
609
a .Context .Ctx = ctxTimeout
@@ -719,7 +735,8 @@ func (self *testAgentNullableData) SortKey() string {
719
735
}
720
736
721
737
func TestStorePluginOutput (t * testing.T ) {
722
- a := newTesting (nil )
738
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
739
+ a := newTesting (nil , ffRetriever )
723
740
defer os .RemoveAll (a .store .DataDir )
724
741
aV := "aValue"
725
742
bV := "bValue"
@@ -769,7 +786,8 @@ func (self mockHostinfoData) SortKey() string {
769
786
}
770
787
771
788
func BenchmarkStorePluginOutput (b * testing.B ) {
772
- a := newTesting (& config.Config {MaxInventorySize : 1000 * 1000 })
789
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
790
+ a := newTesting (& config.Config {MaxInventorySize : 1000 * 1000 }, ffRetriever )
773
791
defer os .RemoveAll (a .store .DataDir )
774
792
775
793
distroName := "Fedora 29 (Cloud Edition)"
@@ -1166,11 +1184,12 @@ func TestRunsWithCloudProvider(t *testing.T) {
1166
1184
t .Run (testCase .name , func (t * testing.T ) {
1167
1185
t .Parallel ()
1168
1186
1187
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
1169
1188
//nolint:exhaustruct
1170
1189
agt := newTesting (& config.Config {
1171
1190
CloudProvider : testCase .cloudProvider ,
1172
1191
CloudMaxRetryCount : testCase .retries ,
1173
- })
1192
+ }, ffRetriever )
1174
1193
1175
1194
err := agt .Run ()
1176
1195
@@ -1224,7 +1243,8 @@ func TestAgent_checkInstanceIDRetry(t *testing.T) {
1224
1243
t .Run (testCase .name , func (t * testing.T ) {
1225
1244
t .Parallel ()
1226
1245
1227
- a := newTesting (nil )
1246
+ ffRetriever := & feature_flags.FeatureFlagRetrieverMock {}
1247
+ a := newTesting (nil , ffRetriever )
1228
1248
a .cloudHarvester = testCase .cloudHarvester
1229
1249
1230
1250
if err := a .checkInstanceIDRetry (testCase .args .maxRetries , testCase .args .backoffTime ); (err != nil ) != testCase .wantErr {
0 commit comments