@@ -2,6 +2,8 @@ package bindings_test
22
33import (
44 "errors"
5+ "log"
6+ "strings"
57
68 "code.cloudfoundry.org/loggregator-agent-release/src/pkg/egress/syslog"
79 "code.cloudfoundry.org/loggregator-agent-release/src/pkg/ingress/bindings"
@@ -10,12 +12,15 @@ import (
1012)
1113
1214var _ = Describe ("Drain Param Config" , func () {
15+ var (
16+ logger = log .New (GinkgoWriter , "" , 0 )
17+ )
1318 It ("sets OmitMetadata to false if the drain doesn't contain 'disable-metadata=true'" , func () {
1419 bs := []syslog.Binding {
1520 {Drain : syslog.Drain {Url : "https://test.org/drain" }},
1621 }
1722 f := newStubFetcher (bs , nil )
18- wf := bindings .NewDrainParamParser (f , true )
23+ wf := bindings .NewDrainParamParser (f , true , logger )
1924
2025 configedBindings , _ := wf .FetchBindings ()
2126 Expect (configedBindings [0 ].OmitMetadata ).To (BeFalse ())
@@ -27,7 +32,7 @@ var _ = Describe("Drain Param Config", func() {
2732 {Drain : syslog.Drain {Url : "https://test.org/drain?omit-metadata=true" }},
2833 }
2934 f := newStubFetcher (bs , nil )
30- wf := bindings .NewDrainParamParser (f , true )
35+ wf := bindings .NewDrainParamParser (f , true , logger )
3136
3237 configedBindings , _ := wf .FetchBindings ()
3338 Expect (configedBindings [0 ].OmitMetadata ).To (BeTrue ())
@@ -39,7 +44,7 @@ var _ = Describe("Drain Param Config", func() {
3944 {Drain : syslog.Drain {Url : "https://test.org/drain" }},
4045 }
4146 f := newStubFetcher (bs , nil )
42- wf := bindings .NewDrainParamParser (f , false )
47+ wf := bindings .NewDrainParamParser (f , false , logger )
4348
4449 configedBindings , _ := wf .FetchBindings ()
4550 Expect (configedBindings [0 ].OmitMetadata ).To (BeTrue ())
@@ -51,7 +56,7 @@ var _ = Describe("Drain Param Config", func() {
5156 {Drain : syslog.Drain {Url : "https://test.org/drain?omit-metadata=false" }},
5257 }
5358 f := newStubFetcher (bs , nil )
54- wf := bindings .NewDrainParamParser (f , false )
59+ wf := bindings .NewDrainParamParser (f , false , logger )
5560
5661 configedBindings , _ := wf .FetchBindings ()
5762 Expect (configedBindings [0 ].OmitMetadata ).To (BeFalse ())
@@ -63,7 +68,7 @@ var _ = Describe("Drain Param Config", func() {
6368 {Drain : syslog.Drain {Url : "https://test.org/drain?ssl-strict-internal=true" }},
6469 }
6570 f := newStubFetcher (bs , nil )
66- wf := bindings .NewDrainParamParser (f , true )
71+ wf := bindings .NewDrainParamParser (f , true , logger )
6772
6873 configedBindings , _ := wf .FetchBindings ()
6974 Expect (configedBindings [0 ].InternalTls ).To (BeTrue ())
@@ -78,7 +83,7 @@ var _ = Describe("Drain Param Config", func() {
7883 {Drain : syslog.Drain {Url : "https://test.org/drain?drain-data=all" }},
7984 }
8085 f := newStubFetcher (bs , nil )
81- wf := bindings .NewDrainParamParser (f , true )
86+ wf := bindings .NewDrainParamParser (f , true , logger )
8287
8388 configedBindings , _ := wf .FetchBindings ()
8489 Expect (configedBindings [0 ].DrainData ).To (Equal (syslog .LOGS ))
@@ -97,7 +102,7 @@ var _ = Describe("Drain Param Config", func() {
97102 {Drain : syslog.Drain {Url : "https://test.org/drain?exclude-log-types=rtr" }},
98103 }
99104 f := newStubFetcher (bs , nil )
100- wf := bindings .NewDrainParamParser (f , true )
105+ wf := bindings .NewDrainParamParser (f , true , logger )
101106
102107 configedBindings , _ := wf .FetchBindings ()
103108 Expect (configedBindings [0 ].LogFilter ).To (Equal (NewLogTypeSet ())) // Empty map defaults to all types
@@ -112,13 +117,42 @@ var _ = Describe("Drain Param Config", func() {
112117 {Drain : syslog.Drain {Url : "https://test.org/drain?include-log-types=app&exclude-log-types=rtr" }},
113118 }
114119 f := newStubFetcher (bs , nil )
115- wf := bindings .NewDrainParamParser (f , true )
120+ wf := bindings .NewDrainParamParser (f , true , logger )
116121
117122 configedBindings , err := wf .FetchBindings ()
118123 Expect (err ).To (HaveOccurred ())
119124 Expect (configedBindings ).To (HaveLen (0 ))
120125 })
121126
127+ It ("logs a warning when an unknown log type is provided" , func () {
128+ var logOutput strings.Builder
129+ testLogger := log .New (& logOutput , "" , log .LstdFlags )
130+ parser := bindings .NewDrainParamParser (newStubFetcher (nil , nil ), false , testLogger )
131+
132+ result := parser .NewLogTypeSet ("app,unknown,rtr" , false )
133+
134+ // Should only contain APP and RTR, not the unknown type
135+ Expect (result ).To (Equal (NewLogTypeSet (syslog .APP , syslog .RTR )))
136+
137+ // Should have logged a warning
138+ Expect (logOutput .String ()).To (ContainSubstring ("ignoring" ))
139+ })
140+
141+ It ("handles unknown log types in exclude mode" , func () {
142+ var logOutput strings.Builder
143+ testLogger := log .New (& logOutput , "" , log .LstdFlags )
144+ parser := bindings .NewDrainParamParser (newStubFetcher (nil , nil ), false , testLogger )
145+
146+ result := parser .NewLogTypeSet ("rtr,unknown" , true )
147+
148+ // Should exclude only RTR (unknown type is ignored)
149+ expectedSet := NewLogTypeSet (syslog .API , syslog .STG , syslog .LGR , syslog .APP , syslog .SSH , syslog .CELL )
150+ Expect (result ).To (Equal (expectedSet ))
151+
152+ // Should have logged a warning
153+ Expect (logOutput .String ()).To (ContainSubstring ("ignoring" ))
154+ })
155+
122156 It ("sets drain data for old parameter appropriately'" , func () {
123157 bs := []syslog.Binding {
124158 {Drain : syslog.Drain {Url : "https://test.org/drain?drain-type=metrics" }},
@@ -128,7 +162,7 @@ var _ = Describe("Drain Param Config", func() {
128162 {Drain : syslog.Drain {Url : "https://test.org/drain?include-metrics-deprecated=true" }},
129163 }
130164 f := newStubFetcher (bs , nil )
131- wf := bindings .NewDrainParamParser (f , true )
165+ wf := bindings .NewDrainParamParser (f , true , logger )
132166
133167 configedBindings , _ := wf .FetchBindings ()
134168 Expect (configedBindings [0 ].DrainData ).To (Equal (syslog .METRICS ))
@@ -145,7 +179,7 @@ var _ = Describe("Drain Param Config", func() {
145179 {Drain : syslog.Drain {Url : "https://test.org/drain?omit-metadata=true" }},
146180 }
147181 f := newStubFetcher (bs , nil )
148- wf := bindings .NewDrainParamParser (f , true )
182+ wf := bindings .NewDrainParamParser (f , true , logger )
149183
150184 configedBindings , err := wf .FetchBindings ()
151185 Expect (err ).ToNot (HaveOccurred ())
@@ -156,7 +190,7 @@ var _ = Describe("Drain Param Config", func() {
156190
157191 It ("Returns a error when fetching fails" , func () {
158192 f := newStubFetcher (nil , errors .New ("Ahhh an error" ))
159- wf := bindings .NewDrainParamParser (f , true )
193+ wf := bindings .NewDrainParamParser (f , true , logger )
160194
161195 _ , err := wf .FetchBindings ()
162196 Expect (err ).To (MatchError ("Ahhh an error" ))
0 commit comments