@@ -127,5 +127,88 @@ class DisabledTelemetryLogger < TelemetryLogger; end
127127 } )
128128 end
129129 end
130+
131+ describe 'user-agent tracking' do
132+ context 'when user-agent is set' do
133+ before do
134+ ::VCAP ::Request . user_agent = 'cf/8.7.0 (go1.21.4; amd64 linux)'
135+ end
136+
137+ after do
138+ ::VCAP ::Request . user_agent = nil
139+ end
140+
141+ it 'includes user-agent in v3 telemetry events' do
142+ TelemetryLogger . v3_emit (
143+ 'some-event' ,
144+ { 'key' => 'value' }
145+ )
146+
147+ expect ( Oj . load ( file . read ) ) . to match ( {
148+ 'telemetry-source' => 'cloud_controller_ng' ,
149+ 'telemetry-time' => rfc3339 ,
150+ 'some-event' => {
151+ 'key' => OpenSSL ::Digest . hexdigest ( 'SHA256' , 'value' ) ,
152+ 'api-version' => 'v3' ,
153+ 'user-agent' => 'cf/8.7.0 (go1.21.4; amd64 linux)'
154+ }
155+ } )
156+ end
157+
158+ it 'includes user-agent in v2 telemetry events' do
159+ TelemetryLogger . v2_emit (
160+ 'some-event' ,
161+ { 'key' => 'value' }
162+ )
163+
164+ expect ( Oj . load ( file . read ) ) . to match ( {
165+ 'telemetry-source' => 'cloud_controller_ng' ,
166+ 'telemetry-time' => rfc3339 ,
167+ 'some-event' => {
168+ 'key' => OpenSSL ::Digest . hexdigest ( 'SHA256' , 'value' ) ,
169+ 'api-version' => 'v2' ,
170+ 'user-agent' => 'cf/8.7.0 (go1.21.4; amd64 linux)'
171+ }
172+ } )
173+ end
174+
175+ it 'includes user-agent in internal telemetry events' do
176+ TelemetryLogger . internal_emit (
177+ 'some-event' ,
178+ { 'key' => 'value' }
179+ )
180+
181+ expect ( Oj . load ( file . read ) ) . to match ( {
182+ 'telemetry-source' => 'cloud_controller_ng' ,
183+ 'telemetry-time' => rfc3339 ,
184+ 'some-event' => {
185+ 'key' => OpenSSL ::Digest . hexdigest ( 'SHA256' , 'value' ) ,
186+ 'api-version' => 'internal' ,
187+ 'user-agent' => 'cf/8.7.0 (go1.21.4; amd64 linux)'
188+ }
189+ } )
190+ end
191+
192+ it 'includes user-agent with other raw entries' do
193+ TelemetryLogger . v3_emit (
194+ 'some-event' ,
195+ { 'anonymize_key' => 'anonymize_value' } ,
196+ { 'safe_key' => 'safe-value' , 'memory-in-mb' => '2048' }
197+ )
198+
199+ expect ( Oj . load ( file . read ) ) . to match ( {
200+ 'telemetry-source' => 'cloud_controller_ng' ,
201+ 'telemetry-time' => rfc3339 ,
202+ 'some-event' => {
203+ 'anonymize_key' => OpenSSL ::Digest . hexdigest ( 'SHA256' , 'anonymize_value' ) ,
204+ 'safe_key' => 'safe-value' ,
205+ 'memory-in-mb' => 2048 ,
206+ 'api-version' => 'v3' ,
207+ 'user-agent' => 'cf/8.7.0 (go1.21.4; amd64 linux)'
208+ }
209+ } )
210+ end
211+ end
212+ end
130213 end
131214end
0 commit comments