@@ -215,6 +215,82 @@ def test_events_deleted_outside_of_extension_while_extension_is_running(self):
215215 self .runtime .telemetry_writer .write_event ("testing telemetry write to file" , Constants .TelemetryEventLevel .Error , "Test Task" )
216216 os .listdir = backup_os_listdir
217217
218+ def test_write_event_with_buffer_true_and_then_flush (self ):
219+ self .runtime .telemetry_writer .write_event_with_buffer ("Message 1" , Constants .TelemetryEventLevel .Verbose ,
220+ Constants .BufferMessage .TRUE )
221+ self .runtime .telemetry_writer .write_event_with_buffer ("Message 2" , Constants .TelemetryEventLevel .Verbose ,
222+ Constants .BufferMessage .TRUE )
223+ self .runtime .telemetry_writer .write_event_with_buffer ("Message 3" , Constants .TelemetryEventLevel .Verbose ,
224+ Constants .BufferMessage .FLUSH )
225+
226+ latest_event_file = [pos_json for pos_json in os .listdir (self .runtime .telemetry_writer .events_folder_path ) if
227+ re .search ('^[0-9]+.json$' , pos_json )][- 1 ]
228+ with open (os .path .join (self .runtime .telemetry_writer .events_folder_path , latest_event_file ), 'r+' ) as f :
229+ events = json .load (f )
230+ self .assertTrue (events is not None )
231+ text_found = re .search ('TC=([0-9]+)' , events [- 1 ]['Message' ])
232+ f .close ()
233+ self .assertTrue (text_found .string .startswith ("Message 1 | Message 2 | Message 3" ))
234+
235+ def test_write_event_with_buffer_only_flush (self ):
236+ self .runtime .telemetry_writer .write_event_with_buffer ("Message 1" , Constants .TelemetryEventLevel .Verbose ,
237+ Constants .BufferMessage .FLUSH )
238+
239+ latest_event_file = [pos_json for pos_json in os .listdir (self .runtime .telemetry_writer .events_folder_path ) if
240+ re .search ('^[0-9]+.json$' , pos_json )][- 1 ]
241+ with open (os .path .join (self .runtime .telemetry_writer .events_folder_path , latest_event_file ), 'r+' ) as f :
242+ events = json .load (f )
243+ self .assertTrue (events is not None )
244+ text_found = re .search ('TC=([0-9]+)' , events [- 1 ]['Message' ])
245+ f .close ()
246+ self .assertTrue (text_found .string .startswith ("Message 1" ))
247+
248+ def test_write_event_with_buffer_false (self ):
249+ self .runtime .telemetry_writer .write_event_with_buffer ("Message 1" , Constants .TelemetryEventLevel .Verbose ,
250+ Constants .BufferMessage .FALSE )
251+
252+ latest_event_file = [pos_json for pos_json in os .listdir (self .runtime .telemetry_writer .events_folder_path ) if
253+ re .search ('^[0-9]+.json$' , pos_json )][- 1 ]
254+ with open (os .path .join (self .runtime .telemetry_writer .events_folder_path , latest_event_file ), 'r+' ) as f :
255+ events = json .load (f )
256+ self .assertTrue (events is not None )
257+ text_found = re .search ('TC=([0-9]+)' , events [- 1 ]['Message' ])
258+ f .close ()
259+ self .assertTrue (text_found .string .startswith ("Message 1" ))
260+
261+ def test_write_event_with_buffer_true_and_then_flush_but_different_telemetry_event_level (self ):
262+ self .runtime .telemetry_writer .write_event_with_buffer ("Message 1" , Constants .TelemetryEventLevel .Verbose ,
263+ Constants .BufferMessage .TRUE )
264+
265+ self .runtime .telemetry_writer .write_event_with_buffer ("Message 2" , Constants .TelemetryEventLevel .Informational ,
266+ Constants .BufferMessage .FLUSH )
267+
268+ # As the messages are with different TelemetryEventLevel, they will be written separately
269+ # even though flush is used.
270+ latest_event_file = [pos_json for pos_json in os .listdir (self .runtime .telemetry_writer .events_folder_path ) if
271+ re .search ('^[0-9]+.json$' , pos_json )][- 1 ]
272+ with open (os .path .join (self .runtime .telemetry_writer .events_folder_path , latest_event_file ), 'r+' ) as f :
273+ events = json .load (f )
274+ self .assertTrue (events is not None )
275+ text_found = re .search ('TC=([0-9]+)' , events [- 1 ]['Message' ])
276+ f .close ()
277+ self .assertTrue (text_found .string .startswith ("Message 2" ))
278+
279+ def test_write_event_with_buffer_true_and_empty_string_and_then_flush_with_non_empty_string (self ):
280+ self .runtime .telemetry_writer .write_event_with_buffer ("" , Constants .TelemetryEventLevel .Verbose ,
281+ Constants .BufferMessage .TRUE )
282+
283+ self .runtime .telemetry_writer .write_event_with_buffer ("Message 1" , Constants .TelemetryEventLevel .Verbose ,
284+ Constants .BufferMessage .FLUSH )
285+
286+ latest_event_file = [pos_json for pos_json in os .listdir (self .runtime .telemetry_writer .events_folder_path ) if
287+ re .search ('^[0-9]+.json$' , pos_json )][- 1 ]
288+ with open (os .path .join (self .runtime .telemetry_writer .events_folder_path , latest_event_file ), 'r+' ) as f :
289+ events = json .load (f )
290+ self .assertTrue (events is not None )
291+ text_found = re .search ('TC=([0-9]+)' , events [- 1 ]['Message' ])
292+ f .close ()
293+ self .assertTrue (text_found .string .startswith ("Message 1" ))
218294
219295if __name__ == '__main__' :
220296 unittest .main ()
0 commit comments