|
4 | 4 | package useragent |
5 | 5 |
|
6 | 6 | import ( |
| 7 | + "fmt" |
7 | 8 | "sync" |
8 | 9 | "testing" |
9 | 10 |
|
@@ -208,6 +209,67 @@ func TestJmx(t *testing.T) { |
208 | 209 | assert.Equal(t, "outputs:(nop)", ua.outputsStr.Load()) |
209 | 210 | } |
210 | 211 |
|
| 212 | +func TestAddFeatureFlags(t *testing.T) { |
| 213 | + ua := newUserAgent() |
| 214 | + |
| 215 | + ua.AddFeatureFlags("feature1") |
| 216 | + assert.Len(t, ua.feature, 1) |
| 217 | + assert.Equal(t, "feature:(feature1)", ua.featureStr.Load()) |
| 218 | + |
| 219 | + ua.AddFeatureFlags("feature1", "feature2", "feature3") |
| 220 | + assert.Len(t, ua.feature, 3) |
| 221 | + assert.Equal(t, "feature:(feature1 feature2 feature3)", ua.featureStr.Load()) |
| 222 | + |
| 223 | + ua.AddFeatureFlags("") |
| 224 | + assert.Len(t, ua.feature, 3) |
| 225 | + assert.Equal(t, "feature:(feature1 feature2 feature3)", ua.featureStr.Load()) |
| 226 | + assert.Contains(t, ua.Header(true), "feature:(feature1 feature2 feature3)") |
| 227 | +} |
| 228 | + |
| 229 | +func TestAddFeatureFlags_Concurrent(t *testing.T) { |
| 230 | + ua := newUserAgent() |
| 231 | + var wg sync.WaitGroup |
| 232 | + for i := 0; i < 50; i++ { |
| 233 | + wg.Add(1) |
| 234 | + go func(i int) { |
| 235 | + defer wg.Done() |
| 236 | + ua.AddFeatureFlags(fmt.Sprintf("feature%d", i)) |
| 237 | + }(i) |
| 238 | + } |
| 239 | + wg.Wait() |
| 240 | + assert.Len(t, ua.feature, 50) |
| 241 | +} |
| 242 | + |
| 243 | +func TestReset(t *testing.T) { |
| 244 | + ua := newUserAgent() |
| 245 | + |
| 246 | + ua.SetComponents(&otelcol.Config{}, &telegraf.Config{}) |
| 247 | + ua.SetContainerInsightsFlag() |
| 248 | + ua.AddFeatureFlags("test") |
| 249 | + |
| 250 | + assert.Len(t, ua.inputs, 1) |
| 251 | + assert.Len(t, ua.processors, 0) |
| 252 | + assert.Len(t, ua.outputs, 1) |
| 253 | + assert.Len(t, ua.feature, 1) |
| 254 | + |
| 255 | + assert.Equal(t, "inputs:(run_as_user)", ua.inputsStr.Load()) |
| 256 | + assert.Equal(t, "", ua.processorsStr.Load()) |
| 257 | + assert.Equal(t, "outputs:(container_insights)", ua.outputsStr.Load()) |
| 258 | + assert.Equal(t, "feature:(test)", ua.featureStr.Load()) |
| 259 | + |
| 260 | + ua.Reset() |
| 261 | + |
| 262 | + assert.Len(t, ua.inputs, 0) |
| 263 | + assert.Len(t, ua.processors, 0) |
| 264 | + assert.Len(t, ua.outputs, 0) |
| 265 | + assert.Len(t, ua.feature, 0) |
| 266 | + |
| 267 | + assert.Equal(t, "", ua.inputsStr.Load()) |
| 268 | + assert.Equal(t, "", ua.processorsStr.Load()) |
| 269 | + assert.Equal(t, "", ua.outputsStr.Load()) |
| 270 | + assert.Equal(t, "", ua.featureStr.Load()) |
| 271 | +} |
| 272 | + |
211 | 273 | func TestSingleton(t *testing.T) { |
212 | 274 | assert.Equal(t, Get().(*userAgent).id, Get().(*userAgent).id) |
213 | 275 | } |
|
0 commit comments