1616import unittest
1717from unittest .mock import patch
1818import mock
19+ import json
1920
2021from google .cloud .logging_v2 .handlers ._monitored_resources import (
2122 _FUNCTION_ENV_VARS ,
@@ -57,26 +58,38 @@ def test_filter_record(self):
5758 filter_obj = self ._make_one ()
5859 logname = "loggername"
5960 message = "hello world,嗨 世界"
60- pathname = "testpath"
61- lineno = 1
62- func = "test-function"
61+ expected_location = {
62+ "line" : 1 ,
63+ "file" : "testpath" ,
64+ "function" : "test-function" ,
65+ }
6366 record = logging .LogRecord (
64- logname , logging .INFO , pathname , lineno , message , None , None , func = func
67+ logname ,
68+ logging .INFO ,
69+ expected_location ["file" ],
70+ expected_location ["line" ],
71+ message ,
72+ None ,
73+ None ,
74+ func = expected_location ["function" ],
6575 )
6676
6777 success = filter_obj .filter (record )
6878 self .assertTrue (success )
6979
70- self .assertEqual (record .line , lineno )
7180 self .assertEqual (record .msg , message )
72- self .assertEqual (record .function , func )
73- self .assertEqual (record .file , pathname )
74- self .assertEqual (record .trace , "" )
75- self .assertEqual (record .http_request , {})
76- self .assertEqual (record .request_method , "" )
77- self .assertEqual (record .request_url , "" )
78- self .assertEqual (record .user_agent , "" )
79- self .assertEqual (record .protocol , "" )
81+ self .assertEqual (record ._msg_str , message )
82+ self .assertEqual (record ._source_location , expected_location )
83+ self .assertEqual (record ._source_location_str , json .dumps (expected_location ))
84+ self .assertIsNone (record ._resource )
85+ self .assertIsNone (record ._trace )
86+ self .assertEqual (record ._trace_str , "" )
87+ self .assertIsNone (record ._span_id )
88+ self .assertEqual (record ._span_id_str , "" )
89+ self .assertIsNone (record ._http_request )
90+ self .assertEqual (record ._http_request_str , "{}" )
91+ self .assertIsNone (record ._labels )
92+ self .assertEqual (record ._labels_str , "{}" )
8093
8194 def test_minimal_record (self ):
8295 """
@@ -91,16 +104,19 @@ def test_minimal_record(self):
91104 success = filter_obj .filter (record )
92105 self .assertTrue (success )
93106
94- self .assertEqual (record .line , 0 )
95- self .assertEqual (record .msg , "" )
96- self .assertEqual (record .function , "" )
97- self .assertEqual (record .file , "" )
98- self .assertEqual (record .trace , "" )
99- self .assertEqual (record .http_request , {})
100- self .assertEqual (record .request_method , "" )
101- self .assertEqual (record .request_url , "" )
102- self .assertEqual (record .user_agent , "" )
103- self .assertEqual (record .protocol , "" )
107+ self .assertIsNone (record .msg )
108+ self .assertEqual (record ._msg_str , "" )
109+ self .assertIsNone (record ._source_location )
110+ self .assertEqual (record ._source_location_str , "{}" )
111+ self .assertIsNone (record ._resource )
112+ self .assertIsNone (record ._trace )
113+ self .assertEqual (record ._trace_str , "" )
114+ self .assertIsNone (record ._span_id )
115+ self .assertEqual (record ._span_id_str , "" )
116+ self .assertIsNone (record ._http_request )
117+ self .assertEqual (record ._http_request_str , "{}" )
118+ self .assertIsNone (record ._labels )
119+ self .assertEqual (record ._labels_str , "{}" )
104120
105121 def test_record_with_request (self ):
106122 """
@@ -115,6 +131,8 @@ def test_record_with_request(self):
115131 expected_path = "http://testserver/123"
116132 expected_agent = "Mozilla/5.0"
117133 expected_trace = "123"
134+ expected_span = "456"
135+ combined_trace = f"{ expected_trace } /{ expected_span } "
118136 expected_request = {
119137 "requestMethod" : "PUT" ,
120138 "requestUrl" : expected_path ,
@@ -129,19 +147,18 @@ def test_record_with_request(self):
129147 data = "body" ,
130148 headers = {
131149 "User-Agent" : expected_agent ,
132- "X_CLOUD_TRACE_CONTEXT" : expected_trace ,
150+ "X_CLOUD_TRACE_CONTEXT" : combined_trace ,
133151 },
134152 )
135153 success = filter_obj .filter (record )
136154 self .assertTrue (success )
137155
138- self .assertEqual (record .trace , expected_trace )
139- for key , val in expected_request .items ():
140- self .assertEqual (record .http_request [key ], val )
141- self .assertEqual (record .request_method , "PUT" )
142- self .assertEqual (record .request_url , expected_path )
143- self .assertEqual (record .user_agent , expected_agent )
144- self .assertEqual (record .protocol , "HTTP/1.1" )
156+ self .assertEqual (record ._trace , expected_trace )
157+ self .assertEqual (record ._trace_str , expected_trace )
158+ self .assertEqual (record ._span_id , expected_span )
159+ self .assertEqual (record ._span_id_str , expected_span )
160+ self .assertEqual (record ._http_request , expected_request )
161+ self .assertEqual (record ._http_request_str , json .dumps (expected_request ))
145162
146163 def test_user_overrides (self ):
147164 """
@@ -163,8 +180,12 @@ def test_user_overrides(self):
163180 headers = {"User-Agent" : "default" , "X_CLOUD_TRACE_CONTEXT" : "default" },
164181 )
165182 # override values
183+ overwritten_resource = "test"
184+ record .resource = overwritten_resource
166185 overwritten_trace = "456"
167186 record .trace = overwritten_trace
187+ overwritten_span = "789"
188+ record .span_id = overwritten_span
168189 overwritten_method = "GET"
169190 overwritten_url = "www.google.com"
170191 overwritten_agent = "custom"
@@ -188,15 +209,19 @@ def test_user_overrides(self):
188209 success = filter_obj .filter (record )
189210 self .assertTrue (success )
190211
191- self .assertEqual (record .trace , overwritten_trace )
192- self .assertEqual (record .http_request , overwritten_request_object )
193- self .assertEqual (record .request_method , overwritten_method )
194- self .assertEqual (record .request_url , overwritten_url )
195- self .assertEqual (record .user_agent , overwritten_agent )
196- self .assertEqual (record .protocol , overwritten_protocol )
197- self .assertEqual (record .line , overwritten_line )
198- self .assertEqual (record .function , overwritten_function )
199- self .assertEqual (record .file , overwritten_file )
212+ self .assertEqual (record ._trace , overwritten_trace )
213+ self .assertEqual (record ._trace_str , overwritten_trace )
214+ self .assertEqual (record ._span_id , overwritten_span )
215+ self .assertEqual (record ._span_id_str , overwritten_span )
216+ self .assertEqual (record ._http_request , overwritten_request_object )
217+ self .assertEqual (
218+ record ._http_request_str , json .dumps (overwritten_request_object )
219+ )
220+ self .assertEqual (record ._source_location , overwritten_source_location )
221+ self .assertEqual (
222+ record ._source_location_str , json .dumps (overwritten_source_location )
223+ )
224+ self .assertEqual (record ._resource , overwritten_resource )
200225
201226
202227class TestCloudLoggingHandler (unittest .TestCase ):
0 commit comments